创建中间表是数据库设计中比较常见的操作,通常用于多对多关系的表之间,下面将介绍使用SpringDataJpa来创建中间表的完整攻略及示例。
1. 创建实体类和对应的Repository类
首先,需要创建两个实体类来代表多对多关系中的两个表,并在这两个实体类的@Repository注解中使用@RestController
注解(或其他泛型注解)来继承SpringDataJpa的基础Repository类,这里以使用MySQL为例:
(1)实体类User
@Entity
@Table(name="tbl_user")
public class User {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;
@Column(name = "username")
private String username;
@Column(name = "password")
private String password;
@ManyToMany(cascade = CascadeType.ALL,fetch=FetchType.LAZY)
@JoinTable(name="user_role",
joinColumns={@JoinColumn(name="user_id")},
inverseJoinColumns={@JoinColumn(name="role_id")})
private Set<Role> roles = new HashSet<Role>();
// setter和getter方法......
}
(2)实体类Role
@Entity
@Table(name="tbl_role")
public class Role {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;
@Column(name = "rolename")
private String rolename;
@ManyToMany(mappedBy="roles")
Set<User> users = new HashSet<User>();
// setter和getter方法......
}
2. 创建中间表
在user_role表中会保存user和role之间的关系,通过在JpaRepository接口上添加@Query注解来创建中间表,示例如下:
@Query("insert into user_role(user_id, role_id) values(?1, ?2)")
void insertUserRole(int userId, int roleId);
3. 使用中间表
通过以上步骤可以完成多对多关系的建立,下面介绍如何使用中间表。
(1)在UserService中处理role和user关系:
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserRepository userRepository;
public void addUser(User user) {
userRepository.save(user);
}
public void addRole(User user, Role role) {
user.getRoles().add(role);
userRepository.save(user);
}
}
(2)在UserController中进行操作:
@Controller
public class UserController {
@Autowired
private UserService userService;
@RequestMapping(value="/addUser", method=RequestMethod.POST)
public String addUser(@RequestBody User user) {
userService.addUser(user);
return "success";
}
@RequestMapping(value="/addRole", method=RequestMethod.POST)
public String addRole(@RequestParam("userId") int userId, @RequestParam("roleId") int roleId) {
userService.addRole(userRepository.findById(userId), roleRepository.findById(roleId));
return "success";
}
}
以上就是使用SpringDataJpa创建多对多中间表的完整攻略,完成了多对多关系的建立及使用。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用SpringDataJpa创建中间表 - Python技术站