Spring JDBC

423 阅读2分钟

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

步骤:

1.导入jar包
2.穿件JDbcTemplate对象。依赖于数据源DataSource
    * JdbcTemplate Template = new JdbcTemplate(ds);
3.调用JdbcTemplate的方法来完成CRUD的操作
    * update():执行DML语句。 增删改语句
    * queryForMap():查询结果将结果集封装为map集合
        *注意:这个方法查询的结果集长度只能是1
    * queryForList():查询结果将结果集封装为list集合
        *注意:将每一条记录封装到一个Map集合,再Map集合装载到List集合中
    *query():查询结果,将结果封装为JavaBean对象
        *query的参数:RowMapper
            *一般我们使用BeanPropertyRowMapper实现来。可以完成数据到JavaBean的自动封装
            *new BeanPropertyRowMapper<类型>(类型.class)
    *queryForObject:查询结果,将结果分装为对象
        *一般用于聚合函数的查询
4.练习
     * 1,修改1号数据库的name 为 lkh
     * 2.添加一条记录
     * 3.删除刚才添加的记录
     * 4,查询id为1的记录,将其封装为Map集合
     * 5.查询所有记录,将其封装为Lish
     * 6.查询所有记录,将其分装为Emp对象的List集合
     * 7,查询总记录数
public class JdbcTemplateDemo2 {
    //1 获取JDBCTemplate对象 成员变量获取以后之后不用重复获取
    private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
    /**
     * 1,修改1号数据库的name 为 lkh
      */
    @Test
    public void test1(){
        //2.定义sql
        String sql ="update user set username ='lkh' where id =1";
        //3.执行sql
        int count =template.update(sql);
        System.out.println(count);
    }
/**
 *  2.添加一条记录
 */
    @Test
    public  void test2(){
       String sql="insert into user(id,username,password) values(?,?,?)";
       int count=template.update(sql,null,"wql","lkh");
        System.out.println(count);

    }
    /**
     *3.删除刚才添加的记录
     */
    @Test
    public void test3(){
        String sql="delete from user where id =?";
        int count= template.update(sql,7);
        System.out.println(count);
    }
    /**
     * 4,查询id为1的记录,将其封装为Map集合
     * 注意:查询的结果集长度只能是1
     */
    @Test
    public void test4(){
        String sql="select * from user where id=? ";
        Map<String,Object> map=template.queryForMap(sql,1);
        System.out.println(map);
    }
    /**
     * 5.查询所有记录,将其封装为List
     */
    @Test
    public void test5(){
        String sql="select * from user";
        List<Map<String,Object>> list= template.queryForList(sql);
        for (Map<String,Object>stringObjectMap:list){
            System.out.println(stringObjectMap);
        }
    }

    /**
     * 查询所有记录,将其封装为Emp对象的List集合
     */
    //自己写的
    @Test
    public void test6(){
        String sql ="select * from user";
        List<Emp> list = template.query(sql, new RowMapper<Emp>() {
            @Override
            public Emp mapRow(ResultSet rs, int i) throws SQLException {
                Emp emp = new Emp();
                int id = rs.getInt("id");
                String username = rs.getString("username");
                String password = rs.getString("password");
                emp.setId(id);
                emp.setPassword(password);
                emp.setUsername(username);
                return emp;
            }
        });
        for(Emp emp:list){
            System.out.println(emp);
        }
    }
    //提供的
    @Test
    public void test6_2(){
        String sql ="select * from user";
        List<Emp> list=template.query(sql,new BeanPropertyRowMapper<Emp>(Emp.class));
        for (Emp emp:list){
            System.out.println(emp);
        }
    }

    @Test
    public void test7(){
        String  sql=" select count(id) from user";
        List<Long> total=template.queryForList(sql,Long.class);
        System.out.println(total);

    }
}