博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于不定项参数的查询方法(多条件查询)
阅读量:6627 次
发布时间:2019-06-25

本文共 3327 字,大约阅读时间需要 11 分钟。

如果要进行一个多条件的查询,但又不知道用户到底对哪些条件进行了设定,所以,我们在编辑一个多条件查询的时候,会遇到这样的问题。

那么我们可以通过以下的方式进行解决:

假设一个场景-->       如下图:其中Customer.class 包含了以下的所有属性

         

开始解决问题:

 

那么我们在CustomerDao中可以这样进行编写:

 

public class CustomerDao{

  private QueryRunner qr = new TxQueryRunner(); //TxQueryRunner为自己的写的继承类 -->源代码在最下面

  public List<Customer> query(Customer c){

    StringBuffer sql = new StringBuffer("select * from t_customer where 1=1"); //重点。 此处解决掉了条件如何拼接的问题

    List<Object> list = new ArrayList<Object>();

    if(c.getCname!=null&&!c.getCname.trim().isEmpty()){

      sql.append(" and cname = ?");//and前面需要一个空格,与前面的内容分离开

      list.add(c.getCname);//把参数添加到 list 中

    }

    if(c.getGender!=null&&!c.getGender.trim().isEmpty()){

      sql.append(" and gender = ?");//and前面需要一个空格,与前面的内容分离开

      list.add(c.getGender);

    }

    if(c.getCellphone!=null&&!c.getCellphone.trim().isEmpty()){

      sql.append(" and cellphone = ?");//and前面需要一个空格,与前面的内容分离开

      list.add(c.getCellphone);

    }

    if(c.getEmail!=null&&!c.getEmail.trim().isEmpty()){

      sql.append(" and email = ?");//and前面需要一个空格,与前面的内容分离开

      list.add(c.getEmail);

    }

    return qr.update(sql.toString(),new BeanListHandler<Customer>(Customer.class),list.toArray());//返回结果

  }

}

 -----结束-------

附:(需要依赖:dbutils.jar , mysql.jar,c3p0.jar+配置文件,mchange-commons.jar ,czk-tools-1.0.jar.)

1. t_customer-->指的是数据库中的表,它包含了cname、gender、cellphone、description

2. TxQueryRunner.class -->继承了QueryRunner.class的类。

  代码如下:

1 public class TxQueryRunner extends QueryRunner{ 2      3     @Override 4     public int[] batch(String sql, Object[][] params) throws SQLException { 5         Connection con = JdbcUtils.getConnection(); 6         int[] result = super.batch(con, sql, params); 7         JdbcUtils.releaseConnection(con); 8         return result; 9     }10 11     @Override12     public 
T query(String sql, ResultSetHandler
rsh, Object... params)13 throws SQLException {14 Connection con = JdbcUtils.getConnection();15 T result = super.query(con, sql, rsh,params);16 JdbcUtils.releaseConnection(con);17 return result;18 }19 20 @Override21 public
T query(String sql, ResultSetHandler
rsh) throws SQLException {22 Connection con = JdbcUtils.getConnection();23 T result = super.query(con, sql, rsh);24 JdbcUtils.releaseConnection(con);25 return result;26 }27 28 @Override29 public int update(String sql, Object... params) throws SQLException {30 Connection con = JdbcUtils.getConnection();31 int result = super.update(con, sql, params);32 JdbcUtils.releaseConnection(con);33 return result;34 }35 36 @Override37 public int update(String sql, Object param) throws SQLException {38 Connection con = JdbcUtils.getConnection();39 int result = super.update(con, sql, param);40 JdbcUtils.releaseConnection(con);41 return result;42 }43 44 @Override45 public int update(String sql) throws SQLException {46 Connection con = JdbcUtils.getConnection();47 int result = super.update(con, sql);48 JdbcUtils.releaseConnection(con);49 return result;50 }51 52 }

 

转载于:https://www.cnblogs.com/JamKong/p/4321004.html

你可能感兴趣的文章
面积并
查看>>
java-JDBC
查看>>
通信术语解释
查看>>
对.NET跨平台的随想
查看>>
ng-view 路由 简单应用
查看>>
Nginx Rewrite规则初探(转)
查看>>
Spring学习笔记1——IOC: 尽量使用注解以及java代码(转)
查看>>
黑魔法NSURLProtocol 可拦截网络加载
查看>>
Webtop中新建文档,无法选择Type和Format
查看>>
Integration Services创建ETL包
查看>>
IE浏览器开发中遇到的问题
查看>>
【C#学习笔记】载入图片并居中
查看>>
php实现按utf8编码对字符串进行分割
查看>>
Ftp的断点下载实现
查看>>
[转载] ubuntu Authentication failure
查看>>
Ring0 - 链表
查看>>
修改数组之----splice
查看>>
a版本冲刺第五天
查看>>
Arduino示例教程超声波测距实验
查看>>
Redis操作hash
查看>>