使用DBUtils增删改查的操作

如果只是用JDBC进行开发,冗余代码过多,为了简化JDBC开发,采用apache commons组件一个成员:DBUtils。
DBUtils就是JDBC的简化开发工具包。需要使用技术:连接池(获得连接),SQL语句。

1.JavaBean组件

使用DBUtils增删改查的操作_第1张图片
代码:

package cn.itheima.domain;

public class User {
    private int uid;
    private String uname;
    private String upassword;
    public User() {

    }
    public int getUid() {
        return uid;
    }
    public void setUid(int uid) {
        this.uid = uid;
    }
    public String getUname() {
        return uname;
    }
    public void setUname(String uname) {
        this.uname = uname;
    }
    public String getUpassword() {
        return upassword;
    }
    public void setUpassword(String upassword) {
        this.upassword = upassword;
    }

}

2.DBUtils概述

DBUtils是java编程中的数据库操作使用工具,小巧简单使用。
DBUtils封装了对JDBC的操作,简化了JDBC操作,可以少写代码。
DBUtils三个核心功能介绍:
QueryRunner中提供对sql语句操作的API
ResuleSetHandler结构,用于定义select操作后,怎样封装结果集
DbUtils类,它就是一个工具类,定义了关闭资源与实务处理的方法

3.QueryRunner核心类

使用DBUtils增删改查的操作_第2张图片

4.ResuleSetHandler结果集处理类

这里写图片描述
使用DBUtils增删改查的操作_第3张图片

5.DbUtils工具类

closeQuiety(Connection conn) 关闭连接,如果有异常try后不抛
commitAndCliseQuietly(Connection conn) 提交并关闭连接
rollbackAndCloseQuietly(Connection conn) 回滚并关闭连接

6.实现增删改操作

package cn.itheima.jdbc.test;


import java.sql.SQLException;

import org.apache.commons.dbutils.QueryRunner;
import org.junit.Test;

import cn.itheima.jdbc.utils.C3P0Utils;
/**
 * 测试DBUtils工具类的增删改操作
 * @author Administrator
 *
 */
public class TestDBUtils {

    /**
     * 添加所有用户方法
     */
    @Test
    public void testAddUser() {
        //1.創建核心類QueryRunner
        QueryRunner qr =new QueryRunner(C3P0Utils.getDataSource());
        //2.編寫SQL語句
        String sql="insert into tbl_user values(null,?,?)";
        //3.為占位符設置值
        Object[] params = {"余淮","耿耿"};
        //4.执行添加操作
        try {
            int rows=qr.update(sql,params);
            if(rows>0) {
                System.out.println("添加成功!");
            }else {
                System.out.println("添加失败!");
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    /**
     * 根据id修改用户方法
     */
    @Test
    public void testUpdateUserById() {
        //1.創建核心類QueryRunner
        QueryRunner qr =new QueryRunner(C3P0Utils.getDataSource());
        //2.編寫SQL語句
        String sql="update tbl_user set upassword=? where uid=?";
        //3.為占位符設置值
        Object[] params = {"xxx",8};
        //4.执行添加操作
        try {
            int rows=qr.update(sql,params);
            if(rows>0) {
                System.out.println("修改成功!");
            }else {
                System.out.println("修改失败!");
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    /**
     * 根据id删除用户方法
     */
    @Test
    public void testDeleteUserById() {
        //1.創建核心類QueryRunner
        QueryRunner qr =new QueryRunner(C3P0Utils.getDataSource());
        //2.編寫SQL語句
        String sql="delete from tbl_user where uid=?";
        //3.為占位符設置值
        Object[] params = {5};
        //4.执行添加操作
        try {
            int rows=qr.update(sql,params);
            if(rows>0) {
                System.out.println("删除成功");
            }else {
                System.out.println("删除失败!");
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

}

运行结果:
使用DBUtils增删改查的操作_第4张图片
使用DBUtils增删改查的操作_第5张图片
使用DBUtils增删改查的操作_第6张图片
使用DBUtils增删改查的操作_第7张图片
使用DBUtils增删改查的操作_第8张图片

7.实现查操作

package cn.itheima.jdbc.test;

import java.sql.SQLException;
import java.util.List;
import java.util.Map;

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;
import org.apache.commons.dbutils.handlers.ColumnListHandler;
import org.apache.commons.dbutils.handlers.MapListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;
import org.junit.Test;

import cn.itheima.domain.User;
import cn.itheima.jdbc.utils.C3P0Utils;
/**
 * 测试DBUtils查询操作
 * 
 * @author Administrator
 *
 */
public class TestDBUtils2 {

    /**
     * 查询所有用户方法
     */
    @Test
    public void testQueryAll() {

        try {
            //1.获取核心类QueryRunner
            QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
            //2.编写sql语句
            String sql="select * from tbl_user";
            //3.执行查询操作
            List users = qr.query(sql, new BeanListHandler(User.class));
            //4.对结果集集合进行遍历
            for (User user : users) {
                System.out.println(user.getUname()+" : "+user.getUpassword());
            }
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

    /*
     * 根据id查询用户方法
     */
    @Test
    public void testQueryUserById() {
        try {
            // 1.获取核心类queryRunner
            QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
            // 2.编写sql语句
            String sql = "select * from tbl_user where uid=?";
            //3.为占位符设置值
            Object[] params = {2};
            // 4.执行查询操作
            User user = qr.query(sql, new BeanHandler(User.class), params);
            System.out.println(user.getUname() + " : " + user.getUpassword());
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

    /*
     * 根据所有用户的总个数
     */
    @Test
    public void testQueryCount() {
        try {
            // 1.获取核心类queryRunner
            QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
            // 2.编写sql语句
            String sql = "select count(*) from tbl_user";
            // 4.执行查询操作
            Long count = (Long) qr.query(sql, new ScalarHandler());
            System.out.println(count);
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }
    /*
     * 查询所有用户方法
     */
    @Test
    public void testQueryAll1() {
        try {
            // 1.获取核心类queryRunner
            QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
            // 2.编写sql语句
            String sql = "select * from tbl_user";
            // 3.执行查询操作
            List> list = qr.query(sql, new MapListHandler());
            // 4.对结果集集合进行遍历
            for (Map map : list) {
                System.out.println(map);
            }
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }
    /*
     * 查询所有用户方法
     */
    @Test
    public void testQueryAll2() {
        try {
            // 1.获取核心类queryRunner
            QueryRunner qr = new QueryRunner(C3P0Utils.getDataSource());
            // 2.编写sql语句
            String sql = "select * from tbl_user";
            // 3.执行查询操作
            List list = qr.query(sql, new ColumnListHandler("uname"));
            // 4.对结果集集合进行遍历
            for (Object object : list) {
                System.out.println(object);
            }
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }
}
 
  

运行结果:
使用DBUtils增删改查的操作_第9张图片
使用DBUtils增删改查的操作_第10张图片
使用DBUtils增删改查的操作_第11张图片
使用DBUtils增删改查的操作_第12张图片
使用DBUtils增删改查的操作_第13张图片

你可能感兴趣的:(MySql,Java必知必会)