Spring基础(十二):JDBCTemplate的使用

举报
Lansonli 发表于 2022/09/25 04:11:23 2022/09/25
【摘要】 文章目录 JDBCTemplate的使用         一、JdbcTemplate概述         二、导入依赖    &nbs...

文章目录

JDBCTemplate的使用

        一、JdbcTemplate概述

        二、导入依赖

        三、准备JDBC.properties

        四、准备applicationContext.xml

        五、准备实体类

        六、准备service层接口和实现类

        七、准备dao层接口和实现类

        八、测试代码


JDBCTemplate的使用

一、JdbcTemplate概述

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

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

二、导入依赖


  
  1. <dependencies>
  2. <!--spring核心容器包-->
  3. <dependency>
  4. <groupId>org.springframework</groupId>
  5. <artifactId>spring-context</artifactId>
  6. <version>5.3.5</version>
  7. </dependency>
  8. <!--spring切面包-->
  9. <dependency>
  10. <groupId>org.springframework</groupId>
  11. <artifactId>spring-aspects</artifactId>
  12. <version>5.3.5</version>
  13. </dependency>
  14. <!--aop联盟包-->
  15. <dependency>
  16. <groupId>aopalliance</groupId>
  17. <artifactId>aopalliance</artifactId>
  18. <version>1.0</version>
  19. </dependency>
  20. <!--德鲁伊连接池-->
  21. <dependency>
  22. <groupId>com.alibaba</groupId>
  23. <artifactId>druid</artifactId>
  24. <version>1.1.10</version>
  25. </dependency>
  26. <!--mysql驱动-->
  27. <dependency>
  28. <groupId>mysql</groupId>
  29. <artifactId>mysql-connector-java</artifactId>
  30. <version>8.0.22</version>
  31. </dependency>
  32. <!--springJDBC包-->
  33. <dependency>
  34. <groupId>org.springframework</groupId>
  35. <artifactId>spring-jdbc</artifactId>
  36. <version>5.3.5</version>
  37. </dependency>
  38. <!--spring事务控制包-->
  39. <dependency>
  40. <groupId>org.springframework</groupId>
  41. <artifactId>spring-tx</artifactId>
  42. <version>5.3.5</version>
  43. </dependency>
  44. <!--spring orm 映射依赖-->
  45. <dependency>
  46. <groupId>org.springframework</groupId>
  47. <artifactId>spring-orm</artifactId>
  48. <version>5.3.5</version>
  49. </dependency>
  50. <!--Apache Commons日志包-->
  51. <dependency>
  52. <groupId>commons-logging</groupId>
  53. <artifactId>commons-logging</artifactId>
  54. <version>1.2</version>
  55. </dependency>
  56. <!--Junit单元测试-->
  57. <dependency>
  58. <groupId>junit</groupId>
  59. <artifactId>junit</artifactId>
  60. <version>4.13.1</version>
  61. <scope>test</scope>
  62. </dependency>
  63. <!--lombok -->
  64. <dependency>
  65. <groupId>org.projectlombok</groupId>
  66. <artifactId>lombok</artifactId>
  67. <version>1.18.12</version>
  68. <scope>provided</scope>
  69. </dependency>
  70. </dependencies>

三、准备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

四、准备applicationContext.xml


  
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xmlns:p="http://www.springframework.org/schema/p"
  5. xmlns:c="http://www.springframework.org/schema/c"
  6. xmlns:util="http://www.springframework.org/schema/util"
  7. xmlns:context="http://www.springframework.org/schema/context"
  8. xmlns:aop="http://www.springframework.org/schema/aop"
  9. xsi:schemaLocation="
  10. http://www.springframework.org/schema/beans
  11. http://www.springframework.org/schema/beans/spring-beans.xsd
  12. http://www.springframework.org/schema/util
  13. http://www.springframework.org/schema/util/spring-util.xsd
  14. http://www.springframework.org/schema/context
  15. http://www.springframework.org/schema/context/spring-context.xsd
  16. http://www.springframework.org/schema/aop
  17. http://www.springframework.org/schema/aop/spring-aop.xsd
  18. ">
  19. <!--spring 注解扫描-->
  20. <context:component-scan base-package="com.lanson"/>
  21. <!--读取jdbc配置文件-->
  22. <context:property-placeholder location="classpath:jdbc.properties"/>
  23. <!--配置德鲁伊连接池-->
  24. <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
  25. <property name="username" value="${jdbc_username}"></property>
  26. <property name="password" value="${jdbc_password}"></property>
  27. <property name="url" value="${jdbc_url}"></property>
  28. <property name="driverClassName" value="${jdbc_driver}"></property>
  29. </bean>
  30. <!--配置JDBCTemplate对象,并向里面注入DataSource-->
  31. <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
  32. <!--通过set方法注入连接池-->
  33. <property name="dataSource" ref="dataSource"></property>
  34. </bean>
  35. </beans>

五、准备实体类


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

六、准备service层接口和实现类


  
  1. package com.lanson.service;
  2. import com.lanson.pojo.Emp;
  3. import java.util.List;
  4. /**
  5. * @Author: Lansonli
  6. * @Description: MircoMessage:Mark_7001
  7. */
  8. public interface EmpService {
  9. int findEmpCount();
  10. Emp findByEmpno(int empno);
  11. List<Emp> findByDeptno(int deptno);
  12. int addEmp(Emp emp);
  13. int updateEmp(Emp emp);
  14. int deleteEmp( int empno);
  15. }
  16. package com.lanson.service.impl;
  17. import com.lanson.dao.EmpDao;
  18. import com.lanson.pojo.Emp;
  19. import com.lanson.service.EmpService;
  20. import org.springframework.beans.factory.annotation.Autowired;
  21. import org.springframework.stereotype.Service;
  22. import java.util.List;
  23. /**
  24. * @Author: Lansonli
  25. * @Description: MircoMessage:Mark_7001
  26. */
  27. @Service
  28. public class EmpServiceImpl implements EmpService {
  29. @Autowired
  30. private EmpDao empDao;
  31. @Override
  32. public int findEmpCount() {
  33. return empDao.findEmpCount();
  34. }
  35. @Override
  36. public Emp findByEmpno(int empno) {
  37. return empDao.findByEmpno( empno);
  38. }
  39. @Override
  40. public List<Emp> findByDeptno(int deptno) {
  41. return empDao.findByDeptno( deptno);
  42. }
  43. @Override
  44. public int addEmp(Emp emp) {
  45. return empDao.addEmp(emp);
  46. }
  47. @Override
  48. public int updateEmp(Emp emp) {
  49. return empDao.updateEmp(emp);
  50. }
  51. @Override
  52. public int deleteEmp(int empno) {
  53. return empDao.deleteEmp(empno);
  54. }
  55. }

七、准备dao层接口和实现类


  
  1. package com.lanson.dao;
  2. import com.lanson.pojo.Emp;
  3. import java.util.List;
  4. /**
  5. * @Author: Lansonli
  6. * @Description: MircoMessage:Mark_7001
  7. */
  8. public interface EmpDao {
  9. int findEmpCount();
  10. Emp findByEmpno(int empno);
  11. List<Emp> findByDeptno(int deptno);
  12. int addEmp(Emp emp);
  13. int updateEmp(Emp emp);
  14. int deleteEmp(int empno);
  15. }

  
  1. package com.lanson.dao.impl;
  2. import com.lanson.dao.EmpDao;
  3. import com.lanson.pojo.Emp;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.jdbc.core.BeanPropertyRowMapper;
  6. import org.springframework.jdbc.core.JdbcTemplate;
  7. import org.springframework.jdbc.core.RowMapper;
  8. import org.springframework.stereotype.Repository;
  9. import java.sql.ResultSet;
  10. import java.sql.SQLException;
  11. import java.util.List;
  12. /**
  13. * @Author: Lansonli
  14. * @Description: MircoMessage:Mark_7001
  15. */
  16. @Repository
  17. public class EmpDaoImpl implements EmpDao {
  18. @Autowired
  19. private JdbcTemplate jdbcTemplate;
  20. @Override
  21. public int findEmpCount() {
  22. /*查询员工个数
  23. * queryForObject 两个参数
  24. * 1 SQL语句
  25. * 2 返回值类型
  26. *
  27. * */
  28. Integer empCount = jdbcTemplate.queryForObject("select count(1) from emp", Integer.class);
  29. return empCount;
  30. }
  31. @Override
  32. public Emp findByEmpno(int empno) {
  33. /*
  34. * 查询单个员工对象
  35. * queryForObject三个参数
  36. * 1 SQL语句
  37. * 2 RowMapper接口的实现类对象,用于执行返回的结果用哪个类来进行封装 ,实现类为BeanPropertyRowMapper
  38. * 3 SQL语句中需要的参数 (可变参数)
  39. * */
  40. BeanPropertyRowMapper<Emp> rowMapper =new BeanPropertyRowMapper<>(Emp.class);
  41. Emp emp = jdbcTemplate.queryForObject("select * from emp where empno =?", rowMapper, empno);
  42. return emp;
  43. }
  44. @Override
  45. public List<Emp> findByDeptno(int deptno) {
  46. /*
  47. * 查询单个员工对象
  48. * query三个参数
  49. * 1 SQL语句
  50. * 2 RowMapper接口的实现类对象,用于执行返回的结果用哪个类来进行封装 ,实现类为BeanPropertyRowMapper
  51. * 3 SQL语句中需要的参数 (可变参数)
  52. * */
  53. BeanPropertyRowMapper<Emp> rowMapper =new BeanPropertyRowMapper<>(Emp.class);
  54. List<Emp> emps = jdbcTemplate.query("select * from emp where deptno =?", rowMapper, deptno);
  55. return emps;
  56. }
  57. @Override
  58. public int addEmp(Emp emp) {
  59. /*增删改
  60. * 统统用update方法 两个参数
  61. * 1 SQL语句
  62. * 2 SQL语句需要的参数 (可变参数)
  63. *
  64. * */
  65. String sql ="insert into emp values(DEFAULT ,?,?,?,?,?,?,?)";
  66. Object[] args ={emp.getEname(),emp.getJob(),emp.getMgr(),emp.getHiredate(),emp.getSal(),emp.getComm(),emp.getDeptno()};
  67. return jdbcTemplate.update(sql,args);
  68. }
  69. @Override
  70. public int updateEmp(Emp emp) {
  71. String sql ="update emp set ename =? , job =?, mgr=? , hiredate =?, sal=?, comm=?, deptno =? where empno =?";
  72. Object[] args ={emp.getEname(),emp.getJob(),emp.getMgr(),emp.getHiredate(),emp.getSal(),emp.getComm(),emp.getDeptno(),emp.getEmpno()};
  73. return jdbcTemplate.update(sql,args);
  74. }
  75. @Override
  76. public int deleteEmp(int empno) {
  77. String sql ="delete from emp where empno =?";
  78. return jdbcTemplate.update(sql, empno);
  79. }
  80. }

八、测试代码


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

  • 📢博客主页:https://lansonli.blog.csdn.net
  • 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
  • 📢本文由 Lansonli 原创,首发于 CSDN博客🙉
  • 📢停下休息的时候不要忘了别人还在奔跑,希望大家抓紧时间学习,全力奔赴更美好的生活✨

文章来源: lansonli.blog.csdn.net,作者:Lansonli,版权归原作者所有,如需转载,请联系作者。

原文链接:lansonli.blog.csdn.net/article/details/126881764

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。