设为首页 收藏本站
查看: 732|回复: 0

[经验分享] Apache dbutils 用法

[复制链接]

尚未签到

发表于 2016-12-30 09:28:48 | 显示全部楼层 |阅读模式
学习java免不了和数据库打交道。下面我介绍下apache的一个类库,很好用的,没那么多的get和set了,
因为我们知道使用javabean来对数据库中的字段进行封装保存,取出免不了get,设置又要set。而今天这个类库就不用,
他就是 commons-dbutils-1.1.jar,也不知道大家有没有用过的,心得大家一块分享下。
首先我们先看一个我们常规的得到查询数据库所得到的ResultSet。
1、表:person:字段:username,id,age .要查id为1 的用户信息, 用javabean封装,PersonVo

   1. public  PersonVo getInfo(int id) throws Exception {   
   2.         PersonVo pv = new PersonVo();   
   3.         String sql = "SELECT * FROM person WHERE id = " + id;   
   4.         Connection connection = super.getConnection();   
   5.         Statement statement = connection.createStatement();   
   6.         ResultSet rs = statement.executeQuery(sql);   
   7.         while (rs.next()) {   
   8.         pv.setId(rs.getInt(1));   
   9.         pv.setUsername(rs.getString(2));   
  10.         pv.setAge(rs.getInt(3));   
  11. }  

public  PersonVo getInfo(int id) throws Exception {
        PersonVo pv = new PersonVo();
        String sql = "SELECT * FROM person WHERE id = " + id;
        Connection connection = super.getConnection();
        Statement statement = connection.createStatement();
        ResultSet rs = statement.executeQuery(sql);
        while (rs.next()) {
        pv.setId(rs.getInt(1));
        pv.setUsername(rs.getString(2));
        pv.setAge(rs.getInt(3));
}


ok,我们得到了。
下面开始介绍dbutils.jar
今天我们主要使用org.apache.commons.dbutils.handler下面的类
主要的类有: ArrayHandler,ArrayListHandler,BeanHandler,BeanListHandler,MapHandler,MapListHandler
1.同样是要得到一条结果,那我们就可以用ArrayHandler或BeanHandler或MapHandler.
下面看方法


   1. public PersonVo getInfo(int id) throws Exception {   
   2.         QueryRunner queryRunner = new QueryRunner();   
   3.         String sql = "select * from person where id = " + id;   
   4.         return  (PersonVo)queryRunner.query(getConnection(), sql,new BeanHandler(PersonVo.class));   
   5. }  

public PersonVo getInfo(int id) throws Exception {
        QueryRunner queryRunner = new QueryRunner();
        String sql = "select * from person where id = " + id;
        return  (PersonVo)queryRunner.query(getConnection(), sql,new BeanHandler(PersonVo.class));


QueryRunner我个人觉得和我们以前用过的Statement差不多。
他有一个方法query(java.sql.Connection conn, java.lang.String sql, ResultSetHandler rsh) ,其他的大家可以下载下来
自己试着用下。
getConnection() 是拿到一个和数据库的Connection。
这样我们在前台,就直接可以


   1. PersonVo pv = new Test().getInfo(1);   
   2. System.out.println(pv.getUsername());  

PersonVo pv = new Test().getInfo(1);
System.out.println(pv.getUsername());


如果结果有一条以上,就要用BeanListHandler,MapListHandler.
如:


   1. public List<PersonVo> getRegist3() throws Exception {   
   2.         QueryRunner queryRunner = new QueryRunner();   
   3.         String sql = "select * from person";   
   4.         return  (List)queryRunner.query(getConnection(), sql,new BeanListHandler(PersonVo.class));   
   5. }  

public List<PersonVo> getRegist3() throws Exception {
        QueryRunner queryRunner = new QueryRunner();
        String sql = "select * from person";
        return  (List)queryRunner.query(getConnection(), sql,new BeanListHandler(PersonVo.class));
}



---------------
ps:MapHandler
3.


   1. public Map getRegist() throws Exception {   
   2.                 QueryRunner queryRunner = new QueryRunner();   
   3.                 String sql = "select * from person where id = 2";   
   4.                 return (Map) queryRunner.query(getConnection(), sql,new MapHandler());   
   5. }  

public Map getRegist() throws Exception {
                QueryRunner queryRunner = new QueryRunner();
                String sql = "select * from person where id = 2";
                return (Map) queryRunner.query(getConnection(), sql,new MapHandler());
}


MapListHandler
4.


   1. public List<Map> getRegist4() throws Exception {   
   2.                 QueryRunner queryRunner = new QueryRunner();   
   3.                 String sql = "select * from person";   
   4.                 return  (List)queryRunner.query(getConnection(), sql,new MapListHandler());   
   5. }

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-321400-1-1.html 上篇帖子: Apache Commons 简介 下篇帖子: Apache James应用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表