码迷,mamicode.com
首页 > 其他好文 > 详细

关于不定项参数的查询方法(多条件查询)

时间:2015-03-07 22:42:46      阅读:2373      评论:0      收藏:0      [点我收藏+]

标签:

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

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

假设一个场景-->       如下图:其中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     @Override
12     public <T> T query(String sql, ResultSetHandler<T> 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     @Override
21     public <T> T query(String sql, ResultSetHandler<T> 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     @Override
29     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     @Override
37     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     @Override
45     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 }

 

关于不定项参数的查询方法(多条件查询)

标签:

原文地址:http://www.cnblogs.com/JamKong/p/4321004.html

(10)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!