zoukankan      html  css  js  c++  java
  • 关于不定项参数的查询方法(多条件查询)

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

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

    假设一个场景-->       如下图:其中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 }
  • 相关阅读:
    matlab矩阵中如何去掉重复的行;如何找到相同的行,并找到其位置
    Coursera 机器学习 第9章(下) Recommender Systems 学习笔记
    机器学习基石笔记1——在何时可以使用机器学习(1)
    Coursera 机器学习 第9章(上) Anomaly Detection 学习笔记
    matlab安装过程的被要求的配置程序
    jdk环境变量配置
    Coursera 机器学习 第8章(下) Dimensionality Reduction 学习笔记
    Coursera 机器学习 第8章(上) Unsupervised Learning 学习笔记
    Coursera 机器学习 第7章 Support Vector Machines 学习笔记
    linux服务器---squid限制
  • 原文地址:https://www.cnblogs.com/JamKong/p/4321004.html
Copyright © 2011-2022 走看看