一文解析Spring JDBC Template的使用指导

打印 上一主题 下一主题

主题 1076|帖子 1076|积分 3228

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
摘要:Spring框架对JDBC的简单封装。提供了一个JDBCTemplate对象简化JDBC的开发。
本文分享自华为云社区《Spring JdbcTemplate使用解析》,作者: 共饮一杯无 。
Spring框架对JDBC的简单封装。提供了一个JDBC Template对象简化JDBC的开发
步骤

1.导入jar包
  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-jdbc</artifactId>
  4. </dependency>
复制代码
2. 创建JdbcTemplate对象。依赖于数据源DataSource
  1. JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
复制代码
调用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:查询结果,将结果封装为对象
一般用于聚合函数的查询
练习

需求


  • 修改1号数据的 salary 为 10000
  • 添加一条记录
  • 删除刚才添加的记录
  • 查询id为1的记录,将其封装为Map集合
  • 查询所有记录,将其封装为List
  • 查询所有记录,将其封装为Emp对象的List集合
  • 查询总记录数
代码
  1. import com.zjq.javabase.base27.domain.Emp;
  2. import com.zjq.javabase.base27.utils.JDBCUtils;
  3. import org.junit.Test;
  4. import org.springframework.jdbc.core.BeanPropertyRowMapper;
  5. import org.springframework.jdbc.core.JdbcTemplate;
  6. import org.springframework.jdbc.core.RowMapper;
  7. import java.sql.Date;
  8. import java.sql.ResultSet;
  9. import java.sql.SQLException;
  10. import java.util.List;
  11. import java.util.Map;
  12. /**
  13. * JdbcTemplate入门
  14. *
  15. * @author zjq
  16. */
  17. public class JdbcTemplateDemo2 {
  18. //1. 获取JDBCTemplate对象
  19. private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());
  20. /**
  21.      * 1. 修改1号数据的 salary 为 10000
  22.      */
  23. @Test
  24. public void test1() {
  25. //2. 定义sql
  26. String sql = "update emp set salary = 10000 where id = 1";
  27. //3. 执行sql
  28. int count = template.update(sql);
  29. System.out.println(count);
  30. }
  31. /**
  32.      * 2. 添加一条记录
  33.      */
  34. @Test
  35. public void test2() {
  36. String sql = "insert into emp(name,dept_id) values(?,?)";
  37. int count = template.update(sql, "郭靖", 1);
  38. System.out.println(count);
  39. }
  40. /**
  41.      * 3.删除刚才添加的记录
  42.      */
  43. @Test
  44. public void test3() {
  45. String sql = "delete from emp where id = ?";
  46. int count = template.update(sql, 7);
  47. System.out.println(count);
  48. }
  49. /**
  50.      * 4.查询id为1的记录,将其封装为Map集合
  51.      * 注意:这个方法查询的结果集长度只能是1
  52.      */
  53. @Test
  54. public void test4() {
  55. String sql = "select * from emp where id = ? ";
  56. Map<String, Object> map = template.queryForMap(sql, 1);
  57. System.out.println(map);
  58. //{id=1, ename=孙悟空, job_id=4, mgr=1004, joindate=2000-12-17, salary=10000.00, bonus=null, dept_id=20}
  59. }
  60. /**
  61.      * 5. 查询所有记录,将其封装为List
  62.      */
  63. @Test
  64. public void test5() {
  65. String sql = "select * from emp";
  66. List<Map<String, Object>> list = template.queryForList(sql);
  67. for (Map<String, Object> stringObjectMap : list) {
  68. System.out.println(stringObjectMap);
  69. }
  70. }
  71. /**
  72.      * 6. 查询所有记录,将其封装为Emp对象的List集合
  73.      */
  74. @Test
  75. public void test6() {
  76. String sql = "select * from emp";
  77. List<Emp> list = template.query(sql, new RowMapper<Emp>() {
  78. @Override
  79. public Emp mapRow(ResultSet rs, int i) throws SQLException {
  80. Emp emp = new Emp();
  81. int id = rs.getInt("id");
  82. String ename = rs.getString("NAME");
  83. String gender = rs.getString("gender");
  84. Date joindate = rs.getDate("join_date");
  85. double salary = rs.getDouble("salary");
  86. int dept_id = rs.getInt("dept_id");
  87. emp.setId(id);
  88. emp.setName(ename);
  89. emp.setGender(gender);
  90. emp.setJoindate(joindate);
  91. emp.setSalary(salary);
  92. emp.setDept_id(dept_id);
  93. return emp;
  94. }
  95. });
  96. for (Emp emp : list) {
  97. System.out.println(emp);
  98. }
  99. }
  100. /**
  101.      * 6. 查询所有记录,将其封装为Emp对象的List集合
  102.      */
  103. @Test
  104. public void test6_2() {
  105. String sql = "select * from emp";
  106. List<Emp> list = template.query(sql, new BeanPropertyRowMapper<Emp>(Emp.class));
  107. for (Emp emp : list) {
  108. System.out.println(emp);
  109. }
  110. }
  111. /**
  112.      * 7. 查询总记录数
  113.      */
  114. @Test
  115. public void test7() {
  116. String sql = "select count(id) from emp";
  117. Long total = template.queryForObject(sql, Long.class);
  118. System.out.println(total);
  119. }
  120. }
复制代码
 
点击关注,第一时间了解华为云新鲜技术~

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

勿忘初心做自己

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表