黑马程序员技术交流社区

标题: [成都校区]Druid和JDBCTemplate的联合使用 [打印本页]

作者: zhanglei_    时间: 2019-5-9 13:23
标题: [成都校区]Druid和JDBCTemplate的联合使用
    1. Spring框架对JDBC进行了简单的封装, 通过new JDBCTemplate(DataSource ds)构造方法来传入数据源DataSource,获得JDBCTemplate对象,再通过JDBCTemplate对象的具体方法来实现对数据库的CURD操作。这里的DataSource 即为数据库连接池,可以通过Druid数据库连接技术来获得, 一般在工具类中来完成此功能,代码如下:public class JDBCUtils {
    // 定义成员变量DataSoure
    private static DataSource ds;
    // 静态代码初始化连接池
    static {
        try{            // 获取配置文件的信息
            Properties prop = new Properties();
            InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties");
            prop.load(is);
            // 获取Datasource
            ds = DruidDataSourceFactory.createDataSource(prop);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    // 定义获取连接的方法
    public static Connection getConnection() throws SQLException {
        return ds.getConnection();
    }
    // 返回连接池
    public static DataSource getDataSource(){
        return ds;
    }
    //释放资源方法 针对数据库查询操作
    public static void close(ResultSet rs, Statement statement, Connection conn){
        if(rs!=null){
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(statement!=null){
            try {
                statement.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if(conn!=null){
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }    //释放资源的重载方法 针对数据库增删改操作    public static void close(Statement statement, Connection conn){
        close(null, statement, conn);
    }
}2. 在得到JDBCTemplate对象之后,要对数据库进行增删改查的操作,实现代码如下:public class JdbcTemplateDemo01 {
    private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
    // 修改数据
    @Test
    public void test1(){
        template.update("update user set username = ? where  id = ?", "zhangsang", 1);
    }
    // 添加数据
    @Test
    public void test2(){
        template.update("insert into user values (?, ?, ?)", null, "yang", "zdlaslsy");
    }
    // 删除数据
    @Test
    public void test3(){
        template.update("");
    }
    // 查询单条数据,封装为map
    @Test
    public void test4(){
        String sql = "select * from emp where id = ?";
        Map<String, Object> map = template.queryForMap(sql, 1001);
        System.out.println(map);
    }

    // 查询多条数据,封装为List
    @Test
    public void test5(){
        String sql = "select * from emp ";
        List<Map<String, Object>> list = template.queryForList(sql);
        System.out.println(list);
    }

    // 查询所有记录,将其封装为Emp对象的List的集合
    @Test
    public void test6(){
        String sql = "select * from emp";
        List<Emp> list = template.query(sql, new BeanPropertyRowMapper<Emp>(Emp.class));
        for(Emp emp:list){
            System.out.println(emp);
        }

    }
}






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2