匿名通过本文主要向大家介绍了JDBC,查询,实现等相关知识,希望本文的分享对您有所帮助
在网络开发中,多种条件的综合查询非常常见,应对这种业务需求我们通常使用下面几种方法来实现:
1.直接将参数值拼接到SQL语句中,然后进行查询。
这种方式的安全性应当说是比较差的,一不小心就被SQL注入了。虽然可以先过滤参数值中的特殊字符,但总感觉不是很优雅。
2.先使用占位符'?'来拼接SQL,然后再通过条件判断去填充的PreparedStatement。
用过这种方式的TX,都知道这种方式的复杂性。先要在拼SQL时判断一次,然后还要在填充PST时再判断一次,麻烦。
3.过程存储
的档案本人一直不爽的存储过程,以前有一个项目从MySQL的迁移到MSSQL,后来又换成ORACLE,最后产品的不同版本运行在不同数据库上,当时差点要了亲命了。
其实讲 么多无非就是想要一种相对优雅简单的查询方式,前一段看到.NET中的提供SQLHelper受到一些启发,然后就写了这么一个类似的组件(其实我谷歌了半个小时都没有找到符合要求的基础
1.直接将参数值拼接到SQL语句中,然后进行查询。
这种方式的安全性应当说是比较差的,一不小心就被SQL注入了。虽然可以先过滤参数值中的特殊字符,但总感觉不是很优雅。
2.先使用占位符'?'来拼接SQL,然后再通过条件判断去填充的PreparedStatement。
用过这种方式的TX,都知道这种方式的复杂性。先要在拼SQL时判断一次,然后还要在填充PST时再判断一次,麻烦。
3.过程存储
的档案本人一直不爽的存储过程,以前有一个项目从MySQL的迁移到MSSQL,后来又换成ORACLE,最后产品的不同版本运行在不同数据库上,当时差点要了亲命了。
其实讲 么多无非就是想要一种相对优雅简单的查询方式,前一段看到.NET中的提供SQLHelper受到一些启发,然后就写了这么一个类似的组件(其实我谷歌了半个小时都没有找到符合要求的基础
1.什么是动态查询?
从多个查询条件中随机选择若干个组合成一个DQL语句进行查询,这一过程叫做动态查询。
2.动态查询的难点
可供选择的查询条件多,组合情况多,难以一一列举。
3.最终查询语句的构成
一旦用户向查询条件中输入数据,该查询条件就成为最终条件的一部分。
二 基本原理
1.SQL基本框架
无论查询条件如何,查询字段与数据库是固定不变的,这些固定不变的内容构成SQL语句的基本框架,如
"/dynamicQueryServlet" DynamicQueryServlet serialVersionUID = 1L "text/html;charset=UTF-8"String name = request.getParameter("name"= request.getParameter("sex"= request.getParameter("age"= request.getParameter("depNo"String baseSQL = "select name,sex,age,depNo from tb_employee where 1=1"= StringBuilder();List<String> params = ArrayList<String>" and name=? ""name," + name);" and sex=? ""sex," +" and age=? ""age," +" and depNo=?""depNo," += = = = == ( i = 0; i < params.size(); i++== str.split(","); (arr[0].equals("age" a = Integer.parseInt(arr[1+ 1+ 1, arr[1== res.getString("name"= res.getString("sex" targetAge = res.getInt("age"= res.getString("depNo"= "name=" + targetName + "--" + "sex=" + targetSex + "--" + "age=" + targetAge + "--" + "depNo=" ++ "<br>" (ClassNotFoundException | (res != (ps != (conn != = length = (length == 0"查询为空"+ "<br>" + (str == | str.equals("" Connection getConnection() "com.mysql.jdbc.Driver" DriverManager.getConnection("jdbc:mysql://localhost:3366/test01", "root", "123"以上就是JDBC是如何实现动态查询的?的详细内容,更多请关注微课江湖其它相关文章!