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

一、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 完成。
测试结果全部通过

发布了76 篇原创文章 · 获赞 45 · 访问量 7万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 技术黑板 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览