DBUtils封装了对JDBC的操作,简化了JDBC的操作,是java编程中数据库操作的实用工具。
三个核心:
QueryRunner中提供了对sql语句操作的API。
- QueryRunner(DataSource ds),提供数据源(连接池),DBUtils底层自动维护连接connection。
- update(String sql,Object... params),执行更新数据。
- query(String sql,ResultSetHandler<T>rsh,Object...params),执行查询。
- ResultSetHandler接口,用于定义select操作后,封装结果集。(在下面的案例中有提现)。
DBUtils类,这是一个工具类,定义了关闭资源与事务处理的方法。
- closeQuietly(Connection conn)关闭连接,如果有异常,使用try进行处理。
- commitAndCloseQuietly(Connection conn)提交并关闭连接。
- rollbackAndCloseQuietly(Connection conn)回滚并关闭连接。
基本步骤
1.创建核心类QueryRunner
2.编写SQL语句
3.为占位符设置值
4.执行操作
案例
注意:案例使用到了C3P0连接池,不会的小伙伴请参考小编以前的文章哦。
- 添加操作
public void testAddUser() {
try {
//1.创建核心类QueryRunner
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
//2.编写SQL语句
String sql = "insert into users values(null,?,?)";
//3.为占位符设置值
Object[] params = {"12","34"};
//4.执行添加操作
int rows = qr.update(sql,params);
if (rows>0) {
System.out.println("添加成功");
}else {
System.out.println("添加失败");
}
} catch (SQLException e) {
e.printStackTrace();
}
}
- 修改操作
public void testUpdateUserById() {
try {
//1.创建核心类QueryRunner
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
//2.编写SQL语句
String sql = "update users set upwd = ? where uid = ?";
//3.为占位符设置值
Object[] params = {"1212",1};
//4.执行修改操作
int rows = qr.update(sql,params);
if(rows>0) {
System.out.println("修改成功");
}else {
System.out.println("修改失败");
}
} catch (SQLException e) {
e.printStackTrace();
}
}
- 删除操作
public void testDeleteUserById() {
try {
//1.创建核心类QueryRunner
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
//2.编写SQL语句
String sql = "delete from Users where uid = ?";
//3.为占位符设置值
Object[] params = {2};
//4,执行删除操作
int rows = qr.update(sql,params);
if (rows>0) {
System.out.println("删除成功");
}else {
System.out.println("删除失败");
}
} catch (SQLException e) {
e.printStackTrace();
}
}
- 查询操作(种类较多)
public class TestDBUtils2{
/**
* 查询所有用户方法
*/
@Test
public void testQueryAll() {
try {
//1,获取核心类queryRunner
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
//2.编写sql语句
String sql = "select * from users";
//3.执行结果查询
List<User> users = qr.query(sql, new BeanListHandler<User>(User.class));
//4.对结果集集合进行遍历
for(User user : users) {
System.out.println(user.getUname()+"---"+user.getUpwd());
}
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 根据id查询用户
*/
@Test
public void testQueryUserById() {
try {
//1.获取核心类queryRunner
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
//2.编写sql语句
String sql = "select * from users where uid = ?";
//3.为占位符设置值
Object[] params = {1};
//4.执行查询操作
User user = qr.query(sql, new BeanHandler<User>(User.class),params);
//5.输出结果
System.out.println(user.getUname()+"---"+user.getUpwd());
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 查询用户的数量
*/
@Test
public void testQueryCount() {
try {
//1.获取核心类queryRunner
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
//2.编写sql语句
String sql = "select count(*) from users";
//3.执行查询语句
Long count = (Long)qr.query(sql, new ScalarHandler());
//4.输出结果
System.out.println(count);
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 查询所有用户
*/
@Test
public void testQueryAll1() {
try {
//1.获取核心类
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
//2.编写sql语句
String sql = "select * from users";
//3.执行查询操作
List<Map<String, Object>> list = qr.query(sql, new MapListHandler());
//4.对结果集进行遍历
for (Map<String, Object> map : list) {
System.out.println(map);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
/**
* 查询所有用户
*/
@Test
public void testQueryAll2() {
try {
//1.获取核心类queryRunner
QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
//2,编写sql
String sql = "select * from users";
//3.执行查询操作
List<Object> List = qr.query(sql,new ColumnListHandler("uname"));
//4.对结果集进行遍历
for (Object object : List) {
System.out.println(object);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}