DBUtils基础

DBUtilsjava编程中的数据库操作实用工具,小巧简单实用。

DBUtils封装了对JDBC的操作,简化了JDBC操作,可以少写代码。

Dbutils三个核心功能介绍

   QueryRunner中提供对sql语句操作的API.

  ResultSetHandler接口,用于定义select操作后,怎样封装结果集.

   DbUtils类,它就是一个工具类,定义了关闭资源与事务处理的方法

1.1 QueryRunner核心类

l update(Connection conn, String sql, Object... params) ,用来完成表数据的增加、删除、更新操作

l query(Connection conn, String sql, ResultSetHandler<T> rsh, Object... params) ,用来完成表数据的查询操作

1.2 QueryRunner实现添加、更新、删除操作

l update(Connection conn, String sql, Object... params) ,用来完成表数据的增加、删除、更新操作

1.2.1 添加

public void insert(){

try {

//获取一个用来执行SQL语句的对象   QueryRunner

QueryRunner qr = new QueryRunner();

 

String sql = "INSERT INTO zhangwu(name,money,parent) VALUES(?,?,?)";

Object[] params = {"股票收入", 5500, "收入"};

Connection conn = JDBCUtils.getConnection();

int line = qr.update(conn,sql,params);// 用来完成表数据的增加、删除、更新操作

//结果集处理

System.out.println("line = " + line);

 

} catch (SQLException e) {

throw new RuntimeException(e);

}

}

1.2.2 更新

public void update(){

try {

//创建一个QueryRunner对象,用来完成SQL语句的执行

QueryRunner qr = new QueryRunner();

//执行SQL语句

String sql = "UPDATE zhangwu SET money = money+1000 WHERE name=?";

Object[] params = {"股票收入"};

Connection conn = JDBCUtils.getConnection();

int line = qr.update(conn, sql, params);

//结果集的处理

System.out.println("line="+line);

 

} catch (SQLException e) {

throw new RuntimeException(e);

}

}

1.2.3 删除

public void delete(){

try {

//创建一个QueryRunner对象,用来完成SQL语句的执行

QueryRunner qr = new QueryRunner();

//执行SQL语句

String sql = "DELETE FROM zhangwu WHERE name = ?";

Object[] params = {"股票收入"};

Connection conn = JDBCUtils.getConnection();

int line = qr.update(conn, sql, params);

//结果集的处理

System.out.println("line="+line);

 

} catch (SQLException e) {

throw new RuntimeException(e);

}

}

1.3 QueryRunner实现查询操作

l query(Connection conn, String sql, ResultSetHandler<T> rsh, Object... params),用来完成表数据的查询操作

1.3.1 ResultSetHandler结果集处理类

ArrayHandler

将结果集中的第一条记录封装到一个Object[]数组中,数组中的每一个元素就是这条记录中的每一个字段的值

ArrayListHandler

将结果集中的每一条记录都封装到一个Object[]数组中,将这些数组在封装到List集合中。

BeanHandler

将结果集中第一条记录封装到一个指定的javaBean中。

BeanListHandler

将结果集中每一条记录封装到指定的javaBean中,将这些javaBean在封装到List集合中

ColumnListHandler

将结果集中指定的列的字段值,封装到一个List集合中

ScalarHandler

它是用于单数据。例如select count(*) from 表操作。

MapHandler

将结果集第一行封装到Map<String,Object>集合中,Key 列名, Value 该列数据

MapListHandler

将结果集每一行封装到List<Map<String,Object>>集合中,Key 列名, Value 该列数据,Map集合存储到List集合

1.3.2 JavaBean

JavaBean就是一个类,在开发中常用封装数据。具有如下特性

  1. 需要实现接口:java.io.Serializable ,通常实现接口这步骤省略了,不会影响程序。
  2. 提供私有字段:private 类型 字段名;
  3. 提供getter/setter方法:
  4. 提供无参构造

/*

 * 账务类

 */

public class ZhangWu {

private int id;

private String name;

private double money;

private String parent;

 

public ZhangWu() {

super();

}

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public double getMoney() {

return money;

}

public void setMoney(double money) {

this.money = money;

}

public String getParent() {

return parent;

}

public void setParent(String parent) {

this.parent = parent;

}

 

@Override

public String toString() { //该方法可以省略

return "ZhangWu [id=" + id + ", name=" + name + ", money=" + money + ", parent=" + parent + "]";

}

}

1.3.3 ArrayHandlerArrayListHandler查询

l ArrayHandler将结果集中的第一条记录封装到一个Object[]数组中,数组中的每一个元素就是这条记录中的每一个字段的值

public class ArrayHandlerDemo {

 

@Test

public void method(){

try {

//获取QueryRunner对象

QueryRunner qr = new QueryRunner();

//执行SQL语句

String sql = "SELECT * FROM zhangwu";

Object[] params = {};

Connection conn = JDBCUtils.getConnection();

Object[] objArray = qr.query(conn, sql, new ArrayHandler(), params);

//结果集的处理

System.out.println( Arrays.toString(objArray) );

 

conn.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

}

 

l ArrayListHandler将结果集中的每一条记录都封装到一个Object[]数组中,将这些数组在封装到List集合中。

public class ArrayListHandlerDemo {

@Test

public void method(){

try {

//获取QueryRunner对象

QueryRunner qr = new QueryRunner();

//执行SQL语句

String sql = "SELECT * FROM zhangwu WHERE money>?";

Object[] params = {2000};

Connection conn = JDBCUtils.getConnection();

 List<Object[]> list = qr.query(conn, sql, new ArrayListHandler(), params);

//结果集的处理

 for (Object[] objArray : list) {

System.out.println(  Arrays.toString(objArray) );

}

 

conn.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

}

1.3.4 BeanHandlerBeanListHandler查询

l BeanHandler 将结果集中第一条记录封装到一个指定的javaBean中。

public class BeanHandlerDemo {

@Test

public void method(){

try{

//获取QueryRunner

QueryRunner qr = new QueryRunner();

//执行SQL语句

String sql = "SELECT * FROM zhangwu WHERE id=?";

Object[] params = {1};

Connection conn = JDBCUtils.getConnection();

ZhangWu zw = qr.query(conn, sql, new BeanHandler<ZhangWu>(ZhangWu.class), params);

//结果集处理

System.out.println(zw);

 

conn.close();

} catch(SQLException e){

throw new RuntimeException(e);

}

}

}

 

l BeanListHandler 将结果集中每一条记录封装到指定的javaBean中,将这些javaBean在封装到List集合中

public class BeanListHandlerDemo {

@Test

public void method(){

try{

//获取QueryRunner

QueryRunner qr = new QueryRunner();

//执行SQL语句

String sql = "SELECT * FROM zhangwu WHERE money>?";

Object[] params = {2000};

Connection conn = JDBCUtils.getConnection();

List<ZhangWu> list = qr.query(conn, sql, new BeanListHandler<ZhangWu>(ZhangWu.class), params);

//结果集处理

for (ZhangWu zw : list) {

System.out.println(zw);

}

 

conn.close();

} catch(SQLException e){

throw new RuntimeException(e);

}

}

}

1.3.5 ColumnListHandlerScalarHandler查询

l ColumnListHandler将结果集中指定的列的字段值,封装到一个List集合中

public class ColumnListHandlerDemo {

@Test

public void method(){

try {

//获取QueryRunner对象

QueryRunner qr = new QueryRunner();

//执行SQL语句

String sql = "SELECT name FROM zhangwu WHERE money>?";

Object[] params = {2000};

Connection conn = JDBCUtils.getConnection();

List<String> list = qr.query(conn, sql, new ColumnListHandler<String>(), params);

//结果集的处理

for (String str : list) {

System.out.println(str);

}

 

conn.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

}

 

l ScalarHandler它是用于单数据。例如select count(*) from 表操作。

public class ScalarHandlerDemo {

@Test

public void method(){

try {

//获取QueryRunner对象

QueryRunner qr = new QueryRunner();

 

//执行SQL语句

String sql = "SELECT MAX(money) FROM zhangwu";

Object[] params = {};

Connection conn = JDBCUtils.getConnection();

Double max = qr.query(conn, sql, new ScalarHandler<Double>(), params);

//结果集的处理

System.out.println("max=" + max);

 

conn.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

}

 

DBUtils基础

上一篇:SQL数据库(第二章)


下一篇:(转)Sql Server 保留几位小数的两种做法