【数据库编程】8.Apache-DBUtils
1. 基本介绍
- commons-dbutils是Apache组织提供的一个开源JDBC工具类,它是对JDBC的封装,使用DBUtils可以极大简化jdbc编码的工作量。
- DBUtils类
- QueryRunner类:该类封装了SQL的执行,是线程安全的。可以实现增、删、改、查、批处理。
- ResultSetHandler接口:用于处理java.sql.ResultSet,将数据按要求转换为另一种形式。
2.ResultSetHandler子类
- ArrayHandler:把结果集中的第一行数据转换成对象数组。
- ArrayListHandler:把结果集中的每一行数据都转成一个数组,再存放到List中。
- BeanHandler:把结果集中的第一行数据封装到一个对应的JavaBean实例中。
- BeanListHandler:把结果集中的每一行数据都封装到每个对应的JavaBean实例中,存放到List里。
- ColumnListHandler:将结果集中某一列的数据存放到List中。
- KeyedHandler:将结果集中的每行数据都封装到Map里,再把这些Map再存放到一个Map里,其key为指定的key。
- MapHandler:将结果集中的第一行数据封装到一个Map里,key是列名,value就是对应的值。
- MapListHandler:将结果集中的每一行数据都封装到每个Map里,然后再存放到List中。
3. 使用案例
首先创建一个表和与之对应的Bean类,表结构代码如下:
CREATE TABLE `demo` (
`id` int(11) DEFAULT NULL,
`name` varchar(32) DEFAULT NULL
) ENGINE = InnoDB CHARSET = utf8;
INSERT INTO demo
VALUES (1, 'alan1'),
(2, 'alan2'),
(3, 'alan3'),
(4, 'alan4'),
(5, 'alan5');
Bean类代码如下:
public class Demo {
private Integer id;
private String name;
public Demo() {
}
public Demo(Integer id, String name) {
this.id = id;
this.name = name;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Demo{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
}
之后编写Java代码,使用DBUtils查询id大于2的所有记录,代码如下:
@Test
public void testDBUtils() throws Exception {
// 读取配置并获得连接
Properties properties = new Properties();
properties.load(new FileInputStream("src\\druid.properties"));
DataSource dataSource = DruidDataSourceFactory.createDataSource(properties);
Connection connection = dataSource.getConnection();
QueryRunner queryRunner = new QueryRunner();
String sql = "select * from demo where id > ?";
// 执行SQL
List<Demo> list = queryRunner.query(connection, sql, new BeanListHandler<>(Demo.class), 2);
for (Demo demo : list) {
System.out.println(demo);
}
connection.close();
}
运行结果为:
4. 表与JavaBean的类型映射关系
表 | JavaBean |
---|---|
int | Integer |
double | Double |
char | String |
varchar | String |
date | Date或String |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)