DBUntils数据库操作工具类

package com.cskaoyan.JDBCDemo;

import com.alibaba.druid.pool.DruidDataSourceFactory;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.junit.Assert;
import org.junit.Test;

import javax.sql.DataSource;
import java.io.FileReader;
import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;

/**
 * commons-dbutils 是 Apache 组织提供的一个开源 JDBC工具类库,
 * 它是对 JDBC 的简单封装,学习成本极低,
 * 使用 dbutils 可以简化 jdbc 编码的工作量,同时也不会影响程序的性能。
 *
 * 使用 DBUtils 需要导入 commons-dbutils-1.7.jar。DBUtils 有三个核心的组件:
 *
 * 1. QueryRunner:该类提供了 DML 和 DQL 的API。
 * 2. ResultSetHandler:该接口定义如何封装结果集。
 * 3. DbUtils:一个简单的工具类,简化了关闭资源和事务处理。
 */
public class DBUtils {
    
    

    /**
     * 添加数据
     * @throws Exception
     */
    @Test
    public void tetsInsert() throws Exception {
    
    
        //该类提供了DML  DQL的API
        QueryRunner queryRunner = new QueryRunner(getDataSource());
        String sql = "insert into user(username,password,balance)values(?,?,?)";
        Object[] params ={
    
    "yangxing","123456",2000};
        int rows = queryRunner.update(sql, params);
        Assert.assertEquals(1,rows);
    }

    /**
     * 更新数据
     */
    @Test
    public void  testUpdate() throws Exception {
    
    
        QueryRunner queryRunner = new QueryRunner(getDataSource());
        String sql = "update user set balance  = 50 where id =?";
        Object param = 333;
        int row = queryRunner.update(sql, param);
        Assert.assertEquals(1,row);
    }

    @Test
    public  void testDelete() throws Exception {
    
    
        QueryRunner queryRunner = new QueryRunner(getDataSource());
        String sql = "delete from user where id =?";
        Object param = 222;
        int row = queryRunner.update(sql, param);
        Assert.assertEquals(1,row);
    }

    @Test
    public void testQuery() throws Exception {
    
    
        QueryRunner queryRunner = new QueryRunner(getDataSource());
        String sql= "select * from user where username = ?";
        Object param = "yangxing";
        //User 类定义了字段变量,实现无参构造和setter
        User user = queryRunner.query(sql, new BeanHandler<>(User.class), param);
        System.out.println(user);
    }

    @Test
    public  void testBatch() throws Exception {
    
    
        QueryRunner queryRunner = new QueryRunner(getDataSource());
        String sql = "insert into user(username,password,balance) values (?,?,?)";
        Object[][] params = new Object[1000][3];
        for (int i = 0; i < 1000; i++) {
    
    
            params[i] = new  Object[]{
    
    "user"+i,"password"+i,i};
        }
        int [] rowsArr = queryRunner.batch(sql,params);
    }

    

    /**
     * 获取数据源
     * @return  数据源
     */
    private DataSource getDataSource() throws Exception {
    
    
        //加载配置文件
        Properties info = new Properties();
        DataSource dataSource = null;
        FileReader reader = new FileReader("druid.properties");
        info.load(reader);
        //创建数据源
        dataSource = DruidDataSourceFactory.createDataSource(info);
        return dataSource;
    }
}

猜你喜欢

转载自blog.csdn.net/qq_31702655/article/details/105281081