关于java多条件查询SQL语句拼接的小技巧

原创 2015年07月11日 09:02:56

关于java多条件查询SQL语句拼接的小技巧

最近在实验室做项目的时候遇到了java的多条件查询,翻看了论坛上其他大牛们的博客,都没有给出一个详细的解答。自我探索了一会后给出了下面这样的使用技巧,还算方便,仅供各位参考。

前端的页面显示


页面上方是查询所给字段名,下方是测试的查询数据

查询所给的表单代码

<form action="" >
    <table>
    <tr>
    <td><span>PMNM(内码)</span></td>
    <td><span><input name="PMNM" type="text"></span></td>
    <td><span>PMBM(编码)</span></td>
    <td><span><input name="PMBM" type="text"></span></td>
    <td><span>PMCS(名称)</span></td>
    <td><span><input name="PMCS" type="text"></span></td>
    <td><span>LBQF(类型)</span></td>
    <td><span><input name="LBQF" type="text"></span></td>
    <td><span><input name="codeSubmit" class="search-btn" 

type="submit" value="查询"></span></td>
    </tr>
    </table>
</form>

在后台servlet中获取表单的name

HashMap<String, Object> key=new HashMap<String, Object>();//在不知道属性类型的情况下,用HashMap<String,Object>来代替从上述表单中所获取的name值,并统一存放在HashMap中
            String PMNM=request.getParameter("PMNM");
            key.put("内码", PMNM);
            String PMCS=request.getParameter("PMCS");
            key.put("名称", PMCS);
            String PMBM=request.getParameter("PMBM");
            key.put("编码", PMBM);
            String LBQF=request.getParameter("LBQF");
            key.put("类型",LBQF);

    //调用Service层的serach方法进行查询
            ArrayList<Commmon9831> a=h.Search(key);//用ArrayList来表示所查询的结果
            request.setAttribute("a", a);
            request.getRequestDispatcher("所要跳转的显示查询结果页面").forward(request, response);

好了,上述的操作完成以后,就可以写DAO层中查询方法了,也是最重要的部分

public ArrayList<“bean的类型”> Search(HashMap<String ,Object> key )
    {   ArrayList<Commmon9831> a=new ArrayList<Commmon9831>();
       String sql="select * from “数据库名” ";//最原始的sql查询语句
       //依次用Object类来表示HashMap中的属性值
       Object m=key.get("内码");
       Object s=key.get("名称");
       Object P=key.get("编码");
       Object L=key.get("类型");

       int count=0;//引入一个count值来控制where条件后的属性值,及在sql语句中的位置
    //注意:**完成上述操作后,并没有判断Object对象是否为空值,下面判断是否为空的方法也很重要**
    if(!(m.toString().equals(""))||!(s.toString().equals(""))||!(P.toString().equals(""))||!(L.toString().equals("")))
       {       sql=sql+" where";
       //如果上述所给条件有一个不为空,则在sql语句中加上“where”。

        if(m.toString().equals(""))
           sql=sql+"";
       else{
       //用多个if来表示查询的情况,这里是本文的重点。
       //因为不清楚所给的条件是哪一个,设置count值为0,当在HashMap值前的查询条件不为空,则count++。当count>0时,说明当前查询条件不为一,则sql=sql+“and”。
       if(count>0)
            sql=sql+" and ";

            sql=sql+" PMNM = '" +key.get("内码")+ "'";

             if(s.toString().equals(""))
           sql=sql+"";   //sql关键字指尖要存在空格,不然无法执行
       else {if(count>0)
            sql=sql+" and ";

            sql=sql+" PMCS = '" +key.get("名称")+ "'";
            count++;
        }
       if(P.toString().equals(""))
           sql=sql+"";
       else {if(count>0)
            sql=sql+" and ";

            sql=sql+" PMBM = '" +key.get("编码")+ "'";
            count++;
        }
       if(L.toString().equals(""))
           sql=sql+"";
       else {if(count>0)
            sql=sql+" and ";

            sql=sql+" LBQF = '" +key.get("类型")+ "'";
            count++;
        }
       }
       System.out.println(sql);//在控制台上打印出sql语句查看拼接结果

随笔:

————————————————————————————
拼接sql语句是多条件查询的重要部分,在上述所给的技巧中,使用一切查询情况。其中判断HashMap中键值对是否为空,利用count值来判断查询条件情况是本文的重点。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

java 中的 sql 单引号双引号拼接变量

String sqlString="select * from tb_wf_main where trim(WF_NAME) = '   " + wfName.trim() + "  '    "; .....

[SqlHandle] java mysql语法 sql语句拼接工具简类

SqlHandle sqlhandle =new SqlHandle(SqlHandle.OPERATES[2],table); sqlhandle.OPERATEFILED(field1, valu...
  • quuqu
  • quuqu
  • 2015-12-10 10:11
  • 1436

SQL查询语句拼接

sql语句拼接主要操作于有条件的的增加,删除,修改或查询,下面给你介绍一个条件查询的例子: 既然是拼接sql语句长度不一定,用StringBuffer修饰,而不用String String name=...

数据库表Dao层SQL语句拼接生成工具

最近在用数据库管理三层写一个项目,没有用框架,在建dao层的时候遇到了一个令人十分dan疼的事情,那就是像写插入和更新这种函数的时候SQL语句的拼接简直是要了老命呀,急着赶进度,谁有耐心去写那玩意!就...

JAVA中基于json串进行sql语句拼接实现select方法

接上次groovy中利用解析json串进行sql语句拼接继而实现select方法后,本次我们利用JAVA来实现这一功能。 首先老规矩,构造select方法函数,由于select是需要查询出结果...

Java下拼接执行动态SQL语句

在实际业务中经常需要拼接动态SQL来完成复杂数据计算,网上各类技术论坛都有讨论,比如下面这些问题:   http://bbs.csdn.net/topics/390876591   htt...

使用Rocker模板引擎解决动态拼接SQL语句的问题

相信大部分服务端程序员都和我有一样的感觉,就是在Java代码里根据条件拼接SQL语句是个技术含量很低,又很麻烦,还容易出错的问题。 最简单直观的方式当然是用String/StringBuffer/St...

SQL中如何将两列拼接

SQL中如何将两列拼接  软件软件开发数据库 专业回答 badkano  生活达人 北京理工大学计算机系 2015-07-07 16:43 主要看两列是什么类...

java拼接sql语句例子

string str = "1,2,3";   sqlstr+="and 1-1 and (1!=1"; string str0=""; for(int i=0;i      if...
  • mine_1
  • mine_1
  • 2012-04-28 17:22
  • 2996

java防sql注入的sql语句拼接工具sqlHandle

我在做网站的时候有一个需要在不同的插入时间改变查询的逻辑结构,这个时候用PreparedStatement就不太适合了灵活性太差。所以我就写了一个sql拼接工具。它的原理是将sql语句段与值绑定在一起...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)