天天看點

【JDBC】DBUtils操作資料庫,增删改查

第一步:導入jar包

  1. 導入mysql的驅動包

    mysql-connector-java-8.0.11.jar

  2. 導入C3P0的jar包

    c3p0-0.9.5.2.jar

    mchange-commons-java-0.2.11.jar

    在src目錄下添加c3p0-config.xml配置檔案

  3. 導入commons-dbutils-1.6.jar
  4. 導入JUnit測試包

    junit-4.12.jar

    hamcrest-core-1.3.jar

    【JDBC】DBUtils操作資料庫,增删改查

DBUtils

将jdbc進行封裝,業務實作上,開發,執行 mybatis dbutils元件提供了一組API

增加dbutils元件jar API

query.update(sql,params); 執行ddl dml中insert update delete

query.query(sql,ResultSetHandler,params)

ResultSetHandler:

處理查詢出來的一條記錄 User類型對象

​ 查詢出多條記錄 List

​ select count(*) from tbl_user

編寫測試類

public class TeacherTest {
    private QueryRunner query=null;
    private ComboPooledDataSource dataSource=new ComboPooledDataSource();
    @Before
    /**
    @Before标注過的方法是針對這個類檔案中所有的@Test标注過的測試方法,
    每一個@Test方法執行前都需要去執行一遍@Before标注的setup()方法。*/
    public void before(){
        query=new QueryRunner(dataSource);
    }

    //測試連接配接有沒有成功
    @Test
    public void testC3p0() {
        try {
            Connection connection = dataSource.getConnection();
            //輸出連接配接的資料庫名字
            System.out.println(connection.getCatalog());
            connection.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
        @Test
        /*插入資料*/
    public  void testInsert(){
    String sql="insert into teacher values(?,?)";
    Object[] params={05,"bigdata"};
        try {
            int rs=query.update(sql,params);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    @Test
    /*根據ID查找*/
    public  void testFindById(){
    //要變成實體對象傳回,是以要添加實體類
        String sql="select * from teacher where t_id=?";
        //ResultSetHandler<T>  對結果集處理的類
        //處理查詢出來的一條記錄   Teacher類型對象
        //查詢出多條記錄  List<Teacher>
        //select count(*) from teacher
        Teacher teacher=null;
        try {
            //完成反射,将查詢記錄執行個體化為teacher對象
            //類名和字段名要相同
            teacher=query.query(sql, new BeanHandler<Teacher>(Teacher.class), 5);
        }catch (Exception e){
            e.printStackTrace();
        }
        System.out.println(teacher);
    }
    @Test
    /**
     * 驗證密碼和使用者名是否一緻
     * 根據使用者名,和密碼查詢,如果有記錄,則表示使用者名密碼一緻
     */
    public void UserNamePassword(){
        String sql="select * from teacher where t_id=? and t_name=?";
        Teacher teacher=null;
        try{
            teacher=query.query(sql,new BeanHandler<Teacher>(Teacher.class),01,"葉平");
        }catch (Exception e){
            e.printStackTrace();
        }
        System.out.println(teacher);
    }

    @Test
    /**
     * 查詢所有資料
     */
    public void testFindAll(){
        String sql="select * from teacher";
        List<Teacher> list=null;
        try{
            //傳回一個集合
            list=query.query(sql,new BeanListHandler<Teacher>(Teacher.class));
        }catch (Exception e){
            e.printStackTrace();
        }
        for(Teacher t:list){
            System.out.println(t);
        }
    }

    @Test
    /**
     * 分頁查詢
     */
    public void testFindPage(){
        String sql="select * from teacher limit ?,?";
        List<Teacher> list=null;
        try{
            list=query.query(sql,new BeanListHandler<Teacher>(Teacher.class),4,2);
        }catch (Exception e){
            e.printStackTrace();
        }
        for(Teacher t:list){
            System.out.println(t);
        }
    }

    @Test
    /**
     *
     * 傳回的結果是一個數字,使用 ScalarHandler<Long>
     */
    public void  testCount(){
        String sql="select count(*) from teacher";
        long count=-1;
        try {
            count=query.query(sql, new ScalarHandler < Long > ());
        }catch (Exception e){
            e.printStackTrace();
        }
        System.out.println(count);
    }
    }
           

建立實體類

package com.kgc.one.entity;

public class Teacher {
    private int t_id;
    private String t_name;

    public Teacher(){}
    public Teacher(int t_id, String t_name) {
        this.t_id = t_id;
        this.t_name = t_name;
    }

    public int getT_id() {
        return t_id;
    }

    public void setT_id(int t_id) {
        this.t_id = t_id;
    }

    public String getT_name() {
        return t_name;
    }

    public void setT_name(String t_name) {
        this.t_name = t_name;
    }

    @Override
    public String toString() {
        return "Teacher{" +
                "t_id=" + t_id +
                ", t_name='" + t_name + '\'' +
                '}';
    }
}