DbUtils
下载地址:apache-DbUtils
DbUtils库是一小类,旨在简化 JDBC的使用。JDBC资源清理代码是普通的,容易出错的工作,因此这些类从代码中抽象出了所有清理任务,从而使您首先有了真正想对JDBC进行的工作:查询和更新数据。
使用DbUtils的一些优点是:
- 没有资源泄漏的可能性。
- 更加清晰的持久性代码。
- 自动从ResultSets填充JavaBean属性。
核心接口
1.DbUtils
举例
提供一些close方法
static void close(Connection conn)
Close a Connection, avoid closing if null.
static void close(ResultSet rs)
Close a ResultSet, avoid closing if null.
closeQuietly方法
static void closeQuietly(Connection conn, Statement stmt, ResultSet rs)
Close a Connection, Statement and ResultSet.
commitAndClose方法
static void commitAndClose(Connection conn)
Commits a Connection then closes it, avoid closing if null.
loadDriver方法
static boolean loadDriver(String driverClassName)
Loads and registers a database driver class.
2.QueryRunner
QueryRunner作为重点了解,提供了增删改查等方法以及各种参数重载方式。
- 先创建QueryRunner对象,使用对象的query方法
- 看文档或源码
选择合适的构造方法然后使用即可
查询代码举例
从数据库中读取图片
/**
* 读取用户背景图片
* 使用dbutils简化操作,用简短的语句实现对数据库的增删改查
* 同时如果没有自主创建的话,dbutils会自动关闭conn等资源,无需手动释放
* @return 返回数据库图片二进制数组
*/
@Override
public byte[] readCover(String tel) {
QueryRunner queryRunner = new QueryRunner(dataSource);
String sql = ("select usercover from person where tel=?");
Object[] params = {tel};
byte[] bytes = null;
try {
bytes = queryRunner.query(sql, new ScalarHandler<>(), params);
} catch (SQLException throwables) {
throwables.printStackTrace();
}
return bytes;
}
更新示例
/**
* 上传用户个人信息
*
* @param person 一个person类
* @return The number of rows updated.
*/
@Override
public int UploadPersonInfo(Person person) {
QueryRunner queryRunner = new QueryRunner(dataSource);
String sql = ("UPDATE person set sex = ?,work = ?,location = ?,intro = ? where tel=?");
//初始化一个num接收返回值
int num = 0;
try {
num = queryRunner.update(sql, person.getSex(), person.getWork(), person.getLocation(), person.getIntro(), person.getTel());
} catch (SQLException throwables) {
throwables.printStackTrace();
}
return num;
}
返回一个Bean示例
/**
* 登录
* @param user user对象
* @return 返回一个注册好的user
*/
@Override
public User Login(User user) {
QueryRunner queryRunner = new QueryRunner(dataSource);
String sql = ("select * from user where tel = ? and password = ?");
User user1 = null;
try {
user1 = queryRunner.query(sql,new BeanHandler<User>(User.class),user.getTel(),user.getPassword());
RegisterPerson(user.getTel());
} catch (SQLException throwables) {
throwables.printStackTrace();
}
return user1;
}
3.ResultSetHandler
继承类包括,AbstractKeyedHandler, AbstractListHandler, ArrayHandler, ArrayListHandler, BaseResultSetHandler, BeanHandler, BeanListHandler, BeanMapHandler, ColumnListHandler, KeyedHandler, MapHandler, MapListHandler, ScalarHandler,具体用法可以参照官方文档。