DbUtils框架。简化代码操作。
QueryRunner 类
构造器
此类可实现数据库更新,查询等操作
1 数据库的更新
调用QueryRunner下的 update方法可实现数据库的更新操作。
/**
* 测试QueryRunner
* 1.创建QueryRunner对象
* 调用QueryRunner下的update方法,此方法可用于增删改。
*/
public void testQueryRunnerUpdate(){
//1.创建QueryRunner实现类
QueryRunner queryRunner=new QueryRunner();
String sql="update user set pwd = ?";
Connection connection=null;
try {
connection=JdbcUtil.getConnection();
System.out.println(connection);
queryRunner.update(connection, sql, "56");
} catch (Exception e) {
// TODO: handle exception
}finally {
JdbcUtil.release(connection, null);
}
}
2.数据库的查询操作。
调用 query(Connection con , String sql ,ResultSetHandler
源码:
public interface ResultSetHandler {
/**
* Turn the ResultSet
into an Object.
*
* @param rs The ResultSet
to handle. It has not been touched
* before being passed to this method.
*
* @return An Object initialized with ResultSet
data. It is
* legal for implementations to return null
if the
* ResultSet
contained 0 rows.
*
* @throws SQLException if a database access error occurs
*/
public T handle(ResultSet rs) throws SQLException;
}
1 在查询的返回的时候 如果用类实现了ResultSetHandler接口的话,则query的返回值就是handle方法的返回值。
这是因为query内部,调用了ResultSetHandler下的handle 方法
2. BeanHandler
/**
* 3. BeanHandler: 把结果集的第一条记录转为创建BeanHandler对象时 传入的 Class运行实类对象
* BeanHandler(Class type)
*/
public void testBeanHandler() {
Connection connection=null;
QueryRunner queryRunner=null;
String sql="select uname name,password from user where uname=?;";
try {
connection=JdbcUtil.getConnection();
queryRunner=new QueryRunner();
User user=queryRunner.query(connection, sql, new BeanHandler<>(User.class),"lw");
System.out.println(user);
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally {
JdbcUtil.release(connection, null);
}
}
3.BeanListHandler
/**
* BeanListHandler:把结果转换成一个list该list 不为 null,但是可能为空集合,(size=0)
* 若sql语句查询不到记录的话,list就为空集合,否则的话就将查询到的没一行创建 为 创建BeanListHandler是传入的
* 大的Class对象 的对象。
*/
public void testBeanListHandler() {
Connection connection=null;
QueryRunner queryRunner=null;
String sql="select uname name,password from user;";
try {
connection=JdbcUtil.getConnection();
queryRunner=new QueryRunner();
List list=queryRunner.query(connection, sql,new BeanListHandler<>(User.class));
System.out.println(list);
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally {
JdbcUtil.release(connection, null);
}
}
4.MapHandler
/**
* 4. MapHandler: 把结果集转为一个 Map 对象, 并返回. 若结果集中有多条记录, 仅返回
* 第一条记录对应的 Map 对象. Map 的键: 列名(而非列的别名), 值: 列的值
*/
public void testMapHandler() {
Connection connection=null;
QueryRunner queryRunner=null;
try{
String sql="select uname name , password from user";
connection=JdbcUtil.getConnection();
queryRunner=new QueryRunner();
Map map= queryRunner.query(connection, sql, new MapHandler());
System.out.println(map);
}catch (Exception e) {
// TODO: handle exception
}finally {
JdbcUtil.release(connection, null);
}
}
/**
* BeanListHandler:把结果转换成一个list该list 不为 null,但是可能为空集合,(size=0)
* 若sql语句查询不到记录的话,list就为空集合,否则的话就将查询到的没一行创建 为 创建BeanListHandler是传入的
* 大的Class对象 的对象。
*/
public void testBeanListHandler() {
Connection connection=null;
QueryRunner queryRunner=null;
String sql="select uname name,password from user;";
try {
connection=JdbcUtil.getConnection();
queryRunner=new QueryRunner();
List list=queryRunner.query(connection, sql,new BeanListHandler<>(User.class));
System.out.println(list);
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally {
JdbcUtil.release(connection, null);
}
}
5.MapListHandler
/**
* MapListHandler: 把结果集转为一个 Map 对象的集合, 并返回.
* Map 的键: 列名(而非列的别名), 值: 列的值
*/
public void testMapListHandler() {
Connection connection=null;
QueryRunner queryRunner=null;
try{
String sql="select uname name , password from user";
connection=JdbcUtil.getConnection();
queryRunner=new QueryRunner();
List
6.ScalarHandler 返回一条记录。比如一个人的名字,一个人的身份证
@Test
public void TestScalarHandler() {
Connection connection=null;
QueryRunner queryRunner=null;
try{
String sql="select uname name , password from user where uname = ?";
connection=JdbcUtil.getConnection();
queryRunner=new QueryRunner();
Object object= queryRunner.query(connection, sql, new ScalarHandler(),"l");
System.out.println(object);
}catch (Exception e) {
// TODO: handle exception
}finally {
JdbcUtil.release(connection, null);
}
}