采用Apache的DBUtils框架实现数据库的CRUD

1。导包
(1).commons-dbcp-1.4.jar
(2)commons-dbutils-1.4.jar
(3)commons-pool-1.5.6.jar
(4)mysql-connector-java-5.0.8-bin.jar
2。数据库配置文件:

#\u8FDE\u63A5\u8BBE\u7F6E
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/day18
username=root
password=admin

#<!-- \u521D\u59CB\u5316\u8FDE\u63A5 -->
initialSize=10

#\u6700\u5927\u8FDE\u63A5\u6570\u91CF
maxActive=50

#<!-- \u6700\u5927\u7A7A\u95F2\u8FDE\u63A5 -->
maxIdle=20

#<!-- \u6700\u5C0F\u7A7A\u95F2\u8FDE\u63A5 -->
minIdle=5

#<!-- \u8D85\u65F6\u7B49\u5F85\u65F6\u95F4\u4EE5\u6BEB\u79D2\u4E3A\u5355\u4F4D 6000\u6BEB\u79D2/1000\u7B49\u4E8E60\u79D2 -->
maxWait=60000


#JDBC\u9A71\u52A8\u5EFA\u7ACB\u8FDE\u63A5\u65F6\u9644\u5E26\u7684\u8FDE\u63A5\u5C5E\u6027\u5C5E\u6027\u7684\u683C\u5F0F\u5FC5\u987B\u4E3A\u8FD9\u6837\uFF1A[\u5C5E\u6027\u540D=property;] 
#\u6CE8\u610F\uFF1A"user" \u4E0E "password" \u4E24\u4E2A\u5C5E\u6027\u4F1A\u88AB\u660E\u786E\u5730\u4F20\u9012\uFF0C\u56E0\u6B64\u8FD9\u91CC\u4E0D\u9700\u8981\u5305\u542B\u4ED6\u4EEC\u3002
connectionProperties=useUnicode=true;characterEncoding=utf8

#\u6307\u5B9A\u7531\u8FDE\u63A5\u6C60\u6240\u521B\u5EFA\u7684\u8FDE\u63A5\u7684\u81EA\u52A8\u63D0\u4EA4\uFF08auto-commit\uFF09\u72B6\u6001\u3002
defaultAutoCommit=true

#driver default \u6307\u5B9A\u7531\u8FDE\u63A5\u6C60\u6240\u521B\u5EFA\u7684\u8FDE\u63A5\u7684\u53EA\u8BFB\uFF08read-only\uFF09\u72B6\u6001\u3002
#\u5982\u679C\u6CA1\u6709\u8BBE\u7F6E\u8BE5\u503C\uFF0C\u5219\u201CsetReadOnly\u201D\u65B9\u6CD5\u5C06\u4E0D\u88AB\u8C03\u7528\u3002\uFF08\u67D0\u4E9B\u9A71\u52A8\u5E76\u4E0D\u652F\u6301\u53EA\u8BFB\u6A21\u5F0F\uFF0C\u5982\uFF1AInformix\uFF09
defaultReadOnly=

#driver default \u6307\u5B9A\u7531\u8FDE\u63A5\u6C60\u6240\u521B\u5EFA\u7684\u8FDE\u63A5\u7684\u4E8B\u52A1\u7EA7\u522B\uFF08TransactionIsolation\uFF09\u3002
#\u53EF\u7528\u503C\u4E3A\u4E0B\u5217\u4E4B\u4E00\uFF1A\uFF08\u8BE6\u60C5\u53EF\u89C1javadoc\u3002\uFF09NONE,READ_UNCOMMITTED, READ_COMMITTED, REPEATABLE_READ, SERIALIZABLE
defaultTransactionIsolation=REPEATABLE_READ

3。工具类:

package com.itheima.util;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;

import javax.sql.DataSource;

import org.apache.commons.dbcp.BasicDataSourceFactory;

public class DBCPUtil {

    private static DataSource dataSource;
    static{
        try {
            InputStream in = DBCPUtil.class.getClassLoader().getResourceAsStream("dbcpconfig.properties");
            Properties props = new Properties();
            props.load(in);
            dataSource = BasicDataSourceFactory.createDataSource(props);
        } catch (Exception e) {
            throw new ExceptionInInitializerError(e);
        }
    }
    public static DataSource getDataSource(){
        return dataSource;
    }

    public static Connection getConnection(){
        try {
            return dataSource.getConnection();
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }
}

4。使用DBUtil框架
DBUtilCRUD.java文件:

package com.itheima.dbutil;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.InputStream;
import java.io.Reader;
import java.sql.Blob;
import java.sql.Clob;
import java.sql.SQLException;
import java.util.Date;

import javax.sql.rowset.serial.SerialBlob;
import javax.sql.rowset.serial.SerialClob;

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

import com.itheima.util.DBCPUtil;

/*
create database day18;
use day18;
create table student(
    id int primary key,
    name varchar(100),
    birthday date
);
 */
public class DBUtilCRUD {
    private QueryRunner qr = new QueryRunner(DBCPUtil.getDataSource());
    @Test
    public void testAdd() throws SQLException{
        qr.update("insert into student values(?,?,?)", 6,"zhangsan",new Date());
    }
    @Test
    public void testUpdate() throws SQLException{
        qr.update("update student set birthday=? where id=?", "1993-08-01",1);
    }
    @Test
    public void testDel() throws SQLException{
        qr.update("delete from student where id=?", 1);
    }
    //批处理插入10条
    @Test
    public void testBatch() throws SQLException{
        Object params[][] = new Object[10][];//高维:记录的条数。低维:每条记录需要的参数
        for(int i=0;i<params.length;i++){
            params[i] = new Object[]{i+1,"杨洋"+(i+1),new Date()};
        }
        qr.batch("insert into student values(?,?,?)", params);
    }
    //大文本:了解
    /*
    create table t1(
        id int primary key,
        content longtext
    );
     */
    @Test//大文本类型===Clob
    public void testClob()throws Exception{
        File file = new File("src/pqy&sx.txt");//文件很大,内存浪费
        Reader reader = new FileReader(file);
        char ch[] = new char[(int)file.length()];
        reader.read(ch);
        reader.close();
        Clob clob = new SerialClob(ch);
        qr.update("insert into t1 values(?,?)", 1,clob);//类型不批配。流不是数据库的类型
    }
    //大二进制:了解
    /*
    create table t2(
        id int primary key,
        content longblob
    );
     */
    @Test//大二进制类型===Blob
    public void testBlob()throws Exception{
        InputStream in  = new FileInputStream("src/22.jpg");
        byte b[] = new byte[in.available()];
        in.read(b);
        in.close();
        Blob blob = new SerialBlob(b);
        qr.update("insert into t2 values(?,?)", 1,blob);//类型不批配。流不是数据库的类型
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值