今天写JDF框架代码,写到了bean的SQL加工以及变量绑定。就写了个方法,希望大家喜欢。用过的就过来打酱油,没用过的,就过来俯卧撑一把吧。
我们写JAVA代码,在操作数据库用JDBC的方法的时候,会用到SQL的绑定变量。
我们大家一般的做法是用"?" ,然后按"?"的排序给予赋值,但是如果是复杂的SQL,或者说一个好好的SQL,需要在中间加一个条件,那么对应的后面的付值变量都要改动了。例如。
SELECT NAME,ID,? FROM USER WHERE CODE=?
PreparedStatement.setString(1, "AGE");
PreparedStatement.setString(2, "ADMIN");
这里我们绑定了两个变量,一个是动态读取列,一个是条件,如果现在我们由于业务需要,需要再多读一列。
那下面的SQL是这样,那么这里给CODE绑定的变量赋值的索引就要改变了。
SELECT NAME,ID,?,? FROM USER WHERE CODE=?
PreparedStatement.setString(1, "AGE");
PreparedStatement.setString(3, "ADMIN");
PreparedStatement.setString(2, "FLAG");
这里我们可以发现,需要把CODE的赋值的索引给改掉,如果是复杂的SQL,那改动更多,那怎么办呢?
下面我们用这种类型的绑定来做,也就是换个思路,把绑定的变量用name给替换下,通过程序自动排序。
SELECT NAME,ID,?,? FROM USER WHERE CODE=?
替换为
SELECT NAME,ID,:CLUM1,:CLUM2 FROM USER WHERE CODE=:CODE
我们在赋值的时候,做个MAP
HashMap map = new HashMap();
map.put("CODE",new Long(2));
map.put("CLUM1","AGE");
map.put("CLUM2","STATE");
然后写个绑定变量的方法,这里的顺序问题就无所谓了,代码如下:
这里唯一的小要求就是SQL的绑定变量 :xx 后面要留个空格,便于正则表达式寻找。这里希望谁能给我个好的正则表达式,这样就可以不用这个了。
上面的程序,我们运行,输出结构如下:
ConnectionId=100000
ConnectionId=100000 Preparing Statement: INSERT INTO PERSON(PERSON_ID,AGE,FIRSTNAME,LASTNAME,STATE) VALUES(? ,? ,?,?,?)
邦定变量的值:PERSON_ID=2
邦定变量的值:AGE=22
邦定变量的值:FIRSTNAME=张三
邦定变量的值:FIRSTNAME=张三
邦定变量的值:STATE=1
PreparedStatementId=100001 Executing Statement: INSERT INTO PERSON(PERSON_ID,AGE,FIRSTNAME,LASTNAME,STATE) VALUES(? ,? ,?,?,?)
PreparedStatementId=100001 Parameters: [2, 22, 张三, 张三, 1]
PreparedStatementId=100001 Types: [java.lang.Long, java.lang.Long, java.lang.String, java.lang.String, java.lang.Long]
大家看看,是不是很简单呢?而且不用为那个索引头疼了。
原创文章,请尊重版权噢:
http://http://blog.csdn.net/keyboardsun
作者KEYBOARDSUN
分享到:
相关推荐
java jdbc读取FoxPro数据库数据,完整类以及FoxPro数据库数据遍历。JDBC读取FoxPro数据库数据
java使用jdbc将数据库数据导出到csv文件
(1)熟练掌握JDBC操作数据库的整个过程; (2)利用预处理语句操作数据库; (3)掌握可滚动和可更新的结果集的基本操作方法; (4)理解JDBC中实现事务处理的基本方法; (5)理解数据库连接池的基本原理和思想,...
JAVA数据库编程JDBC 与 Java数据库接口JDBC入门基础讲座 与 JDBC API数据库编程实作教材-程序设计-JAVA JDBC全压缩包.rar
此doc文档详细介绍了Java程序通过JDBC连接SQLServer2000数据库的全过程和连接代码
在Java语言中,JDBC(Java DataBase Connection)是应用程序与数据库沟通的桥梁
程序实现了使用Java语言编程实现对数据库的访问,所有的SQL操作均在自己建立的新库里进行,数据库建议选用学生课程数据库,可以选择进行创建、插入、查询、删除和更新等操作,其中查询操作可以按学号、姓名、专业...
java中的JDBC纯驱动方式连接Oracle数据库.docx
java jdbc数据库连接 java jdbc数据库连接 java jdbc数据库连接
JAVA-JDBC连接数据库(查询_添加_修改_删除)
使用JAVA实现数据库编程宠物商店项目案例数据库表代码
JDBC读取数据库元数据,生成JAVA实体类
JDBC是一种“开放”的方案,它为数据库应用开发人员﹑数据库前台工具开发人员提供了一种标准的应用程序设计接口,使开发人员可以用纯Java语言编写完整的数据库应用程序。JDBC提供两种API,分别是面向开发人员的API和...
java 通过JDBC对数据库进行查询 java 通过JDBC对数据库进行查询
JAVA数据库编程JDBC
JDBC编程!java中的数据库连接!源代码!适合初学者!
JDBC与Java数据库程序设计(pdg格式) JDBC与Java数据库程序设计(pdg格式)
主要介绍了java使用JDBC动态创建数据表及SQL预处理的方法,涉及JDBC操作数据库的连接、创建表、添加数据、查询等相关实现技巧,需要的朋友可以参考下