4.1.搭建数据库环境
CREATE DATABASE IF NOT EXISTS `jdbc`;
USE `jdbc`;
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`username` VARCHAR(40) DEFAULT NULL,
`password` VARCHAR(40) DEFAULT NULL,
`email` VARCHAR(60) DEFAULT NULL,
`birthday` DATE DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=INNODB DEFAULT CHARSET=utf8;
INSERT INTO `users`(`id`,`username`,`password`,`email`,`birthday`)
VALUES (1,'zs','123456','zs@qq.com','2021-11-26'),
(2,'lisi','123456','lisi@sina.com','2021-10-01'),
(3,'wangyu','123456','wangyu@sina.com','2021-09-01');
<dependency>
<groupId>commons-dbutils</groupId>
<artifactId>commons-dbutils</artifactId>
<version>1.8.1</version>
</dependency>
4.3.创建BaseDao类,用来模拟QueryRunner
public class BaseDao {
// 优化查询
public static Object query(String sql, ResultSetHandler<?> rsh,
Object... params) throws SQLException {
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
// 获得连接
conn = JDBCUtils.getConnection();
// 预编译sql
pstmt = conn.prepareStatement(sql);
// 将参数设置进去
for (int i = 0; params != null && i < params.length; i++)
{
pstmt.setObject(i + 1, params[i]);
}
// 发送sql
rs = pstmt.executeQuery();
// 让调用者去实现对结果集的处理
Object obj = rsh.handle(rs);
return obj;
} catch (Exception e) {
e.printStackTrace();
}finally {
// 释放资源
JDBCUtils.release(rs, pstmt, conn);
}
return rs;
}
}
4.4.创建实体类User
public class User {
private int id;
private String username;
private String password;
private String email;
private Date birthday;
//补充getter setter
4.5.创建测试类ResultSetTest1
public class ResultSetTest1 {
public static void testBeanHandler() throws SQLException {
BaseDao basedao = new BaseDao();
String sql = "select * from users where id=?";
User user = (User) basedao.query(sql, new BeanHandler(User.class), 1);
System.out.print("id为1的User对象的name值为:" + user.getUsername());
}
public static void main(String[] args) throws SQLException {
testBeanHandler();
}
}
4.6.ResultSetTest2
public class ResultSetTest2 {
public static void testBeanListHandler() throws SQLException {
BaseDao basedao = new BaseDao();
String sql = "select * from users ";
ArrayList<User> list = (ArrayList<User>) basedao.query(sql,
new BeanListHandler(User.class));
for (int i = 0; i < list.size(); i++) {
System.out.println("第" + (i + 1) + "条数据的username值为:"
+ list.get(i).getUsername());
}
}
public static void main(String[] args) throws SQLException {
testBeanListHandler();
}
}
4.7.ResultSetTest3
public static void testScalarHandler() throws SQLException {
BaseDao basedao = new BaseDao();
String sql = "select * from users where id=?";
Object arr = (Object) basedao.query(sql,
new ScalarHandler("username"), 1);
System.out.println(arr);
}
public static void main(String[] args) throws SQLException {
testScalarHandler();
}