Java数据库DBUtils框架使用介绍
程序员文章站
2022-03-09 07:52:20
一、JavaBean就是一个类,在开发中常用语封装数据。具有如下特性
1. 需要实现接口:java.io.Serializable,通常偷懒省略了。
2. 提供私有字段:pri...
一、JavaBean就是一个类,在开发中常用语封装数据。具有如下特性
1. 需要实现接口:java.io.Serializable,通常偷懒省略了。
2. 提供私有字段:private类型字段名;
3. 提供getter/setter方法:(在JavaBean类中必须实现get、set方法,否则拿不到数据)
4. 提供无参构造
二、DBUtils三个核心功能介绍:
1) QueryRunner中提供对sql语句操作的API.
2) ResultSetHandler接口,用于定义select操作后,怎样封装结果集.
3) DBUtils类,它就是一个工具类,定义了关闭资源与事务处理的方法。
三、 QueryRunner核心类 QueryRunner(DataSource ds):提供数据源(连接池),DBUtils底层自动维护连接connection update(Stringsql, Object... params):执行更新数据 query(String sql, ResultSetHandler rsh, Object…params):执行查询
四、 ResultSetHandler结果集处理类
五、代码实现: 1、添加数据
2、修改数据:
3、查询数据并放在List集合中
5、用于单数据。例如select count(*) from表操作。
1. 需要实现接口:java.io.Serializable,通常偷懒省略了。
2. 提供私有字段:private类型字段名;
3. 提供getter/setter方法:(在JavaBean类中必须实现get、set方法,否则拿不到数据)
4. 提供无参构造
二、DBUtils三个核心功能介绍:
1) QueryRunner中提供对sql语句操作的API.
2) ResultSetHandler接口,用于定义select操作后,怎样封装结果集.
3) DBUtils类,它就是一个工具类,定义了关闭资源与事务处理的方法。
三、 QueryRunner核心类 QueryRunner(DataSource ds):提供数据源(连接池),DBUtils底层自动维护连接connection update(Stringsql, Object... params):执行更新数据 query(String sql, ResultSetHandler
四、 ResultSetHandler结果集处理类
ArrayHandler | 将结果集中的第一条记录封装到一个Object[]数组中,数组中的每一个元素就是 这条记录中的每一个字段的值 |
ArrayListHandler | 将结果集中的每一条记录都封装到一个Object[]数组中,将这些数组在封装到 List集合中。 |
BeanHandler | 将结果集中第一条记录封装到一个指定的javaBean中。 |
BeanListHandler | 将结果集中每一条记录封装到指定的javaBean中,将这些javaBean在封装到List 集合中 |
ColumnListHandler | 将结果集中指定的列的字段值,封装到一个List集合中 |
KeyedHandler | 将结果集中每一条记录封装到Map |
MapHandler | 将结果集中第一条记录封装到了 Map |
MapListHandler | 将结果集中每一条记录封装到了 Map |
ScalarHandler | 它是用于单数据。例如select count(*) from表操作。 |
五、代码实现: 1、添加数据
//添加数据 @Test public void addUser() throws SQLException{ //1、创建核心类QueryRunner QueryRunner qr = new QueryRunner(DBCPUtils.getDataSource()); //2、填写SQL语句 String sql = "insert into student values(null,?,?,?,?)"; //3、为占位符赋值: Object[] params = {"赵晓东","22","男","123456"}; //4、执行添加操作 int rows = qr.update(sql, params); if(rows >0){ System.out.println("Add Success!"); }else{ System.out.println("Add Failed"); } }
2、修改数据:
//修改数据 @Test public void Update() throws SQLException{ //1、第一种方式 // QueryRunner qr = new QueryRunner(DBCPUtils.getDataSource()); // String sql = "update student set passwd = ? where name = ?"; // Object[] params = {"123456","michong"};//将占位符的值放在数组中 // int rows = qr.update( sql, params); //2、第二种方式 QueryRunner qr = new QueryRunner(); String sql = "update student set passwd = ? where name = ?"; int rows = qr.update(DBCPUtils.getConnection(),sql,"12345678","michong"); if(rows > 0 ){ System.out.println("Update Success"); }else{ System.out.println("Update Failed"); } }
3、查询数据并放在List集合中
//全部查询,并且放在List集合中 @Test public void selectListALL() throws SQLException{ QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource()); String sql = "select * from student"; //获得结果集 List students = qr.query(sql, new BeanListHandler(Student.class)); System.out.println(students); } //单个查询 @Test public void selectOne() throws SQLException{ QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource()); String sql = "select * from student where id = ?"; //获得单个结果 Student student = qr.query(sql, new BeanHandler(Student.class),1); System.out.println(student); }4、查询数据并放在Map中
//单个查询,使用Map @Test public void selectMap() throws SQLException{ QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource()); String sql = "select * from student where id = ?"; Map query = qr.query(sql, new MapHandler(),1); Set> entrySet = query.entrySet(); for (Entry entry : entrySet) { System.out.print(entry.getKey()+":"); System.out.println(entry.getValue()); System.out.println("--------------------"); } } //多个查询,List> @Test public void selectMapAll() throws SQLException{ QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource()); String sql = "select * from student"; List> maps = qr.query(sql, new MapListHandler()); System.out.println(maps); }
5、用于单数据。例如select count(*) from表操作。
@Test public void selectSingleData() throws SQLException{ QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource()); String sql = "select count(*) from student"; //获得查询的数目 long size = (long)qr.query(sql, new ScalarHandler()); System.out.println(size); }
上一篇: 【js工具函数】判断浏览器和平台,使用前测试一下新版浏览器
下一篇: iOS单例的创建与销毁
推荐阅读
-
Python的Django框架可适配的各种数据库介绍
-
flask框架使用orm连接数据库的方法示例
-
Python的Bottle框架的一些使用技巧介绍
-
Java规则引擎Easy Rules的使用介绍
-
Python的Django框架中使用SQLAlchemy操作数据库的教程
-
纯Python开发的nosql数据库CodernityDB介绍和使用实例
-
php使用sql数据库 获取字段问题介绍
-
python中使用mysql数据库详细介绍
-
Laravel框架使用monolog_mysql实现将系统日志信息保存到mysql数据库的方法
-
Android Studio 通过一个登录功能介绍SQLite数据库的使用