(データベースコース設計)データベース操作を実現するためのデータベース接続プール&& Dbutils(フリーハンド、自分で追加、削除、変更、確認する必要はありません)

コンテンツ

1.Druitデータベース接続プールのプロパティファイルを作成します

2.データベース接続プールツールクラスを作成します

3.データベース接続プールが正常に作成されたかどうかをテストします

 4. Dbutils.jarを使用して、パッケージ化された追加、削除、変更、およびクエリの方法を使用します

 5.クエリ結果をテストします


 

1.Druitデータベース接続プールのプロパティファイルを作成します

driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/jdbc_db
username=root
password=anc123
initialSize=10
maxActive=20

2.データベース接続プールツールクラスを作成します

public class JDBCUtils {

  //druid数据库连接池创建数据连接对象
    /**
     * 采用静态类加载的方式在类第一次运行时创建数据库连接池,保证在程序未关闭之前,数据库连接池是存在的
     * 并且是不会被多次创建的,也不会被销毁的
     * @private static DataSource source :静态数据库连接池
     */
    private static DataSource source;
    static {
        try{
            //创建properties对象,用来封装从文件中获取的流数据
            Properties pros = new Properties();
            //采用类加载方式获取文件的内容,并封装成流
            InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("Druid.properties");
            //将流传入到pros对象中
            pros.load(is);
            //利用工厂类创建数据库连接池
            source = DruidDataSourceFactory.createDataSource(pros);
        }catch (Exception e){
            e.printStackTrace();
        }
    }
    public static Connection getConnByDruid() throws Exception {
        //所有的数据连接池要想被java所使用,都必须先实现sun公司提供的一个接口DateSource
        //获取数据库连接池对象
        Connection conn = source.getConnection();
        return conn;
    }
}

3.データベース接続プールが正常に作成されたかどうかをテストします

/**
 * druid测试数据库连接池技术类
 */
public class TestDruid {
    @Test
    public void getDruidConn() throws Exception {
        Properties pros = new Properties();
        InputStream is = ClassLoader.getSystemClassLoader().getResourceAsStream("Druid.properties");
        pros.load(is);
        //所有的数据连接池要想被java所使用,都必须先实现sun公司提供的一个接口DateSource
        //获取数据库连接池对象
        DataSource source = DruidDataSourceFactory.createDataSource(pros);
        Connection conn = source.getConnection();
        System.out.println(conn);

    }
}

 

 4. Dbutils.jarを使用して、パッケージ化された追加、削除、変更、およびクエリの方法を使用します

public class Testdbutil {
    //使用QueryRunner和数据库连接池实现数据库的增删改
    @Test
    public void testQueryRunnerUpdate() {
        Connection conn = null;
        try {
            QueryRunner queryRunner = new QueryRunner();
            conn = JDBCUtils.getConnByDruid();
            String sql = "insert into user_tab (id,name,balance) values(?,?,?)";
            int count = queryRunner.update(conn, sql, 154, "吴用", 10001);
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            JDBCUtils.closeResource(conn,null);
        }
    }

    //使用QueryRunner实现数据的单条查询
    @Test
    public void testQueryRunnerSelect() throws SQLException {
        Connection conn = null;
        try{
            conn = JDBCUtils.getConnByDruid();
            QueryRunner queryRunner = new QueryRunner();
            String sql = "select id,name,balance from user_tab where id = ?";
            BeanHandler beanHandler = new BeanHandler<User>(User.class);
            Object query = queryRunner.query(conn, sql, beanHandler, 109);
            System.out.println(query);
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            JDBCUtils.closeResource(conn,null);
        }

    }

    //使用QueryRunner实现查询多条语句
    @Test
    public void testQueryRunnerSelectManyInfo() throws SQLException {
        Connection conn = null;
        try{
            conn = JDBCUtils.getConnByDruid();
            QueryRunner queryRunner = new QueryRunner();
            String sql = "select id,name,balance from user_tab where id > ?";
            BeanListHandler<User> listHandler = new BeanListHandler<>(User.class);
            List<User> query = queryRunner.query(conn, sql, listHandler, 106);
            query.forEach(System.out::println);
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            JDBCUtils.closeResource(conn,null);
        }

    }

    //使用QueryRunner实现特殊查询
    @Test
    public void testQueryRunnerSelect3() {
        Connection conn = null;
        try{
            conn = JDBCUtils.getConnByDruid();
            QueryRunner queryRunner = new QueryRunner();
            String sql = "select count(*) from user_tab";
            ScalarHandler<Object> handler = new ScalarHandler<>();
            Long query =(Long) queryRunner.query(conn, sql, handler);
            System.out.println("user表中有"+query+"条数据");
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            //悄悄的关闭资源
            DbUtils.closeQuietly(conn);
        }

    }

}

5.クエリ結果をテストします

 

 

おすすめ

転載: blog.csdn.net/qq_52655865/article/details/124065035
おすすめ