金刀的博客|SpringBoot整合SpringDataJpa一对多对象关联映射

SpringBoot整合SpringDataJpa一对多对象关联映射学习笔记

  • 创建Maven的SpringBoot项目,编写POM文件依赖
    • 项目结构
    • application.yml(数据库连接配置文件)
  • 编写实体对象
    • Roles.java(角色对象)
    • User.java(用户对象)
  • 接口定义
    • 持久层JPA接口
    • 业务层接口
  • 接口实现类
    • 业务层接口实现类
  • 单元测试类
  • 运行效果
    • 新增效果
    • 查询单个
    • 数据库内容

创建Maven的SpringBoot项目,编写POM文件依赖

项目结构

金刀的博客|SpringBoot整合SpringDataJpa一对多对象关联映射_第1张图片

<dependencies>
  	<!-- springboot web启动器依赖 -->
  	<dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    
    <!-- springboot junit test依赖 -->
  	<dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-starter-test</artifactId>
    </dependency>
    
    <!-- springboot data 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>
    
    <!-- 阿里巴巴druid数据库连接池 -->
	<dependency>
		<groupId>com.alibaba</groupId>
		<artifactId>druid</artifactId>
		<version>1.1.10</version>
	</dependency>
  </dependencies>

application.yml(数据库连接配置文件)

金刀的博客|SpringBoot整合SpringDataJpa一对多对象关联映射_第2张图片

编写实体对象

Roles.java(角色对象)

package cn.gotojava.pojo;

import java.util.HashSet;
import java.util.Set;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.OneToMany;
import javax.persistence.Table;

@Entity
@Table(name = "s_roles")
public class Roles {
	
	@Id
	@Column(name = "roles_id")
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private Integer roleId;
	
	@Column(name = "roles_name")
	private String roleName;
	
	/*
	* @OneToMany 一对多关联映射
	* 用户对象中的Roles对象属性名称
	*/
	@OneToMany(mappedBy = "roles")
	private Set<Users> users = new HashSet<Users>();

	public Integer getRoleId() {
		return roleId;
	}

	public void setRoleId(Integer roleId) {
		this.roleId = roleId;
	}

	public String getRoleName() {
		return roleName;
	}

	public void setRoleName(String roleName) {
		this.roleName = roleName;
	}

	public Set<Users> getUsers() {
		return users;
	}

	public void setUsers(Set<Users> users) {
		this.users = users;
	}

	@Override
	public String toString() {
		return "Roles [roleId=" + roleId + ", roleName=" + roleName + "]";
	}
}

User.java(用户对象)

package cn.gotojava.pojo;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

/**
 * 	用户对象实体
 * @author 金刀
 *
 */
@Entity
@Table(name = "s_user")
public class Users {
	
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	@Column(name = "user_id")
	private Integer userId;	// 用户编号
	
	@Column(name = "user_name")
	private String userName;	// 用户姓名
	
	@Column(name = "user_address")
	private String addresss;	// 住址
	
	@Column(name = "user_sex")
	private String sex;		// 用户性别
	
	// 多对一映射注解
	/*
	 * cascade = CascadeType.PERSIST
	 * 	级联持久化,给当前设置的实体操作另一个实体的权限
	 */
	@ManyToOne(cascade = CascadeType.PERSIST)
	// 维护外键
	@JoinColumn(name = "roles_id")
	private Roles roles;
	
	public Roles getRoles() {
		return roles;
	}
	public void setRoles(Roles roles) {
		this.roles = roles;
	}
	public Users() {
		super();
	}
	public Users(Integer userId, String userName, String addresss, String sex) {
		super();
		this.userId = userId;
		this.userName = userName;
		this.addresss = addresss;
		this.sex = sex;
	}
	public Integer getUserId() {
		return userId;
	}
	public void setUserId(Integer userId) {
		this.userId = userId;
	}
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getAddresss() {
		return addresss;
	}
	public void setAddresss(String addresss) {
		this.addresss = addresss;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	
	@Override
	public String toString() {
		return "Users [userId=" + userId + ", userName=" + userName + ", addresss=" + addresss + ", sex=" + sex
				+ ", roles=" + roles + "]";
	}
}

接口定义

持久层JPA接口

package cn.gotojava.dao;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.transaction.annotation.Transactional;

import cn.gotojava.pojo.Users;

@Transactional
public interface IUsersRepository extends JpaRepository<Users, Integer>{
	
}

业务层接口

package cn.gotojava.service;

import cn.gotojava.pojo.Users;

public interface IUsersService {
	/**
	 *	 新增用户信息
	 */
	Users save(Users user);
	
	/**
	 * 	根据用户编号查询用户信息
	 */
	Users findOne(int userid);
}

接口实现类

业务层接口实现类

package cn.gotojava.service.impl;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import cn.gotojava.dao.IUsersRepository;
import cn.gotojava.pojo.Users;
import cn.gotojava.service.IUsersService;

@Service
public class UsersServiceImpl implements IUsersService{
	@Autowired
	private IUsersRepository userRepository;
	
	/**
	 *	 新增用户信息
	 */
	@Override
	public Users save(Users user) {
		return this.userRepository.save(user);
	}

	/**
	 * 	根据用户编号查询用户信息
	 */
	@Override
	public Users findOne(int userid) {
		return this.userRepository.findOne(userid);
	}
}

单元测试类

package cn.gotojava.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.SpringJUnit4ClassRunner;

import cn.gotojava.Application;
import cn.gotojava.pojo.Roles;
import cn.gotojava.pojo.Users;
import cn.gotojava.service.IUsersService;

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = Application.class)
public class UsersServiceImplTest {
	
	@Autowired
	private IUsersService userService;
	
	@Test
	public void testSave() {
		Users user = new Users();
		user.setUserName("张三");
		user.setSex("男");
		user.setAddresss("湖北十堰");
		
		Roles roles = new Roles();
		roles.setRoleName("普通用户");
		
		roles.getUsers().add(user);
		user.setRoles(roles);
		Users save = this.userService.save(user);
		System.out.println(save);
	}
	
	@Test
	public void findOne() {
		Users findOne = this.userService.findOne(2);
		System.out.println(findOne);
	}

}

运行效果

新增效果

金刀的博客|SpringBoot整合SpringDataJpa一对多对象关联映射_第3张图片

查询单个

金刀的博客|SpringBoot整合SpringDataJpa一对多对象关联映射_第4张图片

数据库内容

金刀的博客|SpringBoot整合SpringDataJpa一对多对象关联映射_第5张图片

你可能感兴趣的:(Spring)