(Database course design) Database connection pool && Dbutils to realize database operation (free hands, no need to add, delete, modify and check by yourself)

content

1. Create a Druit database connection pool properties file

2. Create a database connection pool tool class

3. Test whether the database connection pool is successfully created

 4. Using Dbutils.jar, use the packaged addition, deletion, modification and query method

 5. Test query results


 

1. Create a Druit database connection pool properties file

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

2. Create a database connection pool tool class

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. Test whether the database connection pool is successfully created

/**
 * 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. Using Dbutils.jar, use the packaged addition, deletion, modification and query method

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. Test query results

 

 

Guess you like

Origin blog.csdn.net/qq_52655865/article/details/124065035