数据库连接池技术笔记——2

Spring JDBC

   Spring框架对JDBC的简单封装。提供了一个JDBCTemplate对象简化JDBC的开发

* 步骤:
  1. 导入jar包

    commons-logging-1.2.jar

    spring-beans-5.0.0.RELEASE.jar

    spring-core-5.0.0.RELEASE.jar

    spring-jdbc-5.0.0.RELEASE.jar

    spring-tx-5.0.0.RELEASE.jar
  2. 创建JdbcTemplate对象。依赖于数据源DataSource
    * JdbcTemplate template = new JdbcTemplate(ds);

  3. 调用JdbcTemplate的方法来完成CRUD的操作
    * update():执行DML语句。增、删、改语句
    * queryForMap():查询结果将结果集封装为map集合,将列名作为key,将值作为value 将这条记录封装为一个map集合
    * 注意:这个方法查询的结果集长度只能是1
    * queryForList():查询结果将结果集封装为list集合
      * 注意:将每一条记录封装为一个Map集合,再将Map集合装载到List集合中    
    * query():查询结果,将结果封装为JavaBean对象
    * query的参数:RowMapper
      * 一般我们使用BeanPropertyRowMapper实现类。可以完成数据到JavaBean的自动封装
    * new BeanPropertyRowMapper<类型>(类型.class)
    * queryForObject:查询结果,将结果封装为对象
      * 一般用于聚合函数的查询

JDBCTemplate后使用的连接池的封装:

druid的封装:
    
public class JDBCUtils {

    private static DataSource ds;

    static {

        try {
            //加载配置文件
            Properties pro = new Properties();
            //使用ClassLoader加载配置文件,获取字节输入流
            InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties");
            pro.load(is);

            //初始化连接池对象
            ds = DruidDataSourceFactory.createDataSource(pro);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    /**
     * 获取连接池对象
     */
    public static DataSource getDataSource(){
        return ds;
    }

    /**
     * 获取连接connection对象
     */
    public static Connection getConnection() throws SQLException {
        return ds.getConnection();
    }
}

c3p0封装:

public class JDBCUtils {

    //1.定义成员变量 DataSource
    private static DataSource ds =null ;
    /**
     *
     * @return 返回数据库连接池对象
     * @throws SQLException
     */
    public static Connection getConnection() throws SQLException {
        //创建数据库的连接对象
         ds = new ComboPooledDataSource();
        /*//获取连接对象
        Connection coon = ds.getConnection();
        return coon;*/

        return ds.getConnection();
    }

/** * 返回连接池 * @return */ public static DataSource getDataSource(){ return ds; } }

 JDBCTemplate

/**
 * jdbctemplate入门
 */
public class JDBCTemplateDemo01 {

    public static void main(String[] args) {

        //1.导包
        //2.创建JDBCTemplate对象
        JdbcTemplate template = new JdbcTemplate(JDBCUtils3.getDataSource());
        //3.调用方法
        /*String sql ="update user set password = ? where username = ?";
        int num = template.update(sql, "12345", "asd");
        System.out.println(num);*/

        /*String sql = "select * from user where username = ?;";
        Map<String, Object> asd = template.queryForMap(sql);
        System.out.println(asd);*/

        /*String sql = "select * from user;";
        List<Map<String, Object>> maps = template.queryForList(sql);
        System.out.println(maps);*/

        String sql ="select * from user;";
        List<User> query = template.query(sql, new RowMapper<User>() {
            @Override
            public User mapRow(ResultSet rs, int i) throws SQLException {
                User user = new User();
                user.setUsername(rs.getString("username"));
                user.setPassword(rs.getString("password"));
                return user;
            }
        });
        System.out.println(query);
    }
}
 

猜你喜欢

转载自www.cnblogs.com/naigai/p/11801764.html
今日推荐