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

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

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

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

56973dcd93823ea6a14d6d946f10aee2.png

开始解决问题:

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

public class CustomerDao{

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

public List query(Customer c){

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

List list = new ArrayList();

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.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 extendsQueryRunner{2

3 @Override4 public int[] batch(String sql, Object[][] params) throwsSQLException {5 Connection con =JdbcUtils.getConnection();6 int[] result = super.batch(con, sql, params);7 JdbcUtils.releaseConnection(con);8 returnresult;9 }10

11 @Override12 public T query(String sql, ResultSetHandlerrsh, Object... params)13 throwsSQLException {14 Connection con =JdbcUtils.getConnection();15 T result = super.query(con, sql, rsh,params);16 JdbcUtils.releaseConnection(con);17 returnresult;18 }19

20 @Override21 public T query(String sql, ResultSetHandler rsh) throwsSQLException {22 Connection con =JdbcUtils.getConnection();23 T result = super.query(con, sql, rsh);24 JdbcUtils.releaseConnection(con);25 returnresult;26 }27

28 @Override29 public int update(String sql, Object... params) throwsSQLException {30 Connection con =JdbcUtils.getConnection();31 int result = super.update(con, sql, params);32 JdbcUtils.releaseConnection(con);33 returnresult;34 }35

36 @Override37 public int update(String sql, Object param) throwsSQLException {38 Connection con =JdbcUtils.getConnection();39 int result = super.update(con, sql, param);40 JdbcUtils.releaseConnection(con);41 returnresult;42 }43

44 @Override45 public int update(String sql) throwsSQLException {46 Connection con =JdbcUtils.getConnection();47 int result = super.update(con, sql);48 JdbcUtils.releaseConnection(con);49 returnresult;50 }51

52 }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值