• Spring中的jdbcTemplate模块操作数据库(MySQL)


    前言        

            学习spring中自带的jdbcTemplate是如何操作数据库的。

            先来个项目目录结构截图:

             其次,先给出一个完整的xml配置文件,具体的信息解释会在后面说。

    1. "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:aop="http://www.springframework.org/schema/aop"
    5. xmlns:context="http://www.springframework.org/schema/context"
    6. xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    7. http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
    8. http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd">
    9. <context:component-scan base-package="com.atguigu.spring5">context:component-scan>
    10. <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
    11. destroy-method="close">
    12. <property name="url" value="jdbc:mysql:///user_db?useUnicode=true&characterEncoding=utf8"/>
    13. <property name="username" value="root"/>
    14. <property name="password" value="123456"/>
    15. <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    16. bean>
    17. <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
    18. <property name="dataSource" ref="dataSource"/>
    19. bean>
    20. beans>

    目录

    前言        

    1、在pom文件中引入相关的依赖

    2、在数据库中构建表结构

    3、在java包下编写实体类

    4、编写业务层和dao层

    5、创建spring配置文件进行配置

    6、编写测试类

    7、测试结果显示

    8、总结


    1、在pom文件中引入相关的依赖

            这儿粘贴了整个pom文件,自己使用时只拿依赖部分即可

    1. "1.0" encoding="UTF-8"?>
    2. <project xmlns="http://maven.apache.org/POM/4.0.0"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    5. <parent>
    6. <artifactId>atguiguLearnSpring5artifactId>
    7. <groupId>org.examplegroupId>
    8. <version>1.0-SNAPSHOTversion>
    9. parent>
    10. <modelVersion>4.0.0modelVersion>
    11. <groupId>com.examplegroupId>
    12. <artifactId>Spring5_demo5artifactId>
    13. <dependencies>
    14. <dependency>
    15. <groupId>com.alibabagroupId>
    16. <artifactId>druidartifactId>
    17. <version>1.1.10version>
    18. dependency>
    19. <dependency>
    20. <groupId>mysqlgroupId>
    21. <artifactId>mysql-connector-javaartifactId>
    22. <version>5.1.6version>
    23. dependency>
    24. <dependency>
    25. <groupId>org.springframeworkgroupId>
    26. <artifactId>spring-aopartifactId>
    27. <version>5.0.2.RELEASEversion>
    28. dependency>
    29. <dependency>
    30. <groupId>org.springframeworkgroupId>
    31. <artifactId>spring-contextartifactId>
    32. <version>5.0.2.RELEASEversion>
    33. dependency>
    34. <dependency>
    35. <groupId>org.springframeworkgroupId>
    36. <artifactId>spring-txartifactId>
    37. <version>5.0.2.RELEASEversion>
    38. dependency>
    39. <dependency>
    40. <groupId>org.springframeworkgroupId>
    41. <artifactId>spring-coreartifactId>
    42. <version>5.3.22version>
    43. dependency>
    44. <dependency>
    45. <groupId>org.springframeworkgroupId>
    46. <artifactId>spring-jdbcartifactId>
    47. <version>5.0.2.RELEASEversion>
    48. dependency>
    49. <dependency>
    50. <groupId>org.springframeworkgroupId>
    51. <artifactId>spring-ormartifactId>
    52. <version>5.3.3version>
    53. dependency>
    54. <dependency>
    55. <groupId>org.springframeworkgroupId>
    56. <artifactId>spring-aspectsartifactId>
    57. <version>5.0.5.RELEASEversion>
    58. dependency>
    59. <dependency>
    60. <groupId>junitgroupId>
    61. <artifactId>junitartifactId>
    62. <version>4.12version>
    63. <scope>compilescope>
    64. dependency>
    65. dependencies>
    66. <build>
    67. <plugins>
    68. <plugin>
    69. <groupId>org.apache.maven.pluginsgroupId>
    70. <artifactId>maven-compiler-pluginartifactId>
    71. <version>3.1version>
    72. <configuration>
    73. <source>1.8source>
    74. <target>1.8target>
    75. configuration>
    76. plugin>
    77. plugins>
    78. build>
    79. project>

    2、在数据库中构建表结构

    3、在java包下编写实体类

            Book.java

    1. package com.atguigu.spring5.entity;
    2. /**
    3. * @Author 不要有情绪的 ljy
    4. * @Date 2022/9/20 14:44
    5. * @Description:
    6. */
    7. public class Book {
    8. private String UserId;
    9. private String username;
    10. private String ustatus;
    11. public String getUserId() {
    12. return UserId;
    13. }
    14. public void setUserId(String userId) {
    15. UserId = userId;
    16. }
    17. public String getUsername() {
    18. return username;
    19. }
    20. public void setUsername(String username) {
    21. this.username = username;
    22. }
    23. public String getUstatus() {
    24. return ustatus;
    25. }
    26. public void setUstatus(String ustatus) {
    27. this.ustatus = ustatus;
    28. }
    29. @Override
    30. public String toString() {
    31. return "Book{" +
    32. "UserId='" + UserId + '\'' +
    33. ", username='" + username + '\'' +
    34. ", ustatus='" + ustatus + '\'' +
    35. '}';
    36. }
    37. }

    4、编写业务层和dao层

            BookDao.java

    1. package com.atguigu.spring5.dao;
    2. import com.atguigu.spring5.entity.Book;
    3. /**
    4. * @Author 不要有情绪的 ljy
    5. * @Date 2022/9/20 14:38
    6. * @Description:
    7. */
    8. public interface BookDao {
    9. void add(Book book);
    10. void deleteBook(String id);
    11. void updateBook(Book book);
    12. void selectCount();
    13. void selectByUser_id(String id);
    14. void selectAll();
    15. void selectAllByUsername(String username);
    16. }

        BookDaoImpl.java

    1. package com.atguigu.spring5.dao;
    2. import com.atguigu.spring5.entity.Book;
    3. import org.springframework.beans.factory.annotation.Autowired;
    4. import org.springframework.jdbc.core.BeanPropertyRowMapper;
    5. import org.springframework.jdbc.core.JdbcTemplate;
    6. import org.springframework.stereotype.Repository;
    7. import java.util.List;
    8. /**
    9. * @Author 不要有情绪的 ljy
    10. * @Date 2022/9/20 14:38
    11. * @Description:
    12. */
    13. @Repository
    14. public class BookDaoImpl implements BookDao {
    15. //注入JdbcTemplate
    16. @Autowired
    17. private JdbcTemplate jdbcTemplate;
    18. @Override
    19. public void add(Book book) {
    20. //1 创建sql语句
    21. String sql = "insert into t_book values(?,?,?)";
    22. //2 调用方法
    23. Object[] args = {book.getUserId(), book.getUsername(), book.getUstatus()};
    24. int update = jdbcTemplate.update(sql, args);
    25. System.out.println(update);
    26. }
    27. @Override
    28. public void deleteBook(String id) {
    29. String sql = "delete from t_book where user_id = ?";
    30. int delete = jdbcTemplate.update(sql, id);
    31. System.out.println(delete);
    32. }
    33. @Override
    34. public void updateBook(Book book) {
    35. String sql = "update t_book set username = ?,ustatus=? where user_id = ?";
    36. Object[] args = {book.getUsername(), book.getUstatus(), book.getUserId()};
    37. int update = jdbcTemplate.update(sql, args);
    38. System.out.println(update);
    39. }
    40. @Override
    41. public void selectCount() {
    42. String sql = "select count(*) from t_book";
    43. Integer integer = jdbcTemplate.queryForObject(sql, Integer.class);
    44. System.out.println(integer);
    45. }
    46. @Override
    47. public void selectByUser_id(String id) {
    48. String username = "java";
    49. String sql = "select * from t_book where user_id = ?";
    50. Book book = jdbcTemplate.queryForObject(sql, new BeanPropertyRowMapper(Book.class), id);
    51. System.out.println(book);
    52. }
    53. @Override
    54. public void selectAll() {
    55. String sql = "select * from t_book";
    56. List books = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(Book.class));
    57. System.out.println(books);
    58. }
    59. @Override
    60. public void selectAllByUsername(String username) {
    61. String sql = "select * from t_book where username = ?";
    62. List books = jdbcTemplate.query(sql, new Object[]{username}, new BeanPropertyRowMapper<>(Book.class));
    63. List books1 = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(Book.class), username);
    64. System.out.println(books);
    65. System.out.println(books1);
    66. }
    67. }

        BookService.java

    1. package com.atguigu.spring5.service;
    2. import com.atguigu.spring5.dao.BookDao;
    3. import com.atguigu.spring5.entity.Book;
    4. import org.springframework.beans.factory.annotation.Autowired;
    5. import org.springframework.stereotype.Service;
    6. /**
    7. * @Author 不要有情绪的 ljy
    8. * @Date 2022/9/20 14:38
    9. * @Description:
    10. */
    11. @Service
    12. public class BookService {
    13. @Autowired
    14. private BookDao bookDao;
    15. //添加的方法
    16. public void addBook(Book book){
    17. bookDao.add(book);
    18. }
    19. //删除的方法
    20. public void deleteBook(String id) {
    21. bookDao.deleteBook(id);
    22. }
    23. //更新的方法
    24. public void updateBook(Book book) {
    25. bookDao.updateBook(book);
    26. }
    27. //查询返回一共含有多少记录
    28. public void selectCount(){
    29. bookDao.selectCount();
    30. }
    31. //查询得到一个对象
    32. public void selectByUser_id(String id) {
    33. bookDao.selectByUser_id(id);
    34. }
    35. public void selectAll() {
    36. bookDao.selectAll();
    37. }
    38. public void selectAllByUsername(String username) {
    39. bookDao.selectAllByUsername(username);
    40. }
    41. }

    5、创建spring配置文件进行配置

            bean1.xml

            首先开启组件扫描,即告诉程序要扫描的包,记得在上面的类中添加扫描注解(例如@Service,@Component等)

    1. <context:component-scan base-package="com.atguigu.spring5">context:component-scan>

            配置连接数据库的数据源等信息:

    1. <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
    2. destroy-method="close">
    3. <property name="url" value="jdbc:mysql:///user_db?useUnicode=true&characterEncoding=utf8"/>
    4. <property name="username" value="root"/>
    5. <property name="password" value="123456"/>
    6. <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    7. bean>

            在xml文件中配置生成jdbcTemplate对象,并注入数据源属性:

    1. <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
    2. <property name="dataSource" ref="dataSource"/>
    3. bean>

            以上就完成了配置工作!

    6、编写测试类

            TestBook.java

    1. package com.atguigu.spring5.test;
    2. import com.atguigu.spring5.entity.Book;
    3. import com.atguigu.spring5.service.BookService;
    4. import org.junit.Test;
    5. import org.springframework.context.ApplicationContext;
    6. import org.springframework.context.support.ClassPathXmlApplicationContext;
    7. /**
    8. * @Author 不要有情绪的 ljy
    9. * @Date 2022/9/20 18:38
    10. * @Description:
    11. */
    12. public class TestBook {
    13. @Test
    14. public void testJdbcTemplate(){
    15. ApplicationContext context = new ClassPathXmlApplicationContext("bean1.xml");
    16. BookService bookService = context.getBean("bookService", BookService.class);
    17. Book book = new Book();
    18. book.setUserId("1");
    19. book.setUsername("java");
    20. book.setUstatus("a");
    21. // bookService.addBook(book);
    22. // bookService.updateBook(book);
    23. // bookService.deleteBook("1");
    24. // bookService.selectCount();
    25. // bookService.selectByUser_id("2");
    26. // bookService.selectAll();
    27. bookService.selectAllByUsername("java");
    28. }
    29. }

    7、测试结果显示

            此时数据库中的数据为:

             得到的测试结果为:

    8、总结

            spring使用jdbcTemplate可以完成与数据库的交互,可以手写所有的sql语句,给开发人员一种比较直观的感觉。整体上就是引入相关依赖,构建业务逻辑,然后编写相应的sql语句完成数据库操作。当然里面关于所有的sql操作还没有进行完整的学习,例如批量增加等等,我想所有的操作类似而已。

    学习之所以会想睡觉,是因为那是梦开始的地方。
    ଘ(੭ˊᵕˋ)੭ (开心) ଘ(੭ˊᵕˋ)੭ (开心)ଘ(੭ˊᵕˋ)੭ (开心)ଘ(੭ˊᵕˋ)੭ (开心)ଘ(੭ˊᵕˋ)੭ (开心)
                                                                                                          ------不写代码不会凸的小刘

  • 相关阅读:
    Springboot项目部署到服务器
    家庭的破碎与人性的考验
    Java常用类
    在Github上封神的JDK源码,看完竟吊打了面试官,厉害了
    Yapi浏览器插件
    时序处理的一些命令
    ps抠图怎么抠出来,自学ps软件photoshop2022,ps怎么抠出想要的部分-笔记记录
    Linux的目录结构
    车联网白皮书(2021.12)中国信息通信研究院
    基于springboot在线考试报名系统毕业设计源码031706
  • 原文地址:https://blog.csdn.net/qq_40834643/article/details/126974980