- MySQL---数据库从入门走向大神系列(十五)-Apache的
- MySQL---数据库从入门走向大神系列(一)-基础入门
- MySQL---数据库从入门走向大神系列(十四)-ComboPo
- MySQL---数据库从入门走向大神系列(十七)-JavaWeb
- MySQL---数据库从入门走向大神系列(十六)-JavaWeb
- MySQL---数据库从入门走向大神系列(十三)-BasicDa
- MySQL---数据库从入门走向大神系列(十)-Connecti
- MySQL---数据库从入门走向大神系列(五)-存储过程
- MySQL---数据库从入门走向大神系列(十一)-Java获取数
- MySQL---数据库从入门走向大神系列(七)-Java访问数据
DBUtils简介:
commons-dbutils 是 Apache 组织提供的一个开源 JDBC工具类库,它是对JDBC的简单封装,学习成本极低,并且使用dbutils能极大简化jdbc编码的工作量,同时也不会影响程序的性能。因此dbutils成为很多不喜欢hibernate的公司的首选(嗯~商业竞争…..)。
commons-dbutilsAPI介绍:
QueryRunner类讲解
该类简单化了SQL查询,它与ResultSetHandler组合在一起使用可以完成大部分的数据库操作,能够大大减少编码量。
QueryRunner类提供了两个构造方法:
1、默认的构造方法
2、需要一个 javax.sql.DataSource 来作参数的构造方法。
QueryRunner类的主要方法
public Object query(Connection conn, String sql, Object[] params, ResultSetHandler rsh) throws SQLException:
执行一个查询操作,在这个查询中,对象数组中的每个元素值被用来作为查询语句的置换参数。该方法会自行处理 PreparedStatement 和 ResultSet 的创建和关闭。
public Object query(String sql, Object[] params, ResultSetHandler rsh) throws SQLException:
几乎与第一种方法一样;唯一的不同在于它不将数据库连接提供给方法,并且它是从提供给构造方法的数据源(DataSource) 或使用的setDataSource 方法中重新获得 Connection。
public Object query(Connection conn, String sql, ResultSetHandler rsh) throws SQLException : 执行一个不需要置换参数的查询操作。
public int update(Connection conn, String sql, Object[] params) throws SQLException
用来执行一个更新(插入、更新或删除)操作。
public int update(Connection conn, String sql) throws SQLException:
用来执行一个不需要置换参数的更新操作。
JAR包准备:
commons-dbutils-1.6.jar(基本包):
http://commons.apache.org/proper/commons-dbutils/download_dbutils.cgi
commons-dbutils-ext.jar(扩展包):
https://github.com/chenhaoxiang/Java/tree/master/Database-support-package
代码演示:
首先准备数据库:
Connection池是用的c3p0Pool类的:
http://blog.csdn.net/qq_26525215/article/details/52212260
不使用dbUtils工具的数据库查询代码实现
@Test//原来不使用dbUtils工具的数据库查询代码实现
结果:
使用dbUtils工具的数据库查询代码实现
BeanListHandler返回类型为List<>
MapListHandler返回类型为List<Map<String,Object>>
而且注意,这个与前面的依赖person类的不同,这个不依赖person类,
也就是person的成员变量名可以和数据库的字段名取不同。
DbUtils工具的使用演示: 增删改–用update()
只演示 增,删和改类似:
如果使用prepareStatement方式,注意参数个数或类型 与 “?”号必须匹配,否则会出异常 。
为 增添加事务处理:
注意,实现事务功能时,要传入con对象,且多条语句共处一个事务时,要传入同一个con对象。但如果不实现事务功能,可以不传入con对象。
查询的结果集封装
封装成BeanList
1. @Test
2. public void query2() throws SQLException{
3. QueryRunner run = new QueryRunner(C3p0Pool.getDataSource());
4. //封装成BeanList: 如果值对象中的属性名和表中的字段名不一致,那么该属性的值返回的是null
5. //解决方法是采用别名,或者修改set**/get**名
6. List<Person> persons = run.query("select id,name,address addr,age from person ",new BeanListHandler<Person>(Person.class) );//用属性名 当 字段别名
7. for(Person p:persons){
8. System.out.println(p);
9. }
10. }
封装成MapList
封装成BeanList—查询带参数
演示批处理功能
演示扩展包commons-dbutilss-ext.jar的功能
封装成BeanList—直接通过JavaBean的字节码查询所有
注意,下面的用法要生效,必须给值对象添加注解@Table(value = “person”)
封装成JavaBean—直接通过JavaBean对象存储进数据库
注意:使用此功能时,需要在JavaBean对象中的每个成员变量上都加上@Column注解!!!
还有注意这里的JavaBean中的addr与数据库的字段名address是不同的,所以需要在JavaBean对象的addr属性上加上一句注解:
@Column(value=”address”)
Person.java
---------------------
作者:谙忆
来源:CSDN
原文:https://blog.csdn.net/qq_26525215/article/details/52212571
版权声明:本文为博主原创文章,转载请附上博文链接!
网友评论