经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » Java » 查看文章
Spring知识点总结(五)Spring整合JDBC
来源:cnblogs  作者:南岭寒  时间:2018/11/9 11:24:14  对本文有异议

 1. 回顾JDBC
        a. java操作关系型数据的API。导入相关数据库的驱动包后可以通过JDBC提供的接口来操作数据库。
        b. 实现JDBC的六个步骤
            注册数据库驱动
            获取数据库连接
            获取传输器对象
            传输sql执行获取结果集对象
            遍历结果集获取信息
            关闭资源
        c. 数据库连接池(数据源)
    C3P0连接池

2.Spring整合JDBC

      a. 导入相关开发包
            

 


        b. 将数据源交于Spring管理


            

         

 


        c.通过spring获取数据源,获取连接,操作数据库

 

3.Spring中的JDBC模板类

        使用模板类,能够极大的简化原有JDBC的编程过程,让数据库操作变得简单.
        a. 在Spring中配置JDBC模板类
            

 


        b. 使用JDBC模板类实现增删改查
          

  1. 1 @Test
  2. 2 public void test02() throws SQLException{
  3. 3 DataSource source = (DataSource) context.getBean("dataSource");
  4. 4 Connection conn = source.getConnection();
  5. 5 PreparedStatement ps = conn.prepareStatement("select * from users");
  6. 6 ResultSet rs = ps.executeQuery();
  7. 7 while(rs.next()){
  8. 8 int id = rs.getInt("id");
  9. 9 String name = rs.getString("name");
  10. 10 int age = rs.getInt("age");
  11. 11 User user = new User(id,name,age);
  12. 12 System.out.println(user);
  13. 13 }
  14. 14 }
  15. 15
  16. 16 @Test
  17. 17 public void test03() throws SQLException{
  18. 18 JdbcTemplate jdbcTemplate = (JdbcTemplate) context.getBean("jdbcTemplate");
  19. 19 List<Map<String,Object>> list = jdbcTemplate.queryForList("select * from users");
  20. 20 System.out.println(list);
  21. 21 }
  22. 22 @Test
  23. 23 public void test04() throws SQLException{
  24. 24 JdbcTemplate jdbcTemplate = (JdbcTemplate) context.getBean("jdbcTemplate");
  25. 25 SqlRowSet srs = jdbcTemplate.queryForRowSet("select * from users where id = ?",2);
  26. 26 srs.next();
  27. 27 System.out.println(srs.getString("name"));
  28. 28 }
  29. 29 @Test
  30. 30 public void test05() throws SQLException{
  31. 31 JdbcTemplate jdbcTemplate = (JdbcTemplate) context.getBean("jdbcTemplate");
  32. 32 int n = jdbcTemplate.update("insert into users values (null,?,?)", "ddd",23);
  33. 33 System.out.println("修改成功,影响到的行数为:"+n);
  34. 34 }
  35. 35 @Test
  36. 36 public void test06() throws SQLException{
  37. 37 JdbcTemplate jdbcTemplate = (JdbcTemplate) context.getBean("jdbcTemplate");
  38. 38 int n = jdbcTemplate.update("update users set age = ? where id = ?", 33,4);
  39. 39 System.out.println("修改成功,影响到的行数为:"+n);
  40. 40 }
  41. 41 @Test
  42. 42 public void test07() throws SQLException{
  43. 43 JdbcTemplate jdbcTemplate = (JdbcTemplate) context.getBean("jdbcTemplate");
  44. 44 int n = jdbcTemplate.update("delete from users where id = ?", 4);
  45. 45 System.out.println("修改成功,影响到的行数为:"+n);
  46. 46 }

 

 


        c. 使用RowMapper封装bean
            RowMapper接口定义了对象到列的映射关系,可以帮助我们在查询时自动封装bean。

  1. 1 public class UserRowMapper implements RowMapper<User> {
  2. 2
  3. 3 @Override
  4. 4 public User mapRow(ResultSet rs, int i) throws SQLException {
  5. 5 User user = new User();
  6. 6 user.setId(rs.getInt("id"));
  7. 7 user.setName(rs.getString("name"));
  8. 8 user.setAge(rs.getInt("age"));
  9. 9 return user;
  10. 10 }
  11. 11
  12. 12 }
  13. 13
  14. 14 /**
  15. 15 * 使用RowMap封装bean
  16. 16 */
  17. 17 @Test
  18. 18 public void test08(){
  19. 19 JdbcTemplate jdbcTemplate = (JdbcTemplate) context.getBean("jdbcTemplate");
  20. 20 List<User> list = jdbcTemplate.query("select * from users",new UserRowMapper());
  21. 21 System.out.println(list);
  22. 22 }
  23. 23 /**
  24. 24 * 使用RowMap封装bean
  25. 25 */
  26. 26 @Test
  27. 27 public void test09(){
  28. 28 JdbcTemplate jdbcTemplate = (JdbcTemplate) context.getBean("jdbcTemplate");
  29. 29 User user = jdbcTemplate.queryForObject("select * from users where id = ?",new UserRowMapper(),2);
  30. 30 System.out.println(user);
  31. 31 }

 

 


        d. 使用BeanPropertyRowMapper自动进行映射
            BeanPropertyRowMapper内部可以使用指定类进行反射(内省)来获知类内部的属性信息,自动映射到表的列。使用它一定要注意,类的属性名要和对应表的列名必须对应的上,否则属性无法自动映射。BeanPropertyRowMapper底层通过反射(内省)来实现,相对于之前自己写的RowMapper效率比较低

  1. 1 /**
  2. 2 * 通过BeanPropertyRowMapper实现自动封装bean
  3. 3 */
  4. 4 @Test
  5. 5 public void test10(){
  6. 6 JdbcTemplate jdbcTemplate = (JdbcTemplate) context.getBean("jdbcTemplate");
  7. 7 List<User> list = jdbcTemplate.query("select * from users", new BeanPropertyRowMapper(User.class));
  8. 8 System.out.println(list);
  9. 9 }
  10. 10 /**
  11. 11 * 通过BeanPropertyRowMapper实现自动封装bean
  12. 12 */
  13. 13 @Test
  14. 14 public void test11(){
  15. 15 JdbcTemplate jdbcTemplate = (JdbcTemplate) context.getBean("jdbcTemplate");
  16. 16 User user = jdbcTemplate.queryForObject("select * from users where id = ?", new BeanPropertyRowMapper(User.class),2);
  17. 17 System.out.println(user);
  18. 18 }

 

 



  

 

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号