Springboot 整合spring jpa框架实现增删改查及事务处理——SpringBoot学习

川长思鸟来 2022-04-24 02:34 387阅读 0赞

一、POM 文件引入 JAR

  在 pom.xml 中引入 spring jpa 以及测试包

  1. <!-- spring jpa 依赖 -->
  2. <dependency>
  3. <groupId>org.springframework.boot</groupId>
  4. <artifactId>spring-boot-starter-data-jpa</artifactId>
  5. </dependency>
  6. <!-- mysql 依赖 -->
  7. <dependency>
  8. <groupId>mysql</groupId>
  9. <artifactId>mysql-connector-java</artifactId>
  10. </dependency>
  11. <!-- 测试 -->
  12. <dependency>
  13. <groupId>org.springframework.boot</groupId>
  14. <artifactId>spring-boot-starter-test</artifactId>
  15. <scope>test</scope>
  16. <exclusions>
  17. <exclusion>
  18. <groupId>org.springframework</groupId>
  19. <artifactId>spring-test</artifactId>
  20. </exclusion>
  21. </exclusions>
  22. </dependency>
  23. <!-- SpringBoot 2.0 的 spring-boot-starter-test 中的spring-test 是5.0.4 版本的,
  24. 而,5.0.4 版没有 SpringJUnit4ClassRunner 和 SpringRunner 所以去除,另加入5.0.5 及以上版本的spring-test-->
  25. <dependency>
  26. <groupId>org.springframework</groupId>
  27. <artifactId>spring-test</artifactId>
  28. <version>5.0.5.RELEASE</version>
  29. <scope>test</scope>
  30. </dependency>

二、application.properties 新增配置

  在 application.properties 中添加数据源的配置

  1. spring.datasource.url=jdbc:mysql://localhost:3306/mysql
  2. spring.datasource.username=root
  3. spring.datasource.password=123456
  4. spring.datasource.driver-class-name=com.mysql.jdbc.Driver

使用 application.yml 的配置为

  1. ### datasource Configuration
  2. spring:
  3. datasource:
  4. url: jdbc:mysql://localhost:3306/mysql
  5. driver-class-name: com.mysql.jdbc.Driver
  6. username: root
  7. password: 123456

三、编写 Dao

  bean 文件增加注释使之与数据库表结构对应

  1. package com.bean;
  2. import javax.persistence.Column;
  3. import javax.persistence.Entity;
  4. import javax.persistence.Id;
  5. import lombok.Getter;
  6. import lombok.Setter;
  7. import lombok.ToString;
  8. /**
  9. * @Description 类描述
  10. * @author 欧阳
  11. * @since 2019年4月7日 下午12:29:13
  12. * @version V1.0
  13. */
  14. @Getter
  15. @Setter
  16. @ToString
  17. @Entity(name = "t_user")
  18. public class Users {
  19. @Id
  20. private String id;
  21. @Column(name="name")
  22. private String name;
  23. }

  添加文件 src/main/java/com/dao/UsersDao.java

  1. package com.dao;
  2. import org.springframework.data.jpa.repository.JpaRepository;
  3. import com.bean.Users;
  4. /**
  5. * @Description 整合spring Jpa Dao
  6. * @author 欧阳
  7. * @since 2019年4月11日 下午6:14:26
  8. * @version V1.0
  9. */
  10. public interface UsersDao extends JpaRepository<Users, String> {
  11. //需要使用其他的在这里定义方法
  12. }

四、添加 Service

  增加 Service 接口 src/main/java/com/service/JpaService.java 并实现 src/main/java/com/service/impl/JpaServiceImpl.java
JpaService 接口代码

  1. package com.service;
  2. import java.util.List;
  3. import com.bean.Users;
  4. /**
  5. * @Description 整合spring Jpa Service
  6. * @author 欧阳
  7. * @since 2019年4月11日 下午2:17:37
  8. * @version V1.0
  9. */
  10. public interface JpaService {
  11. /**
  12. * 添加用户
  13. * @param user
  14. */
  15. public void insertUser(Users user);
  16. /**
  17. * 更新用户
  18. * @param user
  19. */
  20. public void updateUser(Users user);
  21. /**
  22. * 查询用户
  23. * @param user
  24. * @return
  25. */
  26. public List<Users> selectUser();
  27. /**
  28. * 删除用户
  29. * @param id
  30. */
  31. public void deleteUser(String id);
  32. }

JpaServiceImpl 实现类

  1. package com.service.impl;
  2. import java.util.List;
  3. import org.springframework.beans.factory.annotation.Autowired;
  4. import org.springframework.stereotype.Service;
  5. import org.springframework.transaction.annotation.Transactional;
  6. import com.bean.Users;
  7. import com.dao.UsersDao;
  8. import com.service.JpaService;
  9. /**
  10. * @Description 整合spring Jpa Service
  11. * @author 欧阳
  12. * @since 2019年4月11日 下午6:16:09
  13. * @version V1.0
  14. */
  15. @Service
  16. public class JpaServiceImpl implements JpaService {
  17. @Autowired
  18. private UsersDao userDao;
  19. @Override
  20. @Transactional
  21. public void insertUser(Users user) {
  22. userDao.save(user);
  23. int num = 1/0; //放开测试事务。预期结果为添加失败,库中无数据。测试结果与预期一致
  24. }
  25. @Override
  26. @Transactional
  27. public void updateUser(Users user) {
  28. userDao.save(user);
  29. }
  30. @Override
  31. public List<Users> selectUser() {
  32. return userDao.findAll();
  33. }
  34. @Override
  35. @Transactional
  36. public void deleteUser(String id) {
  37. userDao.deleteById(id);
  38. }
  39. }

  注意:通过使用 @Transactional 注解添加事务,在 insertUser 方法中的插入数据代码后增加异常代码 int num = 1/0; 测试事务是否起作用,实际测试结果表明测试结果与预期一致。

五、测试类

  添加测试类测试 JpaServiceImpl

  1. package com.service.impl;
  2. import org.junit.Test;
  3. import org.junit.runner.RunWith;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.boot.test.context.SpringBootTest;
  6. import org.springframework.test.context.junit4.SpringRunner;
  7. import com.App;
  8. import com.bean.Users;
  9. import com.service.JpaService;
  10. /**
  11. * @Description 类描述
  12. * @author 欧阳
  13. * @since 2019年4月11日 下午6:21:24
  14. * @version V1.0
  15. */
  16. @RunWith(SpringRunner.class)
  17. @SpringBootTest(classes={App.class})
  18. public class JpaServiceImplTest {
  19. @Autowired
  20. private JpaService jpaService;
  21. @Test
  22. public void testInsertUser() {
  23. jpaService.insertUser(new Users("12", "lisi"));
  24. System.out.println("Yes");
  25. }
  26. @Test
  27. public void testUpdateUser() {
  28. jpaService.updateUser(new Users("12", "李四"));
  29. System.out.println("Yes");
  30. }
  31. @Test
  32. public void testSelectUser() {
  33. jpaService.selectUser();
  34. System.out.println("Yes");
  35. }
  36. @Test
  37. public void testDeleteUser() {
  38. jpaService.deleteUser("12");
  39. System.out.println("Yes");
  40. }
  41. }

六、测试结果

  测试结果全部通过,增删改查功能正常,springboot 整合 spring Jpa 完成。
测试结果全部通过

发表评论

表情:
评论列表 (有 0 条评论,387人围观)

还没有评论,来说两句吧...

相关阅读