14_Spring_JDBCTemplate的使用

14_Spring_JDBCTemplate的使用

JdbcTemplate概述

JdbcTemplate是spring框架中提供的一个对象,是对原始繁琐的Jdbc API对象的简单封装。spring框架为我们提供了很多的操作模板类。例如:操作关系型数据的
JdbcTemplate和,操作nosql数据库的RedisTemplate,操作消息队列的JmsTemplate等等。

image

按如下项目结构准备 maven jar项目即可

image
1 导入依赖

  1. org.springframework
  2. spring-context
  3. 5.3.5
  4. org.springframework
  5. spring-aspects
  6. 5.3.5
  7. aopalliance
  8. aopalliance
  9. 1.0
  10. com.alibaba
  11. druid
  12. 1.1.10
  13. mysql
  14. mysql-connector-java
  15. 8.0.22
  16. org.springframework
  17. spring-jdbc
  18. 5.3.5
  19. org.springframework
  20. spring-tx
  21. 5.3.5
  22. org.springframework
  23. spring-orm
  24. 5.3.5
  25. commons-logging
  26. commons-logging
  27. 1.2
  28. junit
  29. junit
  30. 4.13.1
  31. test
  32. org.projectlombok
  33. lombok
  34. 1.18.12
  35. provided

2 准备JDBC.properties

  1. jdbc_username=root
  2. jdbc_password=root
  3. jdbc_driver=com.mysql.cj.jdbc.Driver
  4. jdbc_url=jdbc:mysql://127.0.0.1:3306/mydb?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true

3 准备applicationContext.xml

  1. <beans xmlns="http://www.springframework.org/schema/beans"
  2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xmlns:p="http://www.springframework.org/schema/p"
  4. xmlns:c="http://www.springframework.org/schema/c"
  5. xmlns:util="http://www.springframework.org/schema/util"
  6. xmlns:context="http://www.springframework.org/schema/context"
  7. xmlns:aop="http://www.springframework.org/schema/aop"
  8. xsi:schemaLocation="
  9. http://www.springframework.org/schema/beans
  10. http://www.springframework.org/schema/beans/spring-beans.xsd
  11. http://www.springframework.org/schema/util
  12. http://www.springframework.org/schema/util/spring-util.xsd
  13. http://www.springframework.org/schema/context
  14. http://www.springframework.org/schema/context/spring-context.xsd
  15. http://www.springframework.org/schema/aop
  16. http://www.springframework.org/schema/aop/spring-aop.xsd
  17. ">
  18. <context:component-scan base-package="com.msb"/>
  19. <context:property-placeholder location="classpath:jdbc.properties"/>

3 准备实体类

  1. package com.msb.pojo;
  2. import lombok.AllArgsConstructor;
  3. import lombok.Data;
  4. import lombok.NoArgsConstructor;
  5. import java.util.Date;
  6. /**
    • @Author: Ma HaiYang
    • @Description: MircoMessage:Mark_7001
  7. */
  8. @AllArgsConstructor
  9. @NoArgsConstructor
  10. @Data
  11. public class Emp implements Serializable{
  12. private Integer empno;
  13. private String ename;
  14. private String job;
  15. private Integer mgr;
  16. private Date hiredate;
  17. private Double sal;
  18. private Double comm;
  19. private Integer deptno;
  20. }

4 准备service层接口和实现类

  1. package com.msb.service;

  2. import com.msb.pojo.Emp;

  3. import java.util.List;

  4. /**

    • @Author: Ma HaiYang
    • @Description: MircoMessage:Mark_7001
  5. */

  6. public interface EmpService {

  7. int findEmpCount();

  8. Emp findByEmpno(int empno);

  9. List findByDeptno(int deptno);

  10. int addEmp(Emp emp);

  11. int updateEmp(Emp emp);

  12. int deleteEmp( int empno);

  13. }

  14. package com.msb.service.impl;

  15. import com.msb.dao.EmpDao;

  16. import com.msb.pojo.Emp;

  17. import com.msb.service.EmpService;

  18. import org.springframework.beans.factory.annotation.Autowired;

  19. import org.springframework.stereotype.Service;

  20. import java.util.List;

  21. /**

    • @Author: Ma HaiYang
    • @Description: MircoMessage:Mark_7001
  22. */

  23. @Service

  24. public class EmpServiceImpl implements EmpService {

  25. @Autowired

  26. private EmpDao empDao;

  27. @Override

  28. public int findEmpCount() {

  29. return empDao.findEmpCount();

  30. }

  31. @Override

  32. public Emp findByEmpno(int empno) {

  33. return empDao.findByEmpno( empno);

  34. }

  35. @Override

  36. public List findByDeptno(int deptno) {

  37. return empDao.findByDeptno( deptno);

  38. }

  39. @Override

  40. public int addEmp(Emp emp) {

  41. return empDao.addEmp(emp);

  42. }

  43. @Override

  44. public int updateEmp(Emp emp) {

  45. return empDao.updateEmp(emp);

  46. }

  47. @Override

  48. public int deleteEmp(int empno) {

  49. return empDao.deleteEmp(empno);

  50. }

  51. }

5 准备dao层接口和实现类

  1. package com.msb.dao;

  2. import com.msb.pojo.Emp;

  3. import java.util.List;

  4. /**

    • @Author: Ma HaiYang
    • @Description: MircoMessage:Mark_7001
  5. */

  6. public interface EmpDao {

  7. int findEmpCount();

  8. Emp findByEmpno(int empno);

  9. List findByDeptno(int deptno);

  10. int addEmp(Emp emp);

  11. int updateEmp(Emp emp);

  12. int deleteEmp(int empno);

  13. }

  14. package com.msb.dao.impl;

  15. import com.msb.dao.EmpDao;

  16. import com.msb.pojo.Emp;

  17. import org.springframework.beans.factory.annotation.Autowired;

  18. import org.springframework.jdbc.core.BeanPropertyRowMapper;

  19. import org.springframework.jdbc.core.JdbcTemplate;

  20. import org.springframework.jdbc.core.RowMapper;

  21. import org.springframework.stereotype.Repository;

  22. import java.sql.ResultSet;

  23. import java.sql.SQLException;

  24. import java.util.List;

  25. /**

    • @Author: Ma HaiYang
    • @Description: MircoMessage:Mark_7001
  26. */

  27. @Repository

  28. public class EmpDaoImpl implements EmpDao {

  29. @Autowired

  30. private JdbcTemplate jdbcTemplate;

  31. @Override

  32. public int findEmpCount() {

  33. /*查询员工个数

  34. * queryForObject 两个参数

  35. * 1 SQL语句

  36. * 2 返回值类型

  37. *

  38. * */

  39. Integer empCount = jdbcTemplate.queryForObject("select count(1)
    from emp", Integer.class);

  40. return empCount;

  41. }

  42. @Override

  43. public Emp findByEmpno(int empno) {

  44. /*

  45. * 查询单个员工对象

  46. * queryForObject三个参数

  47. * 1 SQL语句

  48. * 2 RowMapper接口的实现类对象,用于执行返回的结果用哪个类来进行封装 ,实现类为BeanPropertyRowMapper

  49. * 3 SQL语句中需要的参数 (可变参数)

  50. * */

  51. BeanPropertyRowMapper rowMapper =new
    BeanPropertyRowMapper<>(Emp.class);

  52. Emp emp = jdbcTemplate.queryForObject("select * from emp where
    empno =?", rowMapper, empno);

  53. return emp;

  54. }

  55. @Override

  56. public List findByDeptno(int deptno) {

  57. /*

  58. * 查询单个员工对象

  59. * query三个参数

  60. * 1 SQL语句

  61. * 2 RowMapper接口的实现类对象,用于执行返回的结果用哪个类来进行封装 ,实现类为BeanPropertyRowMapper

  62. * 3 SQL语句中需要的参数 (可变参数)

  63. * */

  64. BeanPropertyRowMapper rowMapper =new
    BeanPropertyRowMapper<>(Emp.class);

  65. List emps = jdbcTemplate.query("select * from emp where deptno
    =?", rowMapper, deptno);

  66. return emps;

  67. }

  68. @Override

  69. public int addEmp(Emp emp) {

  70. /*增删改

  71. * 统统用update方法 两个参数

  72. * 1 SQL语句

  73. * 2 SQL语句需要的参数 (可变参数)

  74. *

  75. * */

  76. String sql ="insert into emp values(DEFAULT ,?,?,?,?,?,?,?)";

  77. Object[] args
    ={emp.getEname(),emp.getJob(),emp.getMgr(),emp.getHiredate(),emp.getSal(),em
    .getComm(),emp.getDeptno()};

  78. return jdbcTemplate.update(sql,args);

  79. }

  80. @Override

  81. public int updateEmp(Emp emp) {

  82. String sql ="update emp set ename =? , job =?, mgr=? , hiredate =?,
    sal=?, comm=?, deptno =? where empno =?";

  83. Object[] args
    ={emp.getEname(),emp.getJob(),emp.getMgr(),emp.getHiredate(),emp.getSal(),em
    .getComm(),emp.getDeptno(),emp.getEmpno()};

  84. return jdbcTemplate.update(sql,args);

  85. }

  86. @Override

  87. public int deleteEmp(int empno) {

  88. String sql ="delete from emp where empno =?";

  89. return jdbcTemplate.update(sql, empno);

  90. }

  91. }

6 测试代码

  1. package com.msb.test;
  2. import com.msb.pojo.Emp;
  3. import com.msb.service.EmpService;
  4. import org.junit.Test;
  5. import org.springframework.context.ApplicationContext;
  6. import org.springframework.context.support.ClassPathXmlApplicationContext;
  7. import java.util.Date;
  8. import java.util.List;
  9. /**
    • @Author: Ma HaiYang
    • @Description: MircoMessage:Mark_7001
  10. */
  11. public class Test1 {
  12. @Test
  13. public void testEmpService(){
  14. ApplicationContext context=new
    ClassPathXmlApplicationContext("applicationContext.xml");
  15. EmpService empService = context.getBean(EmpService.class);
  16. // 查询员工个数
  17. /*int empCount = empService.findEmpCount();
  18. System.out.println(empCount);*/
  19. // 根据员工编号查询员工对象
  20. /* Emp byEmpno = empService.findByEmpno(7521);
  21. System.out.println(byEmpno);*/
  22. /根据部门编号查询多个员工对象集合/
  23. /*List emps = empService.findByDeptno(20);
  24. emps.forEach(System.out::println);*/
  25. /增加员工信息/
  26. /*int rows = empService.addEmp(new Emp(null, "TOM", "SALESMAN",
    7521, new Date(), 2000.0, 100.0, 10));
  27. System.out.println(rows);*/
  28. /根据员工编号修改员工信息/
  29. /*int rows = empService.updateEmp(new Emp(7939, "JERRY", "MANAGER",
    7839, new Date(), 3000.0, 0.0, 20));
  30. System.out.println(rows);*/
  31. /根据员工编号删除员工信息/
  32. /*int rows = empService.deleteEmp(7939);
  33. System.out.println(rows);*/
  34. }
  35. }

Generated with Mybase Desktop 8.2.13

posted @ 2023-07-30 12:39  AidenDong  阅读(23)  评论(0)    收藏  举报