DBUtils工具包

一.介绍

  DBUtils是Apache组织开源的数据库工具类。

二.使用步骤

  ①.创建QueryRunner对象

  ②.调用update()方法或者query()方法执行sql语句

三.构造方法及静态方法

  QueryRunner类

  1.构造方法

    ①.无参构造

      QueryRunner qr =new  QueryRunner();

     使用无参构造的时候,调用update方法和query方法时就需要使用带Connection 类型参数的重载形式

    ②.有参构造

      QueryRunner  qr= new QueryRunner(DataSource  dataSource);

      这个参数是连接池对象

  2.静态方法

    ①.int  update(Connection  con ,String sql ,Param);

      该方法用于增删改语句的操作

      参数介绍:

      参数一:连接池对象(这个在无参构造的时候使用)

      参数二:sql语句

      参数三:可变参数(就是sql占位符的值)

      返回值:int类型的  返回受影响的行数

   简单update  demo

 1 public class Demo {
 2     public static void main(String[] args) throws Exception {
 3         /*
 4          * 演示有参构造的update()方法
 5          *
 6          * 首先得导入jar包
 7          * 配置好C3P0的配置文件与准备好C3P0工具类
 8          * 然后创建QueryRunner对象
 9          * 调用update方法
10          * 最后处理结果
11          */
12         QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
13         int re = qr.update("update user set name=? where uid=?","张三",2);
14         if(re>0){
15             System.out.println("修改成功");
16         }else {
17             System.out.println("修改失败");
18         }
19     }
20 }

  附上简单的C3P0工具类

 1 public class C3P0Utils {
 2     private  static DataSource dataSource=new ComboPooledDataSource();
 3     /**
 4      * 获得DataSource实现类对象
 5      * @return
 6      */
 7     public static DataSource getDataSource(){
 8         return dataSource;
 9     }
10     /**
11      * 获得连接
12      * @return
13      * @throws Exception
14      */
15     public static Connection getConnection()throws Exception{
16         return dataSource.getConnection();
17     }
18 }

  ②.query(Connection con , String sql  ,Param ...)

      该方法用于出查询操作

      参数介绍:

        参数一:Connection  数据库连接对象, 使用带参构造时可以不用

        参数二:sql语句      

        参数三:表示对结果集的处理方式 (ResultSetHandler接口)

            ArrayHandler: 表示将结果集第一行的数据存入数组
            ArrayListHandler 将结果集每一行的数据存入数组,多个数组存入集合 List<Object[]>

            BeanHandler 表示将结果集第一行的数据存入Java Bean对象
            BeanListHandler 表示将结果集每一行的数据存入Java Bean对象 ,多个对象存入集合

            ColumnListHandler 表示将某一列的数据存入集合


            MapHandler 表示将结果集第一行的数据存入Map集合 :键:列名 值:列的值
            MapListHandler 表示将结果集每一行的数据存入Map集合 多个Map存入List集合 List<Map<,>>

            ScalarHandler 获取一个值: count(*) sum(price)

       参数四:可变参数(就是sql占位符的值)

      使用BeanListHandler处理方式的demo:

1     public void demo1() throws Exception{
2         QueryRunner qr = new QueryRunner(MyC3P0Utils.getDataSource());
3         List<Car> list = qr.query("select * from car where price<20 order by price desc", new BeanListHandler<>(Car.class));
4         for (Car car : list) {
5             System.out.println(car);
6         }
7
8     }

      javaBean类的编写:

 1 public class Car {
 2     private  int  cid;
 3     private String  cname;
 4     private String  company;
 5     private String grade;
 6     private double price;
 7     @Override
 8     public String toString() {
 9         return "Car [cid=" + cid + ", cname=" + cname + ", company=" + company + ", grade=" + grade + ", price=" + price
10                 + "]";
11     }
12     public int getCid() {
13         return cid;
14     }
15     public void setCid(int cid) {
16         this.cid = cid;
17     }
18     public String getCname() {
19         return cname;
20     }
21     public void setCname(String cname) {
22         this.cname = cname;
23     }
24     public String getCompany() {
25         return company;
26     }
27     public void setCompany(String company) {
28         this.company = company;
29     }
30     public String getGrade() {
31         return grade;
32     }
33     public void setGrade(String grade) {
34         this.grade = grade;
35     }
36     public double getPrice() {
37         return price;
38     }
39     public void setPrice(double price) {
40         this.price = price;
41     }
42     public Car(int cid, String cname, String company, String grade, double price) {
43         super();
44         this.cid = cid;
45         this.cname = cname;
46         this.company = company;
47         this.grade = grade;
48         this.price = price;
49     }
50     public Car() {
51         super();
52         // TODO Auto-generated constructor stub
53     }
54
55 }

   

转载于:https://www.cnblogs.com/xuzhaocai/p/8207268.html

java学习笔记之DBUtils工具包相关推荐

  1. 【java学习笔记day01】运行第一个程序Helloworld!

    java学习笔记day01 2.什么是软件工程师? 3.什么是软件? 4.开发软件需要计算机编程语言,计算机编程语言有很多,例如 c, c++,Java,NET,c#,php... 5.Java软件工 ...

  2. Java学习笔记——流程控制

    Java学习笔记--流程控制 Day05 一.用户交互Scanner 1.Scanner对象 我们通过Java工具包java.util.Scanner中的Scanner类来获取用户的输入 基本语法:S ...

  3. JAVA学习笔记(1)【基础知识】

    JAVA学习笔记DAY_1 提示:关于java系列的内容只是本人在老师的指导下和自学过程中的一些学习笔记,如果存在错误敬请批评指正! 文章目录 JAVA学习笔记DAY_1 前言 一.Java语言未来的 ...

  4. Java学习笔记(java基础)

    Java学习笔记(第一周) Java 介绍 Java 发展方向 JVM , JDK , JRE 名词解释 Java语言的特点 Java安装 安装包的下载 配置环境变量 验证是否安装成功 Java的第一 ...

  5. java学习笔记11--Annotation

    java学习笔记11--Annotation Annotation:在JDK1.5之后增加的一个新特性,这种特性被称为元数据特性,在JDK1.5之后称为注释,即:使用注释的方式加入一些程序的信息. j ...

  6. java学习笔记13--反射机制与动态代理

    本文地址:http://www.cnblogs.com/archimedes/p/java-study-note13.html,转载请注明源地址. Java的反射机制 在Java运行时环境中,对于任意 ...

  7. 准备写java学习笔记

    准备写java学习笔记 java int 转载于:https://blog.51cto.com/cryingcloud/1975267

  8. Java学习笔记--StringTokenizer的使用

    2019独角兽企业重金招聘Python工程师标准>>> Java Tips: 使用Pattern.split替代String.split String.split方法很常用,用于切割 ...

  9. java学习笔记12--异常处理

    java学习笔记系列: java学习笔记11--集合总结 java学习笔记10--泛型总结 java学习笔记9--内部类总结 java学习笔记8--接口总结 java学习笔记7--抽象类与抽象方法 j ...

最新文章

  1. 关于卷积神经网络的思考:将CNN视作泛函拟合
  2. 计算机专业2016高考录取分数线,中国科学院大学计算机科学与技术专业2016年在江苏理科高考录取最低分数线...
  3. brand.php dnfire.cn_能美火灾报警_能美西科姆消防报警主机如何屏蔽故障点_滁州气象...
  4. 发送WM_COPYDATA消息实现进程间的通信
  5. SAP UI5 应用开发教程之九 - 创建第一个 Component
  6. 《计算机应用》实践考核,《管理系统中计算机应用》实践性环节考核方案
  7. virtual box 针对Unable to load R3 module 解决方案
  8. 电脑运行VirtualBox虚拟机总是提示0x00000000错误的解决方法
  9. 低级问题---.net franmework安装
  10. php 可变变量 $$name
  11. rs485接口上下拉_带内部上下拉电阻的无极性rs-485接口芯片的制作方法
  12. VMware卸载不干净导致安装VMware报错(无法安装服务vmware Authorization server请确保你有足够的权限)
  13. 互联网流量的本质是什么?
  14. 如何基于vue开发ui组件库(heaven-ui)
  15. Linux互信及互信失效问题
  16. Docker Nginx配置(docker.io/nginx)
  17. Python画爱心——一颗会跳动的爱心~
  18. 使用nvm管理node
  19. 《周志明的软件架构课》学习笔记 Day15
  20. pmp-关键路径法之顺推和逆推

热门文章

  1. 不少程序员都会碰到的三个面试题
  2. win7系统搭建tftp服务器,Win7旗舰版如何开启TFTP服务器|开启Win7旗舰版TFTP服务器的方法...
  3. ffmpeg 编码如何做带宽控制输出
  4. Oracle11g的安装和使用
  5. 【linux】Linux cp命令拷贝 不覆盖原有的文件
  6. 【Clickhouse】Clickhouse 物化视图 MATERIALIZED VIEW
  7. 【Es】es修改mapping报错Validation Failed: 1: mapping type is missing
  8. Spark之hive的UDF自定义函数
  9. Linux的Open Files设置过小导致程序退出并且Unable to create new native thread
  10. Java中使用ProcessBuilder启动、管理应用程序