• DBUtils基础


    DBUtilsjava编程中的数据库操作实用工具,小巧简单实用。

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

    Dbutils三个核心功能介绍

       QueryRunner中提供对sql语句操作的API.

      ResultSetHandler接口,用于定义select操作后,怎样封装结果集.

       DbUtils类,它就是一个工具类,定义了关闭资源与事务处理的方法

    1.1 QueryRunner核心类

    l update(Connection conn, String sql, Object... params) ,用来完成表数据的增加、删除、更新操作

    l query(Connection conn, String sql, ResultSetHandler<T> rsh, Object... params) ,用来完成表数据的查询操作

    1.2 QueryRunner实现添加、更新、删除操作

    l update(Connection conn, String sql, Object... params) ,用来完成表数据的增加、删除、更新操作

    1.2.1 添加

    public void insert(){

    try {

    //获取一个用来执行SQL语句的对象   QueryRunner

    QueryRunner qr = new QueryRunner();

    String sql = "INSERT INTO zhangwu(name,money,parent) VALUES(?,?,?)";

    Object[] params = {"股票收入", 5500, "收入"};

    Connection conn = JDBCUtils.getConnection();

    int line = qr.update(conn,sql,params);// 用来完成表数据的增加、删除、更新操作

    //结果集处理

    System.out.println("line = " + line);

    } catch (SQLException e) {

    throw new RuntimeException(e);

    }

    }

    1.2.2 更新

    public void update(){

    try {

    //创建一个QueryRunner对象,用来完成SQL语句的执行

    QueryRunner qr = new QueryRunner();

    //执行SQL语句

    String sql = "UPDATE zhangwu SET money = money+1000 WHERE name=?";

    Object[] params = {"股票收入"};

    Connection conn = JDBCUtils.getConnection();

    int line = qr.update(conn, sql, params);

    //结果集的处理

    System.out.println("line="+line);

    } catch (SQLException e) {

    throw new RuntimeException(e);

    }

    }

    1.2.3 删除

    public void delete(){

    try {

    //创建一个QueryRunner对象,用来完成SQL语句的执行

    QueryRunner qr = new QueryRunner();

    //执行SQL语句

    String sql = "DELETE FROM zhangwu WHERE name = ?";

    Object[] params = {"股票收入"};

    Connection conn = JDBCUtils.getConnection();

    int line = qr.update(conn, sql, params);

    //结果集的处理

    System.out.println("line="+line);

    } catch (SQLException e) {

    throw new RuntimeException(e);

    }

    }

    1.3 QueryRunner实现查询操作

    l query(Connection conn, String sql, ResultSetHandler<T> rsh, Object... params),用来完成表数据的查询操作

    1.3.1 ResultSetHandler结果集处理类

    ArrayHandler

    将结果集中的第一条记录封装到一个Object[]数组中,数组中的每一个元素就是这条记录中的每一个字段的值

    ArrayListHandler

    将结果集中的每一条记录都封装到一个Object[]数组中,将这些数组在封装到List集合中。

    BeanHandler

    将结果集中第一条记录封装到一个指定的javaBean中。

    BeanListHandler

    将结果集中每一条记录封装到指定的javaBean中,将这些javaBean在封装到List集合中

    ColumnListHandler

    将结果集中指定的列的字段值,封装到一个List集合中

    ScalarHandler

    它是用于单数据。例如select count(*) from 表操作。

    MapHandler

    将结果集第一行封装到Map<String,Object>集合中,Key 列名, Value 该列数据

    MapListHandler

    将结果集每一行封装到List<Map<String,Object>>集合中,Key 列名, Value 该列数据,Map集合存储到List集合

    1.3.2 JavaBean

    JavaBean就是一个类,在开发中常用封装数据。具有如下特性

    1. 需要实现接口:java.io.Serializable ,通常实现接口这步骤省略了,不会影响程序。
    2. 提供私有字段:private 类型 字段名;
    3. 提供getter/setter方法:
    4. 提供无参构造

    /*

     * 账务类

     */

    public class ZhangWu {

    private int id;

    private String name;

    private double money;

    private String parent;

    public ZhangWu() {

    super();

    }

    public int getId() {

    return id;

    }

    public void setId(int id) {

    this.id = id;

    }

    public String getName() {

    return name;

    }

    public void setName(String name) {

    this.name = name;

    }

    public double getMoney() {

    return money;

    }

    public void setMoney(double money) {

    this.money = money;

    }

    public String getParent() {

    return parent;

    }

    public void setParent(String parent) {

    this.parent = parent;

    }

    @Override

    public String toString() { //该方法可以省略

    return "ZhangWu [id=" + id + ", name=" + name + ", money=" + money + ", parent=" + parent + "]";

    }

    }

    1.3.3 ArrayHandlerArrayListHandler查询

    l ArrayHandler将结果集中的第一条记录封装到一个Object[]数组中,数组中的每一个元素就是这条记录中的每一个字段的值

    public class ArrayHandlerDemo {

    @Test

    public void method(){

    try {

    //获取QueryRunner对象

    QueryRunner qr = new QueryRunner();

    //执行SQL语句

    String sql = "SELECT * FROM zhangwu";

    Object[] params = {};

    Connection conn = JDBCUtils.getConnection();

    Object[] objArray = qr.query(conn, sql, new ArrayHandler(), params);

    //结果集的处理

    System.out.println( Arrays.toString(objArray) );

    conn.close();

    } catch (SQLException e) {

    e.printStackTrace();

    }

    }

    }

    l ArrayListHandler将结果集中的每一条记录都封装到一个Object[]数组中,将这些数组在封装到List集合中。

    public class ArrayListHandlerDemo {

    @Test

    public void method(){

    try {

    //获取QueryRunner对象

    QueryRunner qr = new QueryRunner();

    //执行SQL语句

    String sql = "SELECT * FROM zhangwu WHERE money>?";

    Object[] params = {2000};

    Connection conn = JDBCUtils.getConnection();

     List<Object[]> list = qr.query(conn, sql, new ArrayListHandler(), params);

    //结果集的处理

     for (Object[] objArray : list) {

    System.out.println(  Arrays.toString(objArray) );

    }

    conn.close();

    } catch (SQLException e) {

    e.printStackTrace();

    }

    }

    }

    1.3.4 BeanHandlerBeanListHandler查询

    l BeanHandler 将结果集中第一条记录封装到一个指定的javaBean中。

    public class BeanHandlerDemo {

    @Test

    public void method(){

    try{

    //获取QueryRunner

    QueryRunner qr = new QueryRunner();

    //执行SQL语句

    String sql = "SELECT * FROM zhangwu WHERE id=?";

    Object[] params = {1};

    Connection conn = JDBCUtils.getConnection();

    ZhangWu zw = qr.query(conn, sql, new BeanHandler<ZhangWu>(ZhangWu.class), params);

    //结果集处理

    System.out.println(zw);

    conn.close();

    } catch(SQLException e){

    throw new RuntimeException(e);

    }

    }

    }

    l BeanListHandler 将结果集中每一条记录封装到指定的javaBean中,将这些javaBean在封装到List集合中

    public class BeanListHandlerDemo {

    @Test

    public void method(){

    try{

    //获取QueryRunner

    QueryRunner qr = new QueryRunner();

    //执行SQL语句

    String sql = "SELECT * FROM zhangwu WHERE money>?";

    Object[] params = {2000};

    Connection conn = JDBCUtils.getConnection();

    List<ZhangWu> list = qr.query(conn, sql, new BeanListHandler<ZhangWu>(ZhangWu.class), params);

    //结果集处理

    for (ZhangWu zw : list) {

    System.out.println(zw);

    }

    conn.close();

    } catch(SQLException e){

    throw new RuntimeException(e);

    }

    }

    }

    1.3.5 ColumnListHandlerScalarHandler查询

    l ColumnListHandler将结果集中指定的列的字段值,封装到一个List集合中

    public class ColumnListHandlerDemo {

    @Test

    public void method(){

    try {

    //获取QueryRunner对象

    QueryRunner qr = new QueryRunner();

    //执行SQL语句

    String sql = "SELECT name FROM zhangwu WHERE money>?";

    Object[] params = {2000};

    Connection conn = JDBCUtils.getConnection();

    List<String> list = qr.query(conn, sql, new ColumnListHandler<String>(), params);

    //结果集的处理

    for (String str : list) {

    System.out.println(str);

    }

    conn.close();

    } catch (SQLException e) {

    e.printStackTrace();

    }

    }

    }

    l ScalarHandler它是用于单数据。例如select count(*) from 表操作。

    public class ScalarHandlerDemo {

    @Test

    public void method(){

    try {

    //获取QueryRunner对象

    QueryRunner qr = new QueryRunner();

    //执行SQL语句

    String sql = "SELECT MAX(money) FROM zhangwu";

    Object[] params = {};

    Connection conn = JDBCUtils.getConnection();

    Double max = qr.query(conn, sql, new ScalarHandler<Double>(), params);

    //结果集的处理

    System.out.println("max=" + max);

    conn.close();

    } catch (SQLException e) {

    e.printStackTrace();

    }

    }

    }

  • 相关阅读:
    LeetCode
    LeetCode
    一篇真正教会你开发移动端页面的文章(一)
    移动端页面开发资源总结
    Vue 模板
    使用 concurrently 并行地运行多个命令(同时跑前端和后端的服务)
    值得H5前端学习的60个JS插件(含DEMO演示)
    解读浮动闭合最佳方案:clearfix
    JavaScript 如何工作的: 事件循环和异步编程的崛起 + 5 个关于如何使用 async/await 编写更好的技巧
    JavaScript 运行机制详解:再谈Event Loop
  • 原文地址:https://www.cnblogs.com/nbkls/p/12939353.html
Copyright © 2020-2023  润新知