DBUtils连接数据库,简化代码

   *建议:与JDBC连接数据库的那一篇一起对照看看区别*

DBUtils工具类

如果只使用JDBC进行开发,会发现代码过多,为了简化JDBC开发,我们采用apache commons组件的一个成员:DBUtils。
DBUtils就是JDBC的简化开发工具包。

 DBUtils封装了对JDBC的操作,简化了JDBC操作,可以少写代码。

1、QueryRunner 中提供了对sql语句操作的API
2、ResultSetHandler 接口,用于定义select操作后,怎样封装结果集。
3、DbUtils 类,它就是一个工具,定义了关闭资源与事务处理的方法。

需导入commons-dbutils-1.6.jar包,导入步骤跟JDBC导包一样。

定义方法,使用QueryRunner类的方法update向数据表中添加数据
步骤:

  1. 使用QueryRunner类,实现对数据表的insert,delete,update
  2. 调用QueryRunner类的方法update(Connection on,String sql,Object…param)
public class QueryRunnerDemo{
private static Connection con=JDBCUtilsConfig.getConnection();
public static void main(String[] args)throws SQLException{
insert();
}

public static void insert()throws SQLException{
QueryRunner qr=new QueryRunner();//创建QueryRunner对象
String sql="INSERT INTO sort(sname,sprice.sdesc) VALUES(?,?,?)";
Object[] params={"体育用品",1000,"购买用品"};//将三个?占位符的实际参数写在数组中
int row=qr.update(con,sql,params);
System.out.println(row);//执行成功的行数
DbUtils.closeQuietly(con);//关闭资源
}}

定义方法,使用QueryRunner类的方法update将数据表的数据修改

public class QueryRunnerDemo{
private static Connection con=JDBCUtilsConfig.getConnection();
public static void main(String[] args)throws SQLException{
update();
}

public static void update()throws SQLException{
QueryRunner qr=new QueryRunner();//创建QueryRunner对象
String sql="UPDATE sort sname=?,sprice=?,sdesc=? WHERE sid=?";
Object[] params={"花",100,"情人节玫瑰花",4};
int row=qr.update(con,sql,params);
System.out.println(row);//执行成功的行数
DbUtils.closeQuietly(con);//关闭资源
}}

定义方法,使用QueryRunner类的方法delete将数据表的数据删除

public class QueryRunnerDemo{
private static Connection con=JDBCUtilsConfig.getConnection();
public static void main(String[] args)throws SQLException{
delete();
}
public static void delete()throws SQLException{
QueryRunner qr=new QueryRunner();//创建QueryRunner对象
String sql="DELETE FROM sort WHERE sid=?";
int row=qr.update(con,sql,8);//删除第八行
System.out.println(row);//执行成功的行数
DbUtils.closeQuietly(con);//关闭资源
}}
 QueryRunner数据查询操作
  • 调用QueryRunner类方法query(Connection con,String sql,ResultSetHandler r,Object…params)

  • ResultSetHandler r :结果集的处理方式,传递ResultSetHandler接口实现类

  • query方法返回值,返回的是T泛型,具体返回值类型,跟随结果集处理方式变化

    JavaBean就是一个类,在开发中常用封装数据
    
  • 提供私用字段:private类型 字段名;

    扫描二维码关注公众号,回复: 9145007 查看本文章
  • 提供getter、setter方法

  • 提供无参构造

    QueryRunner数据查询
    
pubic class QueryRunnerDemo{
private static Connection con=JDBCUtilsConfig.getConnection();
public static void main(String [] args){
arrayHandler();
arrayListHandler();
beanHandler();
beanListHandler();
columnListHandler();
scalarHandler();
mapHandler();
mapListHandler();
}
//结果集第一种处理方法,ArrayHandler,将结果集的第一行存储到对象数组中Object[]
public static void arrayHandler()throws SQLException{
QueryRunner qr=new QueryRunner();
String sql="SELECT * FROM sort";
Object[] result=qr.query(con,sql,new ArrayHandler());//调用query执行查询,传递连接对象,SQl语句,结果集处理方式的实现类对象,返回对象数组
for(Object obj:result){
System.out.print(obj+"\t");
}
}
//结果集第二种处理方式,ArrayListHandler,将结果集的每一行,封装到对象数组中,出现很多对象数组,对象数组存储到List集合
public static void arrayListHandler()throws SQLException{
QueryRunner qr=new QueryRunner();
String sql="SELECT * FROM sort";
List<Object[]> result=qr,query(con,sql,new ArrayListHandler());//方法返回的是每行的对象数组,存储到List
for(Object[] objs:result){
for(Object obj:objs){//遍历对象数组
System.out.print(obj+"\t");
}
System.out.println();
}
}
//结果集第三种处理方式,BeanHandler,将结果集的第一行数据,封装到JavaBean对象中,结果集第一行封装成Sort类对象
public static void beanHandler()throws SQLException{
QueryRunner qr=new QueryRunner();
String sql="SELECT * FROM sort";
Sort s=qr.query(con,sql,new BeanHandler<Sort>(Sort.class));//BeanHandler<T泛型>(Class)
System.out.println(s);//Sort[sid=1,sname=家电,sprice=2000]
}
//结果集第四种处理方式,BeanListHandler,将数据结果集每一行数据封装成JavaBean对象,多个JavaBean对象封装到List集合中
public static void beanListHandler()throws SQLException{
QueryRunner qr=new QueryRunner();
String sql="SELECT * FROM sort";
List<Sort> list=qr.query(con,sql,new BeanListHandler<Sort>(Sort.class));
for(Sort s:list){System.out.println(s);}
}
//结果集第五种处理方式,ColumnListHandler,指定列的数据,存储到List集合
//List<Object>每个列数据类型不同
public static void ColumnListHandler()throws SQLException{
QueryRunner qr=new QueryRunner();
String sql="SELECT * FROM sort";
List<Object> list=qr.query(con,sql,new ColumnListHandler<Object>("sname"));//实现类ColumnListHandler构造方法中,使用字符串的列名
for(Object obj:list){System.out.println(obj);}
}
//结果集第六种处理方式,ScalarHandler,对于查询后只有一个结果
public static void scalarHandler()throws SQLException{
QueryRunner qr=new QueryRunner();
String sql="SELECT COUNT(*) FROM sort";
long count=qr.query(con,sql,new ScalarHandler<Long>());
System.out.println(count);
}
//结果集第七种处理方式,MapHandler,将结果集第一行数据封装到Map集合中
//Map<key,values>
public static void mapHandler()throws SQLException{
QueryRunner qr=new QueryRunner();
String sql="SELECT * FROM sort";
Map<String,Object> map=qr.query(con,sql,new MapHandler());
for(String key:map.keySet()){System.out.println(key+"    "+map.get(key));}
}
//结果集第八种处理方式,MapListHandler,将结果集每一行存储到Map集合,Map集合过多,存储到List集合,返回值List集合,存储的是Map集合
public static void mapListHandler()throws SQLException{
QueryRunner qr=new QueryRunner();
String sql="SELECT * FROM sort";
List<Map<String,Object>>  list=qr.query(con,sql,new MapListHandler());
for(Map<String:Object> map:list){
for(String key:map.keySet()){System.out.print(key+"    "+map.get(key));}
System.out.println();
}
}

}
发布了8 篇原创文章 · 获赞 2 · 访问量 425

猜你喜欢

转载自blog.csdn.net/weixin_45704114/article/details/104275436
今日推荐