JDBC模糊查询的4种方式
1:%放在占位符中
parameters.add("%"+familyMemberQueryBean.getFullName()+"%");
sql+=" and t.full_name like ?";
2:使用concat函数
parameters.add(familyMemberQueryBean.getFullName());
sql+=" and t.full_name like concat('%',?,'%')";
3:使用转义字符\,百分号直接写在sql语句中
parameters.add(familyMemberQueryBean.getFullName());
sql+=" and t.full_name like \"%\"?\"%\"";
直接查询的SQL语句如下:SELECT id,full_name,email,phone,remark FROM family_member t WHERE 1 = 1
AND t.full_name LIKE "%"'李'"%" AND t.email LIKE "%"'qq'"%"
4:直接拼接SQL
sql+=" and t.full_name like '%"+familyMemberQueryBean.getFullName()+"%'";
例如:
package org.pine.dao.impl; import org.pine.dao.FamilyMemberDao;
import org.pine.dto.FamilyMember;
import org.pine.util.DbcpUtils;
import org.pine.vo.FamilyMemberQueryBean;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List; /**
* FamilyMemberDao实现类
*
* @Auther: zts
* @Date: 2019/5/28 下午 03:21
* @version: 1.0
*/
public class FamilyMemberDaoImpl implements FamilyMemberDao {
/*
public List<FamilyMember> queryFamilyMembers(FamilyMemberQueryBean familyMemberQueryBean) {
Connection connection =null;
PreparedStatement preparedStatement=null;
ResultSet resultSet=null;
try {
connection = DbcpUtils.getConnection();
String sql ="SELECT id,full_name,email,phone,remark FROM family_member t WHERE 1 = 1 ";
//拼接SQL
List<Object> parameters = new ArrayList<Object>();
if(familyMemberQueryBean.getFullName()!=null&&familyMemberQueryBean.getFullName().length()>0){
parameters.add("%"+familyMemberQueryBean.getFullName()+"%");
sql+=" and t.full_name like ?";
}
if(familyMemberQueryBean.getEmail()!=null&&familyMemberQueryBean.getEmail().length()>0){
parameters.add("%"+familyMemberQueryBean.getEmail()+"%");
sql+=" and t.email like ?";
}
if(familyMemberQueryBean.getPhone()!=null&&familyMemberQueryBean.getPhone().length()>0){
parameters.add("%"+familyMemberQueryBean.getPhone()+"%");
sql+=" and t.phone like ?";
}
if(familyMemberQueryBean.getRemark()!=null&&familyMemberQueryBean.getRemark().length()>0){
parameters.add("%"+familyMemberQueryBean.getRemark()+"%");
sql+=" and t.remark like ?";
}
sql+="limit ?,?";
parameters.add(familyMemberQueryBean.getStart());
parameters.add(familyMemberQueryBean.getLimit());
DbcpUtils.printlnSQL(sql);
DbcpUtils.printlnParameters(parameters);
preparedStatement = connection.prepareStatement(sql);
//设置参数
for(int i=0;i<parameters.size();i++){
preparedStatement.setObject(i+1,parameters.get(i));
}
resultSet = preparedStatement.executeQuery();
List<FamilyMember> familyMembers = new ArrayList<FamilyMember>();
while (resultSet.next()){
FamilyMember familyMember = new FamilyMember();
int id = resultSet.getInt("id");
String fullName = resultSet.getString("full_name");
String email = resultSet.getString("email");
String phone = resultSet.getString("phone");
String remark = resultSet.getString("remark");
familyMember.setId(id);
familyMember.setFullName(fullName);
familyMember.setEmail(email);
familyMember.setPhone(phone);
familyMember.setRemark(remark);
familyMembers.add(familyMember);
}
return familyMembers;
}catch (Exception e){
throw new RuntimeException(e);
}finally {
DbcpUtils.closeConnection(connection,preparedStatement,resultSet);
}
}*/ /*
@Override
public int queryFamilyMemberCount(FamilyMemberQueryBean familyMemberQueryBean) {
Connection connection =null;
PreparedStatement preparedStatement=null;
ResultSet resultSet=null;
try {
connection = DbcpUtils.getConnection();
String sql ="SELECT count(*) FROM family_member t WHERE 1 = 1 ";
//拼接SQL
List<String> parameters = new ArrayList<String>();
if(familyMemberQueryBean.getFullName()!=null&&familyMemberQueryBean.getFullName().length()>0){
parameters.add(familyMemberQueryBean.getFullName());
sql+=" and t.full_name like concat('%',?,'%')";
}
if(familyMemberQueryBean.getEmail()!=null&&familyMemberQueryBean.getEmail().length()>0){
parameters.add(familyMemberQueryBean.getEmail());
sql+=" and t.email like concat('%',?,'%')";
}
if(familyMemberQueryBean.getPhone()!=null&&familyMemberQueryBean.getPhone().length()>0){
parameters.add(familyMemberQueryBean.getPhone());
sql+=" and t.phone like concat('%',?,'%')";
}
if(familyMemberQueryBean.getRemark()!=null&&familyMemberQueryBean.getRemark().length()>0){
parameters.add(familyMemberQueryBean.getRemark());
sql+=" and t.remark like concat('%',?,'%')";
}
DbcpUtils.printlnSQL(sql);
DbcpUtils.printlnParameters(parameters);
preparedStatement = connection.prepareStatement(sql);
//设置参数
for(int i=0;i<parameters.size();i++){
preparedStatement.setString(i+1,parameters.get(i));
}
resultSet = preparedStatement.executeQuery();
resultSet.next();
int count = resultSet.getInt(1);
return count;
}catch (Exception e){
throw new RuntimeException(e);
}finally {
DbcpUtils.closeConnection(connection,preparedStatement,resultSet);
}
}*/ public List<FamilyMember> queryFamilyMembers(FamilyMemberQueryBean familyMemberQueryBean) {
Connection connection =null;
PreparedStatement preparedStatement=null;
ResultSet resultSet=null;
try {
connection = DbcpUtils.getConnection();
String sql ="SELECT id,full_name,email,phone,remark FROM family_member t WHERE 1 = 1 ";
//拼接SQL
List<Object> parameters = new ArrayList<Object>();
if(familyMemberQueryBean.getFullName()!=null&&familyMemberQueryBean.getFullName().length()>0){
parameters.add(familyMemberQueryBean.getFullName());
sql+=" and t.full_name like \"%\"?\"%\"";
}
if(familyMemberQueryBean.getEmail()!=null&&familyMemberQueryBean.getEmail().length()>0){
parameters.add(familyMemberQueryBean.getEmail());
sql+=" and t.email like \"%\"?\"%\"";
}
if(familyMemberQueryBean.getPhone()!=null&&familyMemberQueryBean.getPhone().length()>0){
parameters.add(familyMemberQueryBean.getPhone());
sql+=" and t.phone like \"%\"?\"%\"";
}
if(familyMemberQueryBean.getRemark()!=null&&familyMemberQueryBean.getRemark().length()>0){
parameters.add(familyMemberQueryBean.getRemark());
sql+=" and t.remark like \"%\"?\"%\"";
}
sql+=" limit ?,?";
parameters.add(familyMemberQueryBean.getStart());
parameters.add(familyMemberQueryBean.getLimit());
DbcpUtils.printlnSQL(sql);
DbcpUtils.printlnParameters(parameters);
preparedStatement = connection.prepareStatement(sql);
//设置参数
for(int i=0;i<parameters.size();i++){
preparedStatement.setObject(i+1,parameters.get(i));
}
resultSet = preparedStatement.executeQuery();
List<FamilyMember> familyMembers = new ArrayList<FamilyMember>();
while (resultSet.next()){
FamilyMember familyMember = new FamilyMember();
int id = resultSet.getInt("id");
String fullName = resultSet.getString("full_name");
String email = resultSet.getString("email");
String phone = resultSet.getString("phone");
String remark = resultSet.getString("remark");
familyMember.setId(id);
familyMember.setFullName(fullName);
familyMember.setEmail(email);
familyMember.setPhone(phone);
familyMember.setRemark(remark);
familyMembers.add(familyMember);
}
return familyMembers;
}catch (Exception e){
throw new RuntimeException(e);
}finally {
DbcpUtils.closeConnection(connection,preparedStatement,resultSet);
}
} @Override
public int queryFamilyMemberCount(FamilyMemberQueryBean familyMemberQueryBean) {
Connection connection =null;
PreparedStatement preparedStatement=null;
ResultSet resultSet=null;
try {
connection = DbcpUtils.getConnection();
String sql ="SELECT count(*) FROM family_member t WHERE 1 = 1 ";
//拼接SQL
List<String> parameters = new ArrayList<String>();
if(familyMemberQueryBean.getFullName()!=null&&familyMemberQueryBean.getFullName().length()>0){
sql+=" and t.full_name like '%"+familyMemberQueryBean.getFullName()+"%'";
}
if(familyMemberQueryBean.getEmail()!=null&&familyMemberQueryBean.getEmail().length()>0){
sql+=" and t.email like '%"+familyMemberQueryBean.getEmail()+"%'";
}
if(familyMemberQueryBean.getPhone()!=null&&familyMemberQueryBean.getPhone().length()>0){
sql+=" and t.phone like '%"+familyMemberQueryBean.getPhone()+"%'";
}
if(familyMemberQueryBean.getRemark()!=null&&familyMemberQueryBean.getRemark().length()>0){
sql+=" and t.remark like '"+familyMemberQueryBean.getRemark()+"'";
}
DbcpUtils.printlnSQL(sql);
DbcpUtils.printlnParameters(parameters);
preparedStatement = connection.prepareStatement(sql);
//设置参数
for(int i=0;i<parameters.size();i++){
preparedStatement.setString(i+1,parameters.get(i));
}
resultSet = preparedStatement.executeQuery();
resultSet.next();
int count = resultSet.getInt(1);
return count;
}catch (Exception e){
throw new RuntimeException(e);
}finally {
DbcpUtils.closeConnection(connection,preparedStatement,resultSet);
}
}
}
JDBC模糊查询的4种方式的更多相关文章
- MyBatis实现模糊查询的几种方式
在学习MyBatis过程中想实现模糊查询,可惜失败了.后来上百度上查了一下,算是解决了.记录一下MyBatis实现模糊查询的几种方式. 数据库表名为test_student,初始化了几条记录,如图: ...
- 【mysql模糊查询的几种方式】
select * from activyty_code where acname like '%yj%' 1:%:表示任意0个或多个字符.可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分 ...
- mysql中模糊查询的四种用法介绍
下面介绍mysql中模糊查询的四种用法: 1,%:表示任意0个或多个字符.可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示. 比如 SELECT * FROM [user] ...
- JDBC注册驱动的三种方式
JDBC注册驱动的三种方式 1.通过导入的JDBC的驱动包拿到的com.mysql.jdbc.Driver对象,利用java.sql.DriverManager对象的DriverManager.reg ...
- mysql进阶(六)模糊查询的四种用法介绍
mysql中模糊查询的四种用法介绍 这篇文章主要介绍了mysql中模糊查询的四种用法,需要的朋友可以参考下. 下面介绍mysql中模糊查询的四种用法: 1 %: 表示任意0个或多个字符.可匹配任意类型 ...
- 下面介绍mysql中模糊查询的四种用法:
下面介绍mysql中模糊查询的四种用法: 1,%:表示任意0个或多个字符.可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示. 比如 SELECT * FROM [user] ...
- Java JDBC 模糊查询 避免输入_,%返回全部数据
Java JDBC 模糊查询 避免输入_,%返回全部数据 "SELECT * FROM employees WHERE INSTR(first_name,?)>0 " 仅供参 ...
- 表单模糊查询的三种简单方式(springboot-h2-mybatis)
前几天运营提到说后台管理系统有几个地方想要模糊查询.. 想了下是简单的,就是要注意以前方法的被调用情况,进行增量改动,以免牵一发而动全身.整理一波记录下(本次案例是按名字模糊查询学生信息). 三种 ...
- MyBatis 模糊查询的 4 种实现方式
引言 MyBatis 有 4 种方式可以实现模糊查询. 员工信息表 ( tb_employee ) 如下: id name sex email birthday address 001 张一凡 男 z ...
随机推荐
- java命名总结
下文主要来源于网上,我做了一些编辑整理. “如果你不知道一件事物叫什么, 你就不知道它是什么. 如果你不知道这是什么, 你就不可能坐下来写代码.” ----萨姆·加德纳(Sam Gardiner) 1 ...
- SoapUI: 从属性变量里面读取值, 把string 转换成arraylist
- MYSQL报错:1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column
1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'rpa ...
- Java中遍历ConcurrentHashMap的四种方式
//方式一:在for-each循环中使用entries来遍历 System.out.println("方式一:在for-each循环中使用entries来遍历"); for(Map ...
- c++ 二进制方式读取文件 读取特殊类型数据
#include <iostream> #include <fstream> using namespace std; /* 二进制方式进行读写文件,可以读写 各种各样数据类型 ...
- 工控随笔_23_WinCC报Application CCArchiveConnMon.exe could not establish a connection to the Win CC license server
西门子的软件都是比较庞大的,安装一个软件要很长时间,而且安装的过程中很容易因为系统兼容性问题导致不能成功安装的情况, 而有时还会出现安装成功,但是不能正常使用的情况.这个时候就很麻烦,一般除了重装系统 ...
- LeetCode_475. Heaters
475. Heaters Easy Winter is coming! Your first job during the contest is to design a standard heater ...
- 超级简单,把PuppyLinux安装到U盘
先说说使用感受:上网全是乱码!不支持中文 下载最新版puppylinux,从官网下载 现在U盘引导程序制作工具Unetbootin 打开下载的UNetbootin,进行下面的操作: 制作完毕后,修改U ...
- spket插件安装并设置JQuery自动提示
下载地址: com.spket.ui_1.6.23jar包license替换破解.zip: https://pan.baidu.com/s/1JooqlkhHczPT0V34-Qm0oA 提取码: s ...
- Oracle Spatial分区应用研究之八:不同分区粒度在1.5亿要素量级下的查询性能
以土地调查地类图斑层作为测试数据,共计约1.5亿条要素.随机生成90次各比例尺的查询范围,在ORACLE 11gr2数据库中进行空间查询,记录查询耗时.最后计算平均值和第90百分位数,结果如下图所示: ...