美文网首页
MySQL---数据库从入门走向大神系列(十五)-Apache的

MySQL---数据库从入门走向大神系列(十五)-Apache的

作者: 匆匆那年过客 | 来源:发表于2019-03-21 10:31 被阅读0次

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

版权声明:本文为博主原创文章,转载请附上博文链接!

相关文章

网友评论

      本文标题:MySQL---数据库从入门走向大神系列(十五)-Apache的

      本文链接:https://www.haomeiwen.com/subject/imwfvqtx.html