common-dbutils.jar
QueryRunner
update方法:
* int update(String sql, Object… params) –> 可执行增、删、改语句
@Test
public void fun1() throws SQLException {
QueryRunner qr = new QueryRunner(JdbcUtils.getDataSource());
String sql = “insert into t_stu values(?,?,?,?)”;
Object[] params = {1002, “kevin”, 8, “male”};
qr.update(sql, params);
}
* int update(Connection con, String sql, Object… parmas)
–> 需要调用者提供Connection,
这说明本方法不再管理Connection了。支持事务!
query方法:
* T query(String sql, ResultSetHandler rsh, Object… params) –> 可执行查询
> 它会先得到ResultSet,然后调用rsh的handle()把rs转换成需要的类型!
public void fun2() throws SQLException {
// 创建QueryRunner,需要提供数据库连接池对象
QueryRunner qr = new QueryRunner(JdbcUtils.getDataSource());
// 给出sql模板
String sql = “select * from t_stu where sid=?”;
// 给出参数
Object[] params = {1001};
// 执行query()方法,需要给出结果集处理器,即ResultSetHandler的实现类对象
// 我们给的是BeanHandler,它实现了ResultSetHandler
// 它需要一个类型,然后它会把rs中的数据封装到指定类型的javabean对象中,然后返回javabean
Stu stu = qr.query(sql, new BeanHandler<Stu>(Stu.class), params);
System.out.println(stu);
}
* T query(Connection con, String sql, ResultSetHadler rsh, Object… params),
支持事务
ResultSetHandler接口:
* BeanHandler(单行) –> 构造器需要一个Class类型的参数,
用来把一行结果转换成指定类型的javaBean对象
public void fun2() throws SQLException {
// 创建QueryRunner,需要提供数据库连接池对象
QueryRunner qr = new QueryRunner(JdbcUtils.getDataSource());
// 给出sql模板
String sql = “select * from t_stu where sid=?”;
// 给出参数
Object[] params = {1001};
// 执行query()方法,需要给出结果集处理器,即ResultSetHandler的实现类对象
// 我们给的是BeanHandler,它实现了ResultSetHandler
// 它需要一个类型,然后它会把rs中的数据封装到指定类型的javabean对象中,然后返回javabean
Stu stu = qr.query(sql, new BeanHandler<Stu>(Stu.class), params);
System.out.println(stu);
}
* BeanListHandler(多行) –> 构造器也是需要一个Class类型的参数
,用来把一行结果集转换成一个javabean,
那么多行就是转换成List对象,一堆javabean
/**
* BeanListHandler的应用,它是多行处理器
* 每行对象一个Stu对象!
* @throws Exception
*/
@Test
public void fun3() throws Exception {
QueryRunner qr = new QueryRunner(JdbcUtils.getDataSource());
String sql = “select * from t_stu”;
List<Stu> stuList = qr.query(sql, new BeanListHandler<Stu>(Stu.class));
System.out.println(stuList);
}
* MapHandler(单行) –> 把一行结果集转换Map对象
> 一行记录:
sid sname age gender
1001 kevin 29 male
> 一个Map:
{sid:1001, sname:cidy, age:29, gender:male}
/**
* MapHandler的应用,它是单行处理器,把一行转换成一个Map对象
* @throws SQLException
*/
@Test
public void fun4() throws SQLException {
QueryRunner qr = new QueryRunner(JdbcUtils.getDataSource());
String sql = “select * from t_stu where sid=?”;
Object[] params = {1001};
Map map = qr.query(sql, new MapHandler(), params);
System.out.println(map);
}
* MapListHandler(多行) –> 把一行记录转换成一个Map,
多行就是多个Map,即List<Map>!
/**
* MapListHandler,它是多行处理器,把每行都转换成一个Map,即List<Map>
* @throws SQLException
*/
@Test
public void fun5() throws SQLException {
QueryRunner qr = new QueryRunner(JdbcUtils.getDataSource());
String sql = “select * from t_stu”;
List<Map<String,Object>> mapList = qr.query(sql, new MapListHandler());
System.out.println(mapList);
}
* ScalarHandler(单行单列)
–> 通常用与select count(*) from t_stu语句!
结果集是单行单列的!它返回一个Object,其实……Integer…Long….BigInteger….等起父类都是Number类型
/**
* ScalarHandler,它是单行单列时使用,最为合适!
* @throws SQLException
*/
@Test
public void fun6() throws SQLException {
QueryRunner qr = new QueryRunner(JdbcUtils.getDataSource());
String sql = “select count(*) from t_stu”;
/*
* Integer、Long、BigInteger
*/
Number cnt = (Number)qr.query(sql, new ScalarHandler());
long c = cnt.longValue();
System.out.println(c);
}
}
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/100811.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...