07-08
26

多选判断查询

竟然弄了好几个小时,查错。。。服了
先把错误的列出来:    
    public String countChoose(String name, String cid, String state) { //选择算法
        int lable = 0; //跟踪标记
        String sqladd = ""; //动态生成的sql部分语句
        String sql = "";
      
       if (!name.equals("")) {
            sqladd = "p.name='" + name + "'";//这里也需要注意,单引号
            lable = 1;
        }


         /**
         * 另外,不要用p.g_id因为有联级
         */

       if (!cid.equals("") && lable == 0) {
            sqladd = "p.g_id=" + Integer.parseInt(cid) + "";
            log.info("1:" + sqladd);
            lable = 1;
        }

        if (!cid.equals("") && lable == 1) {
            sqladd = sqladd + " and p.g_id=" + Integer.parseInt(cid) + "";

            log.info("2:" + sqladd);
        }


        if (!state.equals("") && lable == 1) {
            sqladd = sqladd + " and p.state=" + Integer.parseInt(state) + "";
        }
        if (!state.equals("") && lable == 0) {
            sqladd = "p.state=" + Integer.parseInt(state) + "";
            lable = 1;
        }

        if (lable == 0) {
            sql = "from ProductVO as p order by p.id desc";
        } else {
            sql = "from ProductVO as p where " + sqladd + " order by p.id desc";
        }
        log.info("search sql:" + sql);

        return sql;
   }


显示如下:
引用内容 引用内容
INFO - 1:p.g_id=1
INFO - 2:p.g_id=1 and p.g_id=1
INFO - search sql:from ProductVO as p where p.g_id=1 and p.g_id=1 and p.state=0 order by p.id desc


因为错误的判断,造成了lable走了两次g_id,怎么解决?颠倒一下上下位置啦...

文章来自: 本站原创
引用通告: 查看所有引用 | 我要引用此文章
Tags: 查询 搜索
相关日志:
评论: 0 | 引用: 0 | 查看次数: 741
发表评论
昵 称:
密 码: 游客发言不需要密码.
内 容:
验证码: 验证码
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 开启 | [img]标签 关闭