一、编写
在学完dbutils框架和DataSource连接池后,我们已经可以较轻松的查询和操作数据库了,但是每次进行查询和操作时,都需要配置数据库连接相关信息、获取连接池、等一系列重复的操作,故我们可以创建DBUtil工具类来帮我们进一步简化操作。
如下:
public class DBUtil {
// 通过Properties工具类获取连接配置信息
private static String DRIVER = PropertiesUtil.readProerties("src/homework/task1.properties", "DRIVER");
private static String URL = PropertiesUtil.readProerties("src/homework/task1.properties", "URL");
private static String USER = PropertiesUtil.readProerties("src/homework/task1.properties", "USER");
private static String PWD = PropertiesUtil.readProerties("src/homework/task1.properties", "PWD");
// 创建连接池
static DruidDataSource ds = new DruidDataSource();
// 声明 dbutils框架的 QueryRunner 对象
private static QueryRunner qr;
// 初始化
static {
ds.setUrl(URL);
ds.setUsername(USER);
ds.setPassword(PWD);
ds.setDriverClassName(DRIVER);
qr = new QueryRunner(ds);
}
// 增、删、改 数据
public static int update(String sql, Object... o) {
try {
return qr.update(sql, o);
} catch (SQLException e) {
e.printStackTrace();
}
return 0;
}
// 查询一行为Bean对象,并返回
public static <T> T toBean(String sql, Class<T> clazz, Object... o) {
try {
BasicRowProcessor brp = new BasicRowProcessor(new GenerousBeanProcessor());
return qr.query(sql, new BeanHandler<T>(clazz, brp), o);
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
// 查询一行封装成Map,并返回
public static <T> Map<String, Object> toMap(String sql, Object... o) {
try {
return qr.query(sql, new MapHandler(), o);
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
// 查询多行为Bean对象,放在List集合里并返回
public static <T> List<T> toList(String sql, Class<T> clazz, Object... o) {
try {
BasicRowProcessor brp = new BasicRowProcessor(new GenerousBeanProcessor());
return qr.query(sql, new BeanListHandler<T>(clazz, brp), o);
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
// 查询多行,每行封装成Map,最终整体封装成List并返回
public static <T> List<Map<String, Object>> AllList(String sql, Object... o) {
try {
return qr.query(sql, new MapListHandler(), o);
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
}
上面DBUtil工具类代码里只写了一些常用的查询和操作数据库数据的方法,还有一些不常用的方法待添加。
二、使用
增删改
以新增为例,删改与之类似:
// 新增数据 返回受影响的行数
int i = DBUtil.update("INSERT into student VALUES (null,?,?,?)",name,pwd,age);
查询
以 .toMap() 方法为例,其他方法与之类似:
// 查询一行数据并封装成Map,并返回
Map<String, Object> map = DBUtil.toMap("select * from shopinfo where stu_id = ?", 001);