关于不定项参数的查询方法(多条件查询)
2015-03-07 22:01
375 查看
如果要进行一个多条件的查询,但又不知道用户到底对哪些条件进行了设定,所以,我们在编辑一个多条件查询的时候,会遇到这样的问题。
那么我们可以通过以下的方式进行解决:
假设一个场景--> 如下图:其中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的类。
代码如下:
那么我们可以通过以下的方式进行解决:
假设一个场景--> 如下图:其中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的类。
代码如下:
public class TxQueryRunner extends QueryRunner{ @Override public int[] batch(String sql, Object[][] params) throws SQLException { Connection con = JdbcUtils.getConnection(); int[] result = super.batch(con, sql, params); JdbcUtils.releaseConnection(con); return result; } @Override public <T> T query(String sql, ResultSetHandler<T> rsh, Object... params) throws SQLException { Connection con = JdbcUtils.getConnection(); T result = super.query(con, sql, rsh,params); JdbcUtils.releaseConnection(con); return result; } @Override public <T> T query(String sql, ResultSetHandler<T> rsh) throws SQLException { Connection con = JdbcUtils.getConnection(); T result = super.query(con, sql, rsh); JdbcUtils.releaseConnection(con); return result; } @Override public int update(String sql, Object... params) throws SQLException { Connection con = JdbcUtils.getConnection(); int result = super.update(con, sql, params); JdbcUtils.releaseConnection(con); return result; } @Override public int update(String sql, Object param) throws SQLException { Connection con = JdbcUtils.getConnection(); int result = super.update(con, sql, param); JdbcUtils.releaseConnection(con); return result; } @Override public int update(String sql) throws SQLException { Connection con = JdbcUtils.getConnection(); int result = super.update(con, sql); JdbcUtils.releaseConnection(con); return result; } }
相关文章推荐
- 关于不定项参数的查询方法(多条件查询)
- 关于存储过程中一个参数表示多个查询条件使用方法的简单处理
- 用扩展方法优化多条件查询(不定条件查询)
- 用扩展方法优化多条件查询(不定条件查询)
- 关于带参数模糊查询的方法 like --转载自 寂寞沙洲(博客园)
- 超长查询,不同的查询条件,不同的参数,查出来的数据放在一个临时表中的方法
- ExtJs 4分页(pagingtoolbar)带参数(条件)查询解决方法
- mybatis模糊查询及if多条件(if条件的参数为方法参数而非数据库字段)
- 关于条件查询的参数condition的最佳方案
- 关于sql多条件查询,但又不确定值的个数的方法。
- ExtJs 4分页(pagingtoolbar)带参数(条件)查询解决方法
- Flex2.0中关于传递不定参数个数的方法的定义和用法
- 一个数据库查询方法(可以动态设置查询参数,设置查询条件),很巧妙的组合sql语句
- 关于SQL查询语句TOP 后面跟参数的解决方法
- 关于mybatis多参数查询的方法
- Bootstrap table中toolbar新增条件查询及refresh参数使用方法
- ASP.NET 多条件动态参数查询方法
- ExtJs 3 ExtJs4 分页(pagingtoolbar)带参数(条件)查询解决方法
- Hibernate通用多条件不定参数查询
- javascript:设置URL参数的方法,适合多条件查询