DBUtils API:DBUutilsAPI
介绍三个核心功能
1.QueryRunner 提供对SQL 语句操作API
2.ResultSetHandler 接口 ,用于定义select 操作后 封装结果集
3.DbUtils 类,定义了关闭资源和处理方法
QueryRunner 核心类
三步骤:
//1.连接池获取核心类QueryRunner
QueryRunner qr=new QueryRunner(DBCPUtils.getDataSource());
//2.编写SQL语句
String sql="";
//3.执行操作
qr.update();//插入 删除 修改操作
qr.query()//查询操作
插入操作举例:
try{
QueryRunner qr=new QueryRunner(DBCPUtils.getDataSource());
String sql="insert into db.users values(null,?,?)";
Object[] params={uname,upassword};
int rows=qr.update(sql,params);
if(rows>0)
{
System.out.printf("添加成功");
}
else System.out.printf("添加失败");
} catch (SQLException e) {
e.printStackTrace();
}
删除操作举例:
try {
QueryRunner qr=new QueryRunner(DBCPUtils.getDataSource());
String sql="insert into db.users values(null,?,?)";
Object[] params={uname,upassword};
int rows=qr.update(sql,params);
if(rows>0)
{
System.out.printf("添加成功");
}
else System.out.printf("添加失败");
} catch (SQLException e) {
e.printStackTrace();
}
修改举列:
try {
QueryRunner qr=new QueryRunner(DBCPUtils.getDataSource());
String sql="update db.users set uname=?,upassword=? where uname=? and upassword=?";
Object[] params={newname,newpassword,oldname,oldpassword};
int rows=qr.update(sql,params);
if(rows>0)
{
System.out.printf("修改成功");
}
else System.out.printf("修改失败");
} catch (SQLException e) {
e.printStackTrace();
}
ResultSetHandler 接口 : 定义select操作后的 结果集
结果处理类:
ArrayHandler | 将结果中的每一条记录封装到一个Object[]数组中,数组中的每一个元素就是这条记录中的每一个字段的值 | ||||
ArrayListHandler | 将结果中的每一条记录封装到一个Object[]数组中,再将这些数组封装到List集合中 | ||||
BeanHandler | 将结果中第一条记录封装到指定的javaBean中 | ||||
BeanListHandler | 将结果中每一条记录封装到指定的javaBean中,再将这些javaBean封装到List集合中 | ||||
ColumnListHandler | 将结果中中指定的列字段值,封装到一个List集合中 | ||||
KeyedHandler | 将结果中每一条记录封装到Map<String,Object>集合中,再将这个map集合作为另一个Map的value,另一个Map的集合的key是指定的字段的值 | ||||
MapHandler | 将结果中每一条记录封装到Map<String,Object>集合中,key就是字段名称,value就是字段值 | ||||
MapListHandler | 将结果中每一条记录封装到Map<String,Object>集合中,key就是字段名称,value就是字段值,再将这些Map封装到List集合中 | ||||
ScalarHandler | 它是用于单数据。例如 select * count(*) from表 操作 |
举例:
查询一组数据 使用BeanHandler
QueryRunner qr=new QueryRunner(DBCPUtils.getDataSource());
String sql="select * from db.users where uname=? and upassword=?";
Object[] params={uname,upassword};
User user=qr.query(sql,new BeanHandler<User>(User.class),params);
if(user!=null) System.out.printf("登录成功");
else System.out.printf("登录失败");
查询一组数据 使用MapHandler
QueryRunner qr=new QueryRunner(DBCPUtils.getDataSource());
String sql="select * from db.users where uname=? and upassword=?";
Object[] params={uname,upassword};
Map<String,Object> user=qr.query(sql,new MapHandler(),params);
if(user!=null) System.out.printf("登录成功 "+user.get("uname")+":"+user.get("upassword"));
else System.out.printf("登录失败");
查询所有数据 使用BeanListHandler
QueryRunner qr=new QueryRunner(DBCPUtils.getDataSource());
String sql="select * from db.users";
List<User> users=qr.query(sql,new BeanListHandler<User>(User.class));
for(User user:users)
{
System.out.println(user.getUname()+" "+user.getUpassword());
}
查询所有数据 使用MapListHandler
QueryRunner qr=new QueryRunner(DBCPUtils.getDataSource());
String sql="select * from db.users";
List<Map<String,Object>> users=qr.query(sql,new MapListHandler());
for(Map<String,Object> user:users)
{
System.out.println(user.get("uname")+":"+user.get("upassword"));
}
查询所有用户的一组数据 使用ColumnListHandler
QueryRunner qr=new QueryRunner(DBCPUtils.getDataSource());
String sql="select * from db.users";
List<Object> usersname=qr.query(sql,new ColumnListHandler("uname"));//仅能查询一列
for(Object username:usersname)
{
System.out.println(username);
}
查询用户数量 使用ScalarHandler
QueryRunner qr=new QueryRunner(DBCPUtils.getDataSource());
String sql="select count(*) from db.users";
Long count=(long)qr.query(sql,new ScalarHandler());
System.out.printf("用户数量:"+count);