DBUtils封装了对JDBC的操作,简化了JDBC的操作,是java编程中数据库操作的实用工具。
三个核心:
QueryRunner中提供了对sql语句操作的API。
- QueryRunner(DataSource ds),提供数据源(连接池),DBUtils底层自动维护连接connection。
- update(String sql,Object... params),执行更新数据。
- query(String sql,ResultSetHandler
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(); } } }