Springboot 整合spring jpa框架实现增删改查及事务处理——SpringBoot学习
一、POM 文件引入 JAR
在 pom.xml 中引入 spring jpa
以及测试包
<!-- spring jpa 依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!-- mysql 依赖 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- 测试 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- SpringBoot 2.0 的 spring-boot-starter-test 中的spring-test 是5.0.4 版本的,
而,5.0.4 版没有 SpringJUnit4ClassRunner 和 SpringRunner 所以去除,另加入5.0.5 及以上版本的spring-test-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.0.5.RELEASE</version>
<scope>test</scope>
</dependency>
二、application.properties 新增配置
在 application.properties
中添加数据源的配置
spring.datasource.url=jdbc:mysql://localhost:3306/mysql
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
使用 application.yml
的配置为
### datasource Configuration
spring:
datasource:
url: jdbc:mysql://localhost:3306/mysql
driver-class-name: com.mysql.jdbc.Driver
username: root
password: 123456
三、编写 Dao
bean 文件增加注释使之与数据库表结构对应
package com.bean;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
/**
* @Description 类描述
* @author 欧阳
* @since 2019年4月7日 下午12:29:13
* @version V1.0
*/
@Getter
@Setter
@ToString
@Entity(name = "t_user")
public class Users {
@Id
private String id;
@Column(name="name")
private String name;
}
添加文件 src/main/java/com/dao/UsersDao.java
package com.dao;
import org.springframework.data.jpa.repository.JpaRepository;
import com.bean.Users;
/**
* @Description 整合spring Jpa Dao
* @author 欧阳
* @since 2019年4月11日 下午6:14:26
* @version V1.0
*/
public interface UsersDao extends JpaRepository<Users, String> {
//需要使用其他的在这里定义方法
}
四、添加 Service
增加 Service 接口 src/main/java/com/service/JpaService.java
并实现 src/main/java/com/service/impl/JpaServiceImpl.java
。
JpaService 接口代码
package com.service;
import java.util.List;
import com.bean.Users;
/**
* @Description 整合spring Jpa Service
* @author 欧阳
* @since 2019年4月11日 下午2:17:37
* @version V1.0
*/
public interface JpaService {
/**
* 添加用户
* @param user
*/
public void insertUser(Users user);
/**
* 更新用户
* @param user
*/
public void updateUser(Users user);
/**
* 查询用户
* @param user
* @return
*/
public List<Users> selectUser();
/**
* 删除用户
* @param id
*/
public void deleteUser(String id);
}
JpaServiceImpl 实现类
package com.service.impl;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.bean.Users;
import com.dao.UsersDao;
import com.service.JpaService;
/**
* @Description 整合spring Jpa Service
* @author 欧阳
* @since 2019年4月11日 下午6:16:09
* @version V1.0
*/
@Service
public class JpaServiceImpl implements JpaService {
@Autowired
private UsersDao userDao;
@Override
@Transactional
public void insertUser(Users user) {
userDao.save(user);
int num = 1/0; //放开测试事务。预期结果为添加失败,库中无数据。测试结果与预期一致
}
@Override
@Transactional
public void updateUser(Users user) {
userDao.save(user);
}
@Override
public List<Users> selectUser() {
return userDao.findAll();
}
@Override
@Transactional
public void deleteUser(String id) {
userDao.deleteById(id);
}
}
注意:通过使用 @Transactional
注解添加事务,在 insertUser
方法中的插入数据代码后增加异常代码 int num = 1/0;
测试事务是否起作用,实际测试结果表明测试结果与预期一致。
五、测试类
添加测试类测试 JpaServiceImpl
package com.service.impl;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import com.App;
import com.bean.Users;
import com.service.JpaService;
/**
* @Description 类描述
* @author 欧阳
* @since 2019年4月11日 下午6:21:24
* @version V1.0
*/
@RunWith(SpringRunner.class)
@SpringBootTest(classes={App.class})
public class JpaServiceImplTest {
@Autowired
private JpaService jpaService;
@Test
public void testInsertUser() {
jpaService.insertUser(new Users("12", "lisi"));
System.out.println("Yes");
}
@Test
public void testUpdateUser() {
jpaService.updateUser(new Users("12", "李四"));
System.out.println("Yes");
}
@Test
public void testSelectUser() {
jpaService.selectUser();
System.out.println("Yes");
}
@Test
public void testDeleteUser() {
jpaService.deleteUser("12");
System.out.println("Yes");
}
}
六、测试结果
测试结果全部通过,增删改查功能正常,springboot 整合 spring Jpa 完成。
还没有评论,来说两句吧...