DBUtils工具

c3p0-config.xml配置

<?xml version=”1.0” encoding=”utf-8”?>


root
123456
com.mysql.jdbc.Driver

jdbc://mysql://localhost:3306/t_user

30000
30
100
10
200


5
15
com.mysql.jdbc.Driver

jdbc:mysql://localhost:3306/t_user

root
123456

QueryRunner类

  • query(String sql,ResultSetHeadler rsh,Object[] params)方法

  • query(Connection conn,String sql,ResultSetHealer rsh,Object[] params)方法

  • query(Connection conn,String sql,Object[] params)方法

  • update(Connection conn,String sql,Object[] params)方法

  • update(Connection conn,String sql)方法

ResultSetHandler接口(常用的几种接口)

  • ArrayHandler:把结果集中的第一行数据转成对象数组
  • ArrayListHeandler:把结果集中的每一行数据都转成一个对象数组,再将数组存放到List中

  • BaseResultSetHeadler:把结果集转换成其他对象的扩展

  • BaseHeadler:将结果集中的第一行数据封装单一个对应的javaBean实例中

  • BaseListHandler:将结果集中的每一行数据都封装到一个对应的JavaBean实例中,存放到List里

DBUtils事务处理

import java.sql.Connection;
import java.sql.SQLException;
import java.sql.DataSource;
import com.mchange.v2.c3p0.CpmbopooledDtaSource;
public class JDBCUtlis{
    //创建一个ThreadLocal对象,以当前线程作为key
    private static ThreadLocal<Connection>threadLocal=
    new ThreadLocal<Connection>();
    //从c3p0-config。xml配置文件中读取默认的数据库配置,生成c3p0数据源
    private static DataSource ds=new CombopooleDataSource();
    //返回数据源对象
    public static DataSource getDataSource(){
        return ds;
    }        
    //获取c3p0数据库连接池中的对象
    public static Connectoin getConnection()throws SQLException{
        Connection conn=threadLocal.get();
        if(conn=null){
            conn=ds.getConnection();
            threadLocal.set(conn);
        }
            return conn;
    }
    //开启事务
    public static void startThransaction(){
        try{
            //获取连接
            Connection conn=getConnection();
            //开启事务
            conn.setAutoCommit(false);
        }cath (SQLException e){
            e.printStackTrace();
        }
    }
    //提交事务
    public static void commit(){
        try{
            //获取连接
            Connection conn=threadLocal.get();

            //提交事务
            if(conn!=null){
                conn.commit();
            }cath (SQLException e){
                e.printStackTrace();
            }    
        }
    //回滚事务
    public static void rollback(){
            try{
                //获取连接
                Connection conn=threadLocal.get();
                //回滚事务
                if(conn!=null){
                    conn.rollback();
                }cath (SQLException e){
                    e.printStackTrace();
                }    
            }
        //关闭数据库连接,释放资源
        public static void close(){
                //获取连接
                Connection conn=threadLocal.get();
                if(conn!=null){
                    conn.close();
                }cath (SQLException e){
                    e.printStackTrace();
                }finally{
                    //从集合中移除当前绑定的连接
                    threadLocal.remove();
                    conn=null;
                }
            }
        }
    }