DBUtils完成增删改

编写工具类C3P0Utils02

首先:导入相关jar包--mysql-connector-java-5.1.37-bin.jar、commons-dbutils-1.6.jar、c3p0-0.9.1.2.jar、mchange-commons-java-0.2.11.jar

其次:导入配置文件c3p0-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
  <default-config><!-- 默认配置 -->
    <property name="driverClass">com.mysql.jdbc.Driver</property>
    <property name="jdbcUrl">jdbc:mysql://localhost:3306/day04</property>
    <property name="user">root</property>
    <property name="password">123</property>
    <property name="initialPoolSize">10</property>

 </c3p0-config>

 

编写工具类

public class C3P0Utils02 {

    private static ComboPooledDataSource ds = new ComboPooledDataSource();
    
    public static DataSource getDataSource(){
        return ds;
    }
    
    //static代码块设置数据库连接四大要素
    
    public static Connection getConnection() throws SQLException{
        //获取连接,不要自己去DriverManager获取,而是从C3P0连接池获取
        return ds.getConnection();
    }
    
    //关闭所有资源的统一代码
    public static void closeAll(Connection conn,Statement st,ResultSet rs){
        //负责关闭
        if(conn != null){
            try {
                conn.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        if(st != null){
            try {
                st.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        if(rs != null){
            try {
                rs.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
}

测试

import java.sql.SQLException;

import org.apache.commons.dbutils.QueryRunner;

/**
 * DBUtils框架的介绍
 * 
 * DBUtils类:主要负责关闭连接,释放资源,开启事务等操作
 * 
 * QueryRunner:负责我们对象数据库的CURD操作(核心类)
 * 
 * ResultSetHandler:结果集处理类,帮我我们处理结果集(帮助我们封装数据的)
 * 
 * QueryRunner类的使用:
 *         构造:
 *         public QueryRunner(DataSource ds);//需要一个连接池,它自动从连接池中拿连接
 *         public QueryRunner();//不需要连接,用来进行事务操作,明天说
 *         方法:
 *              int update(String sql, Object... params);//主要执行增删改
 *             query(String sql, ResultSetHandler<T> rsh, Object... params);//主要执行查询
 * 
 * 
 * @author yingpeng
 *
 */
public class DBUtilsDemo {

    public static void main(String[] args) throws SQLException {
        // TODO Auto-generated method stub
//        insert();
//        delete();
        update();
    }
    
    //
    public static void insert() throws SQLException{
        QueryRunner qr = new QueryRunner(C3P0Utils02.getDataSource());
        //插入,可变参数params=obj进行赋值
        Object[] obj = {16,"皮鞋类"};
        int rows = qr.update("insert into category (cid,cname) values (?,?)", obj);
        System.out.println(rows);
        
//        System.out.println(    new QueryRunner(C3P0Utils02.getDataSource()).
//                update("insert into category (cid,cname) values (?,?)",
//                        new Object[]{17,"成人用品类"}));
    }
    //
    public static void delete() throws SQLException{
        //1.创建QueryRunner对象,给定连接池
        QueryRunner qr = new QueryRunner(C3P0Utils02.getDataSource());
        //2.执行
        int rows = qr.update("delete from category where cid = ?", new Object[]{17});
        System.out.println(rows);
    }
    //修改
    public static void update() throws SQLException{
        //1.创建QueryRunner对象,给定连接池
        QueryRunner qr = new QueryRunner(C3P0Utils02.getDataSource());
        //2.执行
        int rows = qr.update("update category set cname = ? where cid = ?", new Object[]{"运动鞋类",16});
        System.out.println(rows);
    }
    //查询
    public static void query(){
        
    }

}

专门用来进行查询操作

1 编写Javabean用来存储参数

public class Category {
    private String cid;
    private String cname;
    public String getCid() {
        return cid;
    }
    public void setCid(String cid) {
        this.cid = cid;
    }
    public String getCname() {
        return cname;
    }
    public void setCname(String cname) {
        this.cname = cname;
    }
    @Override
    public String toString() {
        return "Category [cid=" + cid + ", cname=" + cname + "]";
    }
    public Category() {
        super();
        // TODO Auto-generated constructor stub
    }
    public Category(String cid, String cname) {
        super();
        this.cid = cid;
        this.cname = cname;
    }
    
}

DBUtils进行查询操作

 

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

import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.ArrayHandler;
import org.apache.commons.dbutils.handlers.ArrayListHandler;
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.MapHandler;
import org.apache.commons.dbutils.handlers.MapListHandler;
import org.apache.commons.dbutils.handlers.ScalarHandler;

import com.itheima.domain.Category;

/**
 * 专门用来执行数据库的查询操作
 *         1.QueryRunner(DataSource)
 *         2.query(String sql, ResultSetHandler<T> rsh, Object... params);//主要执行查询
 *         
 *         ResultSetHandler:结果集处理类
 *             我们发现ResultSetHandler是一个接口,
 *             而框架中给我们定义了一堆实现类
 *             ArrayHandler:
 *             ArrayListHandler
 *             **BeanHandler
 *             **BeanListHandler
 *             ColumnListHandler
 *             KeyedHandler
 *             MapHandler
 *             MapListHandler
 *             **ScalarHandler
 *             
 * 
 * 
 * @author yingpeng
 *
 */
public class DBUtilsDemo02 {
    public static void main(String[] args) throws SQLException {
        demo08();
    }
    //ArrayHandler处理类的使用
    public static void demo01() throws SQLException{
        //1.创建QueryRunner对象
        QueryRunner qr = new QueryRunner(C3P0Utils02.getDataSource());
        //2.执行查询
        String sql = "select * from category";
        Object[] objs = qr.query(sql, new ArrayHandler());
        //3.打印
        for (Object obj : objs) {
            System.out.println(obj);
        }
    }
    
    //ArrayListHandler处理类的使用
    public static void demo02() throws SQLException{
        //1.创建QueryRunner对象
        QueryRunner qr = new QueryRunner(C3P0Utils02.getDataSource());
        //2.执行查询
        String sql = "select * from category";
        List<Object[]>  list = qr.query(sql, new ArrayListHandler());
        //3.打印
        for (Object[] objects : list) {
            System.out.println(objects[0]+"\t"+objects[1]);
        }
    }
    //BeanHandler处理类的使用
    public static void demo03() throws SQLException{
        //1.创建QueryRunner对象
        QueryRunner qr = new QueryRunner(C3P0Utils02.getDataSource());
        //2.执行查询
        String sql = "select * from category";
        Category c = qr.query(sql, new BeanHandler<Category>(Category.class));
        //3
        System.out.println(c);
    }
    //BeanListHandler处理类的使用
    public static void demo04() throws SQLException{
        //1.创建QueryRunner对象
        QueryRunner qr = new QueryRunner(C3P0Utils02.getDataSource());
        //2.执行查询
        String sql = "select * from category";
        List<Category> list = qr.query(sql, new BeanListHandler<Category>(Category.class));
        //3
        for (Category category : list) {
            System.out.println(category);
        }
    }
    
    //ColumnListHandler处理类的使用
    public static void demo05() throws SQLException{
        //1.创建QueryRunner对象
        QueryRunner qr = new QueryRunner(C3P0Utils02.getDataSource());
        //2.执行查询
        String sql = "select * from category";
        List<Object> ids = qr.query(sql, new ColumnListHandler<Object>("cname"));
        //3
        System.out.println(ids);
    }
    
    //MapHandler处理类的使用
    public static void demo06() throws SQLException{
        //1.创建QueryRunner对象
        QueryRunner qr = new QueryRunner(C3P0Utils02.getDataSource());
        //2.执行查询
        String sql = "select * from category";
        Map<String, Object> map = qr.query(sql,new MapHandler());
        //3
        System.out.println(map);
    }
    //MapListHandler处理类的使用
    public static void demo07() throws SQLException{
        //1.创建QueryRunner对象
        QueryRunner qr = new QueryRunner(C3P0Utils02.getDataSource());
        //2.执行查询
        String sql = "select * from category";
        List<Map<String, Object>> maps = qr.query(sql,new MapListHandler());
        //3
        System.out.println(maps);
    }
    
    //ScalarHandler处理类的使用
    public static void demo08() throws SQLException{
        //1.创建QueryRunner对象
        QueryRunner qr = new QueryRunner(C3P0Utils02.getDataSource());
        //2.执行查询
        String sql = "select count(*) from category";
        Object count = qr.query(sql,new ScalarHandler<Object>());
        //3
        System.out.println(count);
    }
}

 

posted on 2019-07-02 12:52  backend  阅读(215)  评论(0编辑  收藏  举报

导航