56,数据库工具包DBUtils介绍以及使用示例,阿克苏

频道:天天彩票下载安卓版 日期: 浏览:223

曾经写过一个有关DBUtil的简介和分页处理,参阅衔接:DBUtil及分页完成

1.概述

DBUtils封装了对JDBC的操作,简化了JDBC操作,能够少写代码。在不运用结构的情况下,运用DBUtils的概率非常大。

DBUtils三个中心功用介绍:

  • QueryRunner类,供给对sql句子操作的API
  • ResultSetHandler接口,用于界说select操作后,怎样封装成果集
  • DbUtils类,它便是一个东西类,界说了封闭资源与事务处理的办法

2.QueryRunner中心类

  • QueryRunner(Database ds),供给了数据源(衔接池),DBUtils底层主动保护connection
  • update(String sql, Object... params),履行更新数据。(增、删、改)
  • query(String sql, Resu我斗鹰归队ltSetHandler rsh, Object... params),履行查询

3.ResultSetHandler成果处理集类

咱们qq号码免费请求知道在履行select句子之后得到的是ResultSet,然后咱们还需求对ResultSet进行转化,得到终究咱们想要的数据。你或许期望把ResultSet的数据放到一个List中,也或许想把数据放到一个Map中,或是一个Bean中。

DBUtils供给了一个接口ResultSetHandler,它便是用来ResultSet转化成方针类型的东西。你能够自己去完成这个接口,把ResultSet转化成你想要的类型。

DBUtils供给了很多个ResultSetHandler接口的完成,这些完成现已根本够用了,咱们一般不必自芫荽己去完成ResultSet接口了。

  • MapHandler:单行处理器!把成果集转化成Map,其间列名为键
  • MapListHandler:多行处理器!把成果集转化成List>;
  • BeanHandler:单行处理小米笔记本器!把成果集转化成Bean,该处理器需求Class参数,即Bean的类型;
  • BeanListHandler:多行处理器!把成果集转化成List
  • ColumnListHandler:多行单列处理器!把成果集转化成List

    ,运用ColumnListHandler时需求指定某一列的称号或编号,例如:new ColumListHandler56,数据库东西包DBUtils介绍以及运用示例,阿克苏(“name”)表明把name列的数据放到List中。

  • Scal56,数据库东西包DBUtils介绍以及运用示例,阿克苏arHandler:单行单列处理器!把成果集转化成Object。一般用于调集查询,例如select count(*) from tab_student。

Map处理器:

每一条记载作为一个Map,Map的key是字段称号。

Bean处理器 :

有必要搞一个javaBean。

Column处理器:

Scalar处理器:

(4)DbUtils东西类

  • closeQuietly(Connection conn) 封闭衔接,假如有反常try后不抛
  • commitAndCloseQuietly(Connection conn) 提交并封闭衔接
  • rollbackAndCloseQuietly(Connection conn) 回滚并封闭衔接

3. 运用示例-增修正查

Bean目标类User:

public class User {
private int uid;
private String uname;
private String upassword;
public User() {
}
public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public String getUpassword() {
return upassword;
}
public void setUpassword(String upassword) {
this.upassword = upassword;
}
}

数据库衔接东西类

import java.sql.Connection;
import java.sql.SQLException;
import javax.sql.DataSource;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class C3P0Utils {元宵节放假
private static ComboPooledDataSource dataSource = new ComboPooledDataSource("itheima");
public static DataSource getDataSource() {
return dataSource;
}
public static Connection getConnection() {
try {
return dataSource.getConnection();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}

增修正处理:

import java.挖机视频sql.SQLException;
import org.apache.commons.dbutils.QueryRunner;
import org.junit.Test;
import cn.itheima.jdbc.utils.C3P0Utils;
/**
* 测验DBUtils东西类的增修正操作
*
*/
public class TestDBUtils1 {
/**
* 增加一切用户办法
*/
@Test
public void testAddUser() {
try {
// 1.创立中心类QueryRunn生姜er
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
// 2.编写SQL句子
String sql = "insert into user values(null,?,?)";
// 3.为占位符设置值
Object[] params = { "薛淮", "赵耿" };
// 4.履行增加操作
int rows = qr.update(sql, params);
if (rows > 0) {
System.out.println("增加成功!");
} else {
System.out.println("增加失利!");
}
} catch (SQLExceptio56,数据库东西包DBUtils介绍以及运用示例,阿克苏n e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 依据id修正用户办法
*
*/
@Test
public void testUpdateUserById() {
try {
// 1.创立中心类QueryRunner
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
// 2.编写SQL句子
String sql = "update user秀色秀场 set upassword=? where uid=?";
// 3.为站位符设置值
O蛇灵红霜bject[] params = { "xxx", 21 };
// 4.履行增加操作
int rows = qr.update(sql, params);
if (rows > 0) {
System.out.println("修正成功!");
} else56,数据库东西包DBUtils介绍以及运用示例,阿克苏 {
System.于连式out.println("修正失利!");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace(remember);
}
}
/源**
* 依据id删去用户办法
*/
@Test
public void testDeleteUserById() {
try {
// 1.创立中心类QueryRunner
QueryRunner qr = new QueryRunner(C3P0哆嗦功教育视频Utils.getDataSource());
// 2.编写SQL句子
String sql = "delete fr56,数据库东西包DBUtils介绍以及运用示例,阿克苏om user where uid=?";
// 3.为站位符设置值
Object[] params = {19};
// 4.履行增加操作
int rows = qr.update(sql, params);
if (rows > 0) {
System.out.println("删去成功!");
} else {
System.out.println("删去失利!");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
TestDBUtils1.java --增加、删去、更新

查询示例:

import java.sql.SQLException;
import java.util.List;
import java.util.Map;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.ColumnListHandler;
import org.apache.commons.dbutils.handlers.MapListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;
import org.junit.Test;
import cn.itheima.domain.User;
import cn.itheima.jdbc.utils.C3P0Utils;
/**
* 测验DBUtils查询操作
*
*/
public class TestDBUtils2 {
/*
* 查询一切用户办法
*/
@Test
public void testQueryAll() {
try {
// 1.获取中心类queryRunner
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
// 2.编写sql句子
String sql = "select * from user";
// 3.履行查询操作
List users = qr.query(sql, new BeanListHandler(User.class));
// 4.对成果集调集进行遍历
for (User user : users) {
System.out.println(user.getUname() + " : " + user.getUpassword());
}
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
/*
* 依据id查询用户办法
*/
@Test
public void testQueryUserById() {
try {
// 1.获取中心类queryRunner
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
// 2.编写sql句子
String sql = "select * from user where uid=?";
//3.为占位符设置值
Object[] params = {21};
// 4.履行查询操作
User user = qr.query(sql,官路美女 new BeanHandler(Usexcitinger.class), params);
System.out.println(user.getUname() + " : " + user.getUpassword());
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
/*
* 依据一切用户的总个数
*/
@Test
public void testQueryCount() {
try {
// 1.获取中心类queryRunner
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
// 2.编写sql句子
String sql = "select count(*) from tbl_user";
// 4.履行sure查询操作
Long count = (Long) qr.query(sql, new ScalarHandler());
System.out.println(count);
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
/*56,数据库东西包DBUtils介绍以及运用示例,阿克苏
* 查询一切用户办法
*/
@Test
public void testQueryAll1() {
try {
// 1.获取中心类quer柯文哲yRunner
QueryRunner qr = new QueryRunner(C3P0Uti吉利ls.getDataSource());
// 2.编写sql句子
String sql = "select * from user";
// 3.履行查询操作
List> list = qr.query(sql, new MapListHandler());
// 4.对成果集调集进行遍历
for (Map map : list) {
System.out.println(map);
}
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
/*
* 查询一切用户办法
*/
@Test
public void testQueryAll2() {
try 56,数据库东西包DBUtils介绍以及运用示例,阿克苏{
// 1.获取中心类queryRunner
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
// 2.编写sql句子
String sql = "select * from user";
// 3.履行查询操作
List

list = qr.query(sql, new ColumnListHandler("uname"));
// 4.对成果集调集进行遍历
for (Object object : list) {
System.out.println(object);
}
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}
//TestDBUtils2.java --查询操作

【留意】:DBUtils在创立QueryRunner时传入dataSource目标,每次在履行完之后都会主动封闭Connection衔接目标。okooo(就相当于把conn交给dbutils管理了,他会帮咱们关掉)

假如没有传入dataSource的话,需求手动封闭。

热门
最新
推荐
标签