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()+"%'";

例如:

  1. package org.pine.dao.impl;
  2.  
  3. import org.pine.dao.FamilyMemberDao;
  4. import org.pine.dto.FamilyMember;
  5. import org.pine.util.DbcpUtils;
  6. import org.pine.vo.FamilyMemberQueryBean;
  7. import java.sql.Connection;
  8. import java.sql.PreparedStatement;
  9. import java.sql.ResultSet;
  10. import java.util.ArrayList;
  11. import java.util.List;
  12.  
  13. /**
  14. * FamilyMemberDao实现类
  15. *
  16. * @Auther: zts
  17. * @Date: 2019/5/28 下午 03:21
  18. * @version: 1.0
  19. */
  20. public class FamilyMemberDaoImpl implements FamilyMemberDao {
  21. /*
  22. public List<FamilyMember> queryFamilyMembers(FamilyMemberQueryBean familyMemberQueryBean) {
  23. Connection connection =null;
  24. PreparedStatement preparedStatement=null;
  25. ResultSet resultSet=null;
  26. try {
  27. connection = DbcpUtils.getConnection();
  28. String sql ="SELECT id,full_name,email,phone,remark FROM family_member t WHERE 1 = 1 ";
  29. //拼接SQL
  30. List<Object> parameters = new ArrayList<Object>();
  31. if(familyMemberQueryBean.getFullName()!=null&&familyMemberQueryBean.getFullName().length()>0){
  32. parameters.add("%"+familyMemberQueryBean.getFullName()+"%");
  33. sql+=" and t.full_name like ?";
  34. }
  35. if(familyMemberQueryBean.getEmail()!=null&&familyMemberQueryBean.getEmail().length()>0){
  36. parameters.add("%"+familyMemberQueryBean.getEmail()+"%");
  37. sql+=" and t.email like ?";
  38. }
  39. if(familyMemberQueryBean.getPhone()!=null&&familyMemberQueryBean.getPhone().length()>0){
  40. parameters.add("%"+familyMemberQueryBean.getPhone()+"%");
  41. sql+=" and t.phone like ?";
  42. }
  43. if(familyMemberQueryBean.getRemark()!=null&&familyMemberQueryBean.getRemark().length()>0){
  44. parameters.add("%"+familyMemberQueryBean.getRemark()+"%");
  45. sql+=" and t.remark like ?";
  46. }
  47. sql+="limit ?,?";
  48. parameters.add(familyMemberQueryBean.getStart());
  49. parameters.add(familyMemberQueryBean.getLimit());
  50. DbcpUtils.printlnSQL(sql);
  51. DbcpUtils.printlnParameters(parameters);
  52. preparedStatement = connection.prepareStatement(sql);
  53. //设置参数
  54. for(int i=0;i<parameters.size();i++){
  55. preparedStatement.setObject(i+1,parameters.get(i));
  56. }
  57. resultSet = preparedStatement.executeQuery();
  58. List<FamilyMember> familyMembers = new ArrayList<FamilyMember>();
  59. while (resultSet.next()){
  60. FamilyMember familyMember = new FamilyMember();
  61. int id = resultSet.getInt("id");
  62. String fullName = resultSet.getString("full_name");
  63. String email = resultSet.getString("email");
  64. String phone = resultSet.getString("phone");
  65. String remark = resultSet.getString("remark");
  66. familyMember.setId(id);
  67. familyMember.setFullName(fullName);
  68. familyMember.setEmail(email);
  69. familyMember.setPhone(phone);
  70. familyMember.setRemark(remark);
  71. familyMembers.add(familyMember);
  72. }
  73. return familyMembers;
  74. }catch (Exception e){
  75. throw new RuntimeException(e);
  76. }finally {
  77. DbcpUtils.closeConnection(connection,preparedStatement,resultSet);
  78. }
  79. }*/
  80.  
  81. /*
  82. @Override
  83. public int queryFamilyMemberCount(FamilyMemberQueryBean familyMemberQueryBean) {
  84. Connection connection =null;
  85. PreparedStatement preparedStatement=null;
  86. ResultSet resultSet=null;
  87. try {
  88. connection = DbcpUtils.getConnection();
  89. String sql ="SELECT count(*) FROM family_member t WHERE 1 = 1 ";
  90. //拼接SQL
  91. List<String> parameters = new ArrayList<String>();
  92. if(familyMemberQueryBean.getFullName()!=null&&familyMemberQueryBean.getFullName().length()>0){
  93. parameters.add(familyMemberQueryBean.getFullName());
  94. sql+=" and t.full_name like concat('%',?,'%')";
  95. }
  96. if(familyMemberQueryBean.getEmail()!=null&&familyMemberQueryBean.getEmail().length()>0){
  97. parameters.add(familyMemberQueryBean.getEmail());
  98. sql+=" and t.email like concat('%',?,'%')";
  99. }
  100. if(familyMemberQueryBean.getPhone()!=null&&familyMemberQueryBean.getPhone().length()>0){
  101. parameters.add(familyMemberQueryBean.getPhone());
  102. sql+=" and t.phone like concat('%',?,'%')";
  103. }
  104. if(familyMemberQueryBean.getRemark()!=null&&familyMemberQueryBean.getRemark().length()>0){
  105. parameters.add(familyMemberQueryBean.getRemark());
  106. sql+=" and t.remark like concat('%',?,'%')";
  107. }
  108. DbcpUtils.printlnSQL(sql);
  109. DbcpUtils.printlnParameters(parameters);
  110. preparedStatement = connection.prepareStatement(sql);
  111. //设置参数
  112. for(int i=0;i<parameters.size();i++){
  113. preparedStatement.setString(i+1,parameters.get(i));
  114. }
  115. resultSet = preparedStatement.executeQuery();
  116. resultSet.next();
  117. int count = resultSet.getInt(1);
  118. return count;
  119. }catch (Exception e){
  120. throw new RuntimeException(e);
  121. }finally {
  122. DbcpUtils.closeConnection(connection,preparedStatement,resultSet);
  123. }
  124. }*/
  125.  
  126. public List<FamilyMember> queryFamilyMembers(FamilyMemberQueryBean familyMemberQueryBean) {
  127. Connection connection =null;
  128. PreparedStatement preparedStatement=null;
  129. ResultSet resultSet=null;
  130. try {
  131. connection = DbcpUtils.getConnection();
  132. String sql ="SELECT id,full_name,email,phone,remark FROM family_member t WHERE 1 = 1 ";
  133. //拼接SQL
  134. List<Object> parameters = new ArrayList<Object>();
  135. if(familyMemberQueryBean.getFullName()!=null&&familyMemberQueryBean.getFullName().length()>0){
  136. parameters.add(familyMemberQueryBean.getFullName());
  137. sql+=" and t.full_name like \"%\"?\"%\"";
  138. }
  139. if(familyMemberQueryBean.getEmail()!=null&&familyMemberQueryBean.getEmail().length()>0){
  140. parameters.add(familyMemberQueryBean.getEmail());
  141. sql+=" and t.email like \"%\"?\"%\"";
  142. }
  143. if(familyMemberQueryBean.getPhone()!=null&&familyMemberQueryBean.getPhone().length()>0){
  144. parameters.add(familyMemberQueryBean.getPhone());
  145. sql+=" and t.phone like \"%\"?\"%\"";
  146. }
  147. if(familyMemberQueryBean.getRemark()!=null&&familyMemberQueryBean.getRemark().length()>0){
  148. parameters.add(familyMemberQueryBean.getRemark());
  149. sql+=" and t.remark like \"%\"?\"%\"";
  150. }
  151. sql+=" limit ?,?";
  152. parameters.add(familyMemberQueryBean.getStart());
  153. parameters.add(familyMemberQueryBean.getLimit());
  154. DbcpUtils.printlnSQL(sql);
  155. DbcpUtils.printlnParameters(parameters);
  156. preparedStatement = connection.prepareStatement(sql);
  157. //设置参数
  158. for(int i=0;i<parameters.size();i++){
  159. preparedStatement.setObject(i+1,parameters.get(i));
  160. }
  161. resultSet = preparedStatement.executeQuery();
  162. List<FamilyMember> familyMembers = new ArrayList<FamilyMember>();
  163. while (resultSet.next()){
  164. FamilyMember familyMember = new FamilyMember();
  165. int id = resultSet.getInt("id");
  166. String fullName = resultSet.getString("full_name");
  167. String email = resultSet.getString("email");
  168. String phone = resultSet.getString("phone");
  169. String remark = resultSet.getString("remark");
  170. familyMember.setId(id);
  171. familyMember.setFullName(fullName);
  172. familyMember.setEmail(email);
  173. familyMember.setPhone(phone);
  174. familyMember.setRemark(remark);
  175. familyMembers.add(familyMember);
  176. }
  177. return familyMembers;
  178. }catch (Exception e){
  179. throw new RuntimeException(e);
  180. }finally {
  181. DbcpUtils.closeConnection(connection,preparedStatement,resultSet);
  182. }
  183. }
  184.  
  185. @Override
  186. public int queryFamilyMemberCount(FamilyMemberQueryBean familyMemberQueryBean) {
  187. Connection connection =null;
  188. PreparedStatement preparedStatement=null;
  189. ResultSet resultSet=null;
  190. try {
  191. connection = DbcpUtils.getConnection();
  192. String sql ="SELECT count(*) FROM family_member t WHERE 1 = 1 ";
  193. //拼接SQL
  194. List<String> parameters = new ArrayList<String>();
  195. if(familyMemberQueryBean.getFullName()!=null&&familyMemberQueryBean.getFullName().length()>0){
  196. sql+=" and t.full_name like '%"+familyMemberQueryBean.getFullName()+"%'";
  197. }
  198. if(familyMemberQueryBean.getEmail()!=null&&familyMemberQueryBean.getEmail().length()>0){
  199. sql+=" and t.email like '%"+familyMemberQueryBean.getEmail()+"%'";
  200. }
  201. if(familyMemberQueryBean.getPhone()!=null&&familyMemberQueryBean.getPhone().length()>0){
  202. sql+=" and t.phone like '%"+familyMemberQueryBean.getPhone()+"%'";
  203. }
  204. if(familyMemberQueryBean.getRemark()!=null&&familyMemberQueryBean.getRemark().length()>0){
  205. sql+=" and t.remark like '"+familyMemberQueryBean.getRemark()+"'";
  206. }
  207. DbcpUtils.printlnSQL(sql);
  208. DbcpUtils.printlnParameters(parameters);
  209. preparedStatement = connection.prepareStatement(sql);
  210. //设置参数
  211. for(int i=0;i<parameters.size();i++){
  212. preparedStatement.setString(i+1,parameters.get(i));
  213. }
  214. resultSet = preparedStatement.executeQuery();
  215. resultSet.next();
  216. int count = resultSet.getInt(1);
  217. return count;
  218. }catch (Exception e){
  219. throw new RuntimeException(e);
  220. }finally {
  221. DbcpUtils.closeConnection(connection,preparedStatement,resultSet);
  222. }
  223. }
  224. }

JDBC模糊查询的4种方式的更多相关文章

  1. MyBatis实现模糊查询的几种方式

    在学习MyBatis过程中想实现模糊查询,可惜失败了.后来上百度上查了一下,算是解决了.记录一下MyBatis实现模糊查询的几种方式. 数据库表名为test_student,初始化了几条记录,如图: ...

  2. 【mysql模糊查询的几种方式】

    select * from activyty_code where acname like '%yj%' 1:%:表示任意0个或多个字符.可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分 ...

  3. mysql中模糊查询的四种用法介绍

    下面介绍mysql中模糊查询的四种用法: 1,%:表示任意0个或多个字符.可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示. 比如 SELECT * FROM [user] ...

  4. JDBC注册驱动的三种方式

    JDBC注册驱动的三种方式 1.通过导入的JDBC的驱动包拿到的com.mysql.jdbc.Driver对象,利用java.sql.DriverManager对象的DriverManager.reg ...

  5. mysql进阶(六)模糊查询的四种用法介绍

    mysql中模糊查询的四种用法介绍 这篇文章主要介绍了mysql中模糊查询的四种用法,需要的朋友可以参考下. 下面介绍mysql中模糊查询的四种用法: 1 %: 表示任意0个或多个字符.可匹配任意类型 ...

  6. 下面介绍mysql中模糊查询的四种用法:

    下面介绍mysql中模糊查询的四种用法: 1,%:表示任意0个或多个字符.可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示. 比如 SELECT * FROM [user] ...

  7. Java JDBC 模糊查询 避免输入_,%返回全部数据

    Java JDBC 模糊查询 避免输入_,%返回全部数据 "SELECT * FROM employees WHERE INSTR(first_name,?)>0 " 仅供参 ...

  8. 表单模糊查询的三种简单方式(springboot-h2-mybatis)

    前几天运营提到说后台管理系统有几个地方想要模糊查询..   想了下是简单的,就是要注意以前方法的被调用情况,进行增量改动,以免牵一发而动全身.整理一波记录下(本次案例是按名字模糊查询学生信息). 三种 ...

  9. MyBatis 模糊查询的 4 种实现方式

    引言 MyBatis 有 4 种方式可以实现模糊查询. 员工信息表 ( tb_employee ) 如下: id name sex email birthday address 001 张一凡 男 z ...

随机推荐

  1. ChIP-seq | ATAC-seq | 数据分析流程

    思来想去,还是觉得ENCODE的流程靠谱,所以又花了快一周来调试,终于排除万难,跑成功了.[2019年12月08日] 以下是ATAC生成的结果目录: call-align call-call_peak ...

  2. ROLLUP、CUBE、GROUP BY的使用区别

    1.ROLLUP:根据维度在数据结果集中进行的聚合操作,可多维度SELECT count(*) num,MONTH(register_time) times,`status` FROM `user` ...

  3. Sonar错误 Invoke method(s) only conditionally

    sonarLint总是报错: Invoke method(s) only conditionally 代码如下: if(us != null){ logger.info("Log this: ...

  4. RSA加密和数字签名在Java中常见应用【原创】

    相关术语解释: RSA,参考: https://en.wikipedia.org/wiki/RSA_(cryptosystem) 非对称加密算法 ,参考:https://baike.baidu.com ...

  5. JDBC操作数据库工具类(使用阿里Druid原生API创建数据源)

    1.数据库配置类 package com.zdlt.auth.api.common.druid; import java.util.Properties; import static com.alib ...

  6. TrueType字体

    TrueType字形描述技术和TTF文件 TrueType字体技术的研究分析与应用 看起来上面两篇都是翻译的文档. 看微软的原文介绍: TrueType fundamentals 其他文章: 获取Tr ...

  7. k8s记录-国内下载k8s组件镜像

    #!/bin/sh ### 版本信息 K8S_VERSION=v1.13.2 ETCD_VERSION=3.2.24 DASHBOARD_VERSION=v1.8.3 FLANNEL_VERSION= ...

  8. LwIP应用开发笔记之七:LwIP无操作系统HTTP服务器

    前面我们实现了TCP服务器和客户端的简单应用,接下来我们实现一个基于TCP协议的应用协议,那就是HTTP超文本传输协议 1.  HTTP协议简介   超文本传输协议(Hyper Text Transf ...

  9. 转载:postman自动设置token(csrf及authorization token)

    原文链接: https://knktc.com/2018/06/03/postman-set-token/ 正文引用: 近期在开发一个Django的项目,由于开启了csrf防护,所以需要在请求的hea ...

  10. MacbookPro15 2019 闪屏雪花现象方案汇总

    1. 系统偏好设置,显示器,关闭 "自动调节亮度" "原彩显示",即取消勾选. 2. 系统偏好设置,节能,关闭 "自动切换图形卡模式",即取 ...