数据库相关类——DataSource、C3p0、QueryRunner、JbdcTemplate
DataSource
JDBC2.0提供了DataSource接口,它定义了数据库连接的规范。它负责建立与数据库的连接。当在应用程序中访问数据库时,不必编写连接数据库的代码,直接引用DataSource获取数据库的连接对象即可。
相关包
C3P0、Druid 等包实现了DataSource接口,使用户可以通过简单的方法获取DataSource实例化对象。
DataSource获取数据库连接
DataSource建立多个数据库连接,这些数据库连接会保存在数据库连接池中,当需要数据库连接时,直接从数据库连接池中获取空闲的数据库连接,当程序访问数据库结束时,数据库连接会放回数据库连接池中。
QueryRunner
SUN公司推出了Java DataBase Connectivity(JDBC) 接口,它定义了数据库访问的标准规范。通过它可以对数据库执行SQL语句,实现对数据库的CRUD操作。
QueryRunner实现了对JDBC进行了简单的封装,它通过获取DataSource获得数据库的连接,然后用户可以通过它简便地实现对数据库的CRUD操作。
所属Jar包
org.apache.commons.dbutils.QueryRunner;
QueryRunner初始化方法
1. 通过获取DataSource进行初始化
QueryRunner runner2=new QueryRunner(dataSource);
2. 在每次执行SQL语句时,获取Connection连接进行初始化
query.query(dataSource.getConnection(),"select * from account", new BeanListHandler<>(Account.class));
QueryRunner实现CRUD
API:
查询:public <T> T query(String sql, ResultSetHandler<T> rsh, Object...params) throws SQLException
更新:public int update(String sql, Object...params)
ResultSetHandle接口:将查询的数据封装为实体类对象。
BeanListHandler类:实现了ResultSetHandler接口,可以将多个结果封装在实体类类型的List集合中。
BeanHandler类:实现了ResultSetHandler,将一个查询结果封装在实体类对象中。
示例:
1.查询多条信息
List<Account> list=query.query("select * from account", new BeanListHandler<>(Account.class));
2.通过id,查询一条信息
Account account=query.query("select * from account where id=?", new BeanHandler<>(Account.class), id);
3.插入数据
query.update("insert into account(name, money) values(?,?)", account.getName(), account.getMoney());
4.更新数据
query.update("update account set name=?, money=? where id=?", account.getName(),account.getMoney(),account.getId());
5.根据id删除数据
query.update("delete from account where id=?", id);
JdbcTemplate
它是 spring 框架中提供的一个对象,是对原始 Jdbc API 对象的简单封装,以实现对数据库的CRUD操作。
JdbcTemplate依赖的包
mysql.mysql-connector-java.8.0.16
org.springframework.spring-context.5.2.9.RELEASE
org.springframework.spring-test.5.2.9.RELEASE
org.springframework.spring-jdbc.5.2.9.RELEASE
org.springframework.spring-tx.5.2.9.RELEASE