• SQL高级查询


    本文主要是对下图的查询方式的条件判断进行讲解:

    如果还有更多的查询条件,只要在下面SqlCondition类中加入相对应的字段,然后添加相应的get和set方法,最后在

    getQueryCondition方法中加入相对应的条件判断语句if就可以了。
    public class SqlCondition {
        
        //职位名称:用于查询的条件判断
        private String  title;
        //职位类型:用于查询的条件判断
        private Integer positiontype;
        
        public SqlCondition() {
            super();
        }
        
        public String getTitle() {
            return title;
        }
    
        public void setTitle(String title) {
            this.title = title;
        }
    
        public Integer getPositiontype() {
            return positiontype;
        }
    
        public void setPositiontype(Integer positiontype) {
            this.positiontype = positiontype;
        }
        
        /**
         * 查询语句的条件判断
         * 方法一(推荐使用):
         */
        public String getQueryCondition_01(){
            String whereSql="";
            if(title !=null && !"".equals(title)){
                whereSql += " and title like '%"+title+"%'";
            }
            if(positiontype!=null && !"".equals(positiontype)){
                whereSql+=" and positiontype = "+positiontype;
            }
            //replace:替换;First:第一个
            return whereSql.replaceFirst("and", "where");
        }
            
         /**
         * 查询语句的条件判断
         * 方法二(不推荐使用): where 1==1 会影响查询的性能
         */
        public String getQueryCondition_02(){
            String  whereSql = "where 1==1";
    
            if(title != null && !"".equals(title)){
                whereSql+= "and title like '%"+title+"%'";
            }
            if(positiontype !=null){
                whereSql += "and positiontype = " +positiontype;
            }
    
            return whereSql;
        }
    
        /**
         * 查询语句的条件判断
         * 方法三(准备一个标识(即一个flag)
             如果标识是true,条件前就加where,如果是false,条件前就加and):
         */
        public String getQueryCondition_03(){
            //标识:flag
            boolean flag = true;
            String whereSql = "";
            //title不为null,并且不为空字符串
            if(title!=null && !"".equals(title)){
                if(flag){
                    whereSql+= " where ";
                    flag = false;
                }else{
                    whereSql+= " and ";
                }
                whereSql += " title like '%"+title+"%' ";
            }
            if(positiontype!=null){
                if(flag){
                    whereSql+= " where ";
                    flag = false;
                }else{
                    whereSql+= " and ";
                }
                whereSql += " positiontype = "+positiontype;
            }
            return whereSql;
        }
    
        /**
         * 查询语句的条件判断
         * 方法四(准备一个集合):
         */
        public String getQueryCondition_04(){
            //准备一个集合(里面会装咱们的所有条件)
            List<String> sqlList = new ArrayList<>();
    
            String whereSql = "";
            //title不为null,并且不为空字符串
            if(title!=null && !"".equals(title)){
                sqlList.add(" title like '%"+title+"%' ");
            }
            if(positiontype!=null){
                sqlList.add(" positiontype = "+positiontype);
            }
            //查询条件加多了,只要在这加if语句就可以了
            //遍历这个集合
            for (int i = 0; i < sqlList.size(); i++) {
                if(i==0){
                    //第一次循环,前面肯定是加where
                    whereSql += " where ";
                }else{
                    //第2-n次循环,前面肯定是加and
                    whereSql += " and ";
                }
                whereSql += sqlList.get(i);
            }
    
            return whereSql;
        }
    }

    最后在需要的SQL语句中引入条件判断方法即可。

    四种方法特点分析:

      方法一:比较简单,容易看懂,不会影响查询性能,推荐使用。

      方法二:虽然比方法一少了几个代码,但 where == 1在sql查询中会影响查询性能,不建议使用。

      方法三:代码比较多,容易写错。

      方法四:比较难理解,使用相对其它几个方法比较麻烦。

  • 相关阅读:
    iOS之const,static,extern简介
    ubuntu14.04安装pycurl报错: __main__.ConfigurationError: Could not run curl-config: [Errno 2] No such file or directory
    Django过滤器列表
    ubuntu 开机显示错误:无法应用原保存的显示器配置
    安装 ppsycopg2报错, Error: You need to install postgresql-server-dev-X.Y for building a server-side extension or libpq-dev for building a client-side application
    [已解决]EnvironmentError: mysql_config not found
    Ubuntu14.04安装MySQL-python异常: mysql_config: not found,Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-MJWMPd/MySQL-python/
    Ubuntu14.04通过pyenv配置多python
    【原创】No matching distribution found for Twisted>=10.0.0 (from scrapy)
    [原创] 更新Ubuntu自带的python2.X版本 ImportError: No module named pip;ImportError: No module named _sqlite3
  • 原文地址:https://www.cnblogs.com/wanghj-15/p/10952746.html
Copyright © 2020-2023  润新知