Spring知识点总结(五)Spring整合JDBC
2018-11-09 02:38:04来源:博客园 阅读 ()
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 @Test 2 public void test02() throws SQLException{ 3 DataSource source = (DataSource) context.getBean("dataSource"); 4 Connection conn = source.getConnection(); 5 PreparedStatement ps = conn.prepareStatement("select * from users"); 6 ResultSet rs = ps.executeQuery(); 7 while(rs.next()){ 8 int id = rs.getInt("id"); 9 String name = rs.getString("name"); 10 int age = rs.getInt("age"); 11 User user = new User(id,name,age); 12 System.out.println(user); 13 } 14 } 15 16 @Test 17 public void test03() throws SQLException{ 18 JdbcTemplate jdbcTemplate = (JdbcTemplate) context.getBean("jdbcTemplate"); 19 List<Map<String,Object>> list = jdbcTemplate.queryForList("select * from users"); 20 System.out.println(list); 21 } 22 @Test 23 public void test04() throws SQLException{ 24 JdbcTemplate jdbcTemplate = (JdbcTemplate) context.getBean("jdbcTemplate"); 25 SqlRowSet srs = jdbcTemplate.queryForRowSet("select * from users where id = ?",2); 26 srs.next(); 27 System.out.println(srs.getString("name")); 28 } 29 @Test 30 public void test05() throws SQLException{ 31 JdbcTemplate jdbcTemplate = (JdbcTemplate) context.getBean("jdbcTemplate"); 32 int n = jdbcTemplate.update("insert into users values (null,?,?)", "ddd",23); 33 System.out.println("修改成功,影响到的行数为:"+n); 34 } 35 @Test 36 public void test06() throws SQLException{ 37 JdbcTemplate jdbcTemplate = (JdbcTemplate) context.getBean("jdbcTemplate"); 38 int n = jdbcTemplate.update("update users set age = ? where id = ?", 33,4); 39 System.out.println("修改成功,影响到的行数为:"+n); 40 } 41 @Test 42 public void test07() throws SQLException{ 43 JdbcTemplate jdbcTemplate = (JdbcTemplate) context.getBean("jdbcTemplate"); 44 int n = jdbcTemplate.update("delete from users where id = ?", 4); 45 System.out.println("修改成功,影响到的行数为:"+n); 46 }
c. 使用RowMapper封装bean
RowMapper接口定义了对象到列的映射关系,可以帮助我们在查询时自动封装bean。
1 public class UserRowMapper implements RowMapper<User> { 2 3 @Override 4 public User mapRow(ResultSet rs, int i) throws SQLException { 5 User user = new User(); 6 user.setId(rs.getInt("id")); 7 user.setName(rs.getString("name")); 8 user.setAge(rs.getInt("age")); 9 return user; 10 } 11 12 } 13 14 /** 15 * 使用RowMap封装bean 16 */ 17 @Test 18 public void test08(){ 19 JdbcTemplate jdbcTemplate = (JdbcTemplate) context.getBean("jdbcTemplate"); 20 List<User> list = jdbcTemplate.query("select * from users",new UserRowMapper()); 21 System.out.println(list); 22 } 23 /** 24 * 使用RowMap封装bean 25 */ 26 @Test 27 public void test09(){ 28 JdbcTemplate jdbcTemplate = (JdbcTemplate) context.getBean("jdbcTemplate"); 29 User user = jdbcTemplate.queryForObject("select * from users where id = ?",new UserRowMapper(),2); 30 System.out.println(user); 31 }
d. 使用BeanPropertyRowMapper自动进行映射
BeanPropertyRowMapper内部可以使用指定类进行反射(内省)来获知类内部的属性信息,自动映射到表的列。使用它一定要注意,类的属性名要和对应表的列名必须对应的上,否则属性无法自动映射。BeanPropertyRowMapper底层通过反射(内省)来实现,相对于之前自己写的RowMapper效率比较低。
1 /** 2 * 通过BeanPropertyRowMapper实现自动封装bean 3 */ 4 @Test 5 public void test10(){ 6 JdbcTemplate jdbcTemplate = (JdbcTemplate) context.getBean("jdbcTemplate"); 7 List<User> list = jdbcTemplate.query("select * from users", new BeanPropertyRowMapper(User.class)); 8 System.out.println(list); 9 } 10 /** 11 * 通过BeanPropertyRowMapper实现自动封装bean 12 */ 13 @Test 14 public void test11(){ 15 JdbcTemplate jdbcTemplate = (JdbcTemplate) context.getBean("jdbcTemplate"); 16 User user = jdbcTemplate.queryForObject("select * from users where id = ?", new BeanPropertyRowMapper(User.class),2); 17 System.out.println(user); 18 }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:比较准确完整的中文字符正则校验
下一篇:如何用栈实现队列
- Spring系列.ApplicationContext接口 2020-06-11
- springboot2配置JavaMelody与springMVC配置JavaMelody 2020-06-11
- 给你一份超详细 Spring Boot 知识清单 2020-06-11
- SpringBoot 2.3 整合最新版 ShardingJdbc + Druid + MyBatis 2020-06-11
- 掌握SpringBoot-2.3的容器探针:实战篇 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash