zoukankan      html  css  js  c++  java
  • JdbcUtils 系列1

    1、开发前准备

    创建java pro为dbutils_1,没有lib目录,建一个即可

    /dbutils_1/lib/mysql-connector-java-5.0.8-bin.jar

    数据库搭建c3p0

    /dbutils_1/src/c3p0-config.xml

    /dbutils_1/lib/c3p0-0.9.2-pre1.jar

    /dbutils_1/lib/mchange-commons-0.2.jar

    2、包commons-dbutils-1.2.jar

    3、工具类JdbcUtils.java

    package cn.itcast.utils;
    
    import java.sql.Connection;
    import java.sql.SQLException;
    
    import javax.sql.DataSource;
    
    
    import com.mchange.v2.c3p0.ComboPooledDataSource;
    
    public class JdbcUtils {
        private static ComboPooledDataSource ds = null;
    
        // 创建c3p0连接池,真个应用只需要初始化一次,放在静态代码块里面
        static {
            ds = new ComboPooledDataSource("flx");
        }
    
        // 取得连接
        public static Connection getConnection() throws SQLException {
            return ds.getConnection();
        }
    
        // 获取连接池
        public static DataSource getDataSource(){
            return ds;
        }
    }

    4、数据库操作

    增、删、改、查、批处理、大数据

    package cn.itcast.demo;
    
    import java.io.File;
    import java.io.FileNotFoundException;
    import java.io.FileReader;
    import java.io.IOException;
    import java.sql.SQLException;
    import java.util.Date;
    import java.util.List;
    
    import javax.sql.rowset.serial.SerialClob;
    
    import org.apache.commons.dbutils.QueryRunner;
    import org.apache.commons.dbutils.handlers.BeanHandler;
    import org.apache.commons.dbutils.handlers.BeanListHandler;
    import org.junit.Test;
    
    import cn.itcast.domain.User;
    import cn.itcast.utils.JdbcUtils;
    
    public class Demo1 {
    
        /*
         * 
         * 使用dbutils框架完成curd,以及批处理
         * 
         create database day17; use day17;
        
         create table user( 
          id int primary key auto_increment,
           name varchar(40),        password varchar(40),
           email varchar(60),
           birthday date ); insert into user(name,password,email,birthday)values('zs','123456','zs@sina.com','1980-09-09'); insert into user(name,password,email,birthday) values('lisi','123456','lisi@sina.com','1980-09-09'); insert into user(name,password,email,birthday) values('wangwu','123456','wangwu@sina.com','1980-09-09'); *
    */ @Test public void add() throws SQLException { QueryRunner qr = new QueryRunner(JdbcUtils.getDataSource()); String sql = "insert into user(name,password,email,birthday) values(?,?,?,?)"; Object params[] = { "ccc", "123", "cc@sina.com", new Date() }; qr.update(sql, params); } @Test public void delete() throws SQLException { QueryRunner qr = new QueryRunner(JdbcUtils.getDataSource()); String sql = "delete from user where id=?"; qr.update(sql, 1); } @Test public void update() throws SQLException { QueryRunner qr = new QueryRunner(JdbcUtils.getDataSource()); String sql = "update user set name=? where id=?"; Object params[] = { "ddd", 5 }; qr.update(sql, params); } @Test public void find() throws SQLException { QueryRunner qr = new QueryRunner(JdbcUtils.getDataSource()); String sql = "select * from user where id=?"; Object params[] = { 2 }; User user = (User) qr.query(sql, params, new BeanHandler(User.class)); System.out.println(user.getBirthday()); } @Test public void getAll() throws SQLException { QueryRunner qr = new QueryRunner(JdbcUtils.getDataSource()); String sql = "select * from user"; List list = (List) qr.query(sql, new BeanListHandler(User.class)); System.out.println(list.size()); } //批处理插入多条数据 @Test public void testBatch() throws SQLException { QueryRunner qr = new QueryRunner(JdbcUtils.getDataSource()); String sql = "insert into user(name,password,email,birthday) values(?,?,?,?)"; Object params[][] = new Object[10][]; for (int i = 0; i < 10; i++) { params[i] = new Object[] { "aa" + i, "123", "aa@sina.com", new Date() }; } qr.batch(sql, params); } // 用dbutils完成大数据(不建议用) /*************************************************************************** create table testclob ( id int primary key auto_increment, resume text ); * @throws SQLException * @throws IOException **************************************************************************/ @Test public void testclob() throws SQLException, IOException{ QueryRunner runner = new QueryRunner(JdbcUtils.getDataSource()); String sql = "insert into testclob(resume) values(?)"; //clob //替换参数 /*String path = Demo1.class.getClassLoader().getResource("1.txt").getPath(); Object params[] = {new FileReader(path)}; */ String path = Demo1.class.getClassLoader().getResource("1.txt").getPath(); FileReader in = new FileReader(path); char[] buffer = new char[(int) new File(path).length()]; in.read(buffer); SerialClob clob = new SerialClob(buffer); Object params[] = {clob}; runner.update(sql, params); } }

     5、源码下载

    http://files.cnblogs.com/lxsky/dbutils_1.zip

    6、DBUtils对结果集自动封装可以使用下面的,详细可参考http://www.cnblogs.com/yezhenhan/archive/2011/01/11/1932556.html

    ArrayHandler:把结果集中的第一行数据转成对象数组。
    ArrayListHandler:把结果集中的每一行数据都转成一个对象数组,再存放到List中。
    BeanHandler:将结果集中的第一行数据封装到一个对应的JavaBean实例中。
    BeanListHandler:将结果集中的每一行数据都封装到一个对应的JavaBean实例中,存放到List里。
    ColumnListHandler:将结果集中某一列的数据存放到List中。
    KeyedHandler:将结果集中的每一行数据都封装到一个Map里,然后再根据指定的key把每个Map再存放到一个Map里。
    MapHandler:将结果集中的第一行数据封装到一个Map里,key是列名,value就是对应的值。
    MapListHandler:将结果集中的每一行数据都封装到一个Map里,然后再存放到List。
    ScalarHandler:将结果集中某一条记录的其中某一列的数据存成Object。
    

      

  • 相关阅读:
    交叉验证概述
    【Python那些事儿之十】range()和xrange()
    Numpy基础笔记
    matplotlib中使用imshow绘制二维图
    Django+Django-Celery+Celery的整合实战
    Nginx+uWSGI+Django部署web服务器
    uwsgi
    uwsgi 神器问题
    disagrees about version
    协议基础:SMTP:使用Telnet学习SMTP协议
  • 原文地址:https://www.cnblogs.com/lxsky/p/3977103.html
Copyright © 2011-2022 走看看