关联查询
1、@OneToOne–实现人与身份证的一对一关系映射
a>创建实体类
package com. yzh. jpa. entity ;
import java. io. Serializable ;
import javax. persistence. CascadeType ;
import javax. persistence. Entity ;
import javax. persistence. FetchType ;
import javax. persistence. GeneratedValue ;
import javax. persistence. GenerationType ;
import javax. persistence. Id ;
import javax. persistence. JoinColumn ;
import javax. persistence. OneToOne ;
import javax. persistence. Table ;
import com. fasterxml. jackson. annotation. JsonIgnore ;
import com. fasterxml. jackson. annotation. JsonIgnoreProperties ;
import lombok. AllArgsConstructor ;
import lombok. Data ;
import lombok. NoArgsConstructor ;
import lombok. ToString ;
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
@Entity
@Table ( name= "person_table" )
@JsonIgnoreProperties ( value = { "hibernateLazyInitializer" } )
public class Person implements Serializable {
private static final long serialVersionUID = 1L ;
@Id
@GeneratedValue ( strategy = GenerationType . IDENTITY)
private int id;
private String pname;
private String psex;
private int page;
@OneToOne (
optional = true ,
fetch = FetchType . LAZY,
targetEntity = IdCard . class ,
cascade = CascadeType . ALL
)
@JoinColumn (
name = "id_Card_id" ,
referencedColumnName = "id" ,
unique= true
)
@JsonIgnore
private IdCard idCard;
}
package com. yzh. jpa. entity ;
import java. io. Serializable ;
import java. util. Calendar ;
import javax. persistence. CascadeType ;
import javax. persistence. Entity ;
import javax. persistence. FetchType ;
import javax. persistence. GeneratedValue ;
import javax. persistence. GenerationType ;
import javax. persistence. Id ;
import javax. persistence. OneToOne ;
import javax. persistence. Table ;
import javax. persistence. Temporal ;
import javax. persistence. TemporalType ;
import com. fasterxml. jackson. annotation. JsonIgnoreProperties ;
import lombok. AllArgsConstructor ;
import lombok. Data ;
import lombok. NoArgsConstructor ;
import lombok. ToString ;
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
@Entity
@Table ( name = "idcard_table" )
@JsonIgnoreProperties ( value = { "hibernateLazyInitializer" } )
public class IdCard implements Serializable {
private static final long serialVersionUID = 1L ;
@Id
@GeneratedValue ( strategy = GenerationType . IDENTITY)
private int id;
private String code;
@Temporal ( value = TemporalType . DATE)
private Calendar birthday;
private String address;
@OneToOne (
optional = true ,
fetch = FetchType . LAZY,
targetEntity = Person . class ,
mappedBy = "idCard" ,
cascade = CascadeType . ALL
)
private Person person;
}
b>创建数据访问层
package com. yzh. jpa. repository ;
import java. util. List ;
import com. yzh. jpa. entity. Person ;
import org. springframework. data. jpa. repository. JpaRepository ;
public interface PersonRepository extends JpaRepository < Person , Integer > {
public Person findByIdCard_id ( Integer id) ;
public List < Person > findByPnameAndPsex ( String pname, String psex) ;
}
package com. yzh. jpa. repository ;
import java. util. List ;
import com. yzh. jpa. entity. IdCard ;
import org. springframework. data. jpa. repository. JpaRepository ;
public interface IdCardRepository extends JpaRepository < IdCard , Integer > {
public IdCard findByPerson_id ( Integer id) ;
public List < IdCard > findByAddressAndCode ( String address, String code) ;
}
c>创建业务层
package com. yzh. jpa. service ;
import java. util. List ;
import com. yzh. jpa. entity. IdCard ;
import com. yzh. jpa. entity. Person ;
public interface PersonAndIdCardService {
public void saveAll ( ) ;
public List < Person > findAllPerson ( ) ;
public List < IdCard > findAllIdCard ( ) ;
public IdCard findByPerson_id ( Integer id) ;
public List < IdCard > findByAddressAndCode ( String address, String code) ;
public Person findByIdCard_id ( Integer id) ;
public List < Person > findByPnameAndPsex ( String pname, String psex) ;
public IdCard getOneIdCard ( Integer id) ;
public Person getOnePerson ( Integer id) ;
}
package com. yzh. jpa. service ;
import java. util. ArrayList ;
import java. util. Calendar ;
import java. util. List ;
import com. yzh. jpa. entity. IdCard ;
import com. yzh. jpa. entity. Person ;
import com. yzh. jpa. repository. IdCardRepository ;
import com. yzh. jpa. repository. PersonRepository ;
import org. springframework. beans. factory. annotation. Autowired ;
import org. springframework. stereotype. Service ;
@Service
public class PersonAndIdCardServiceImpl implements PersonAndIdCardService {
@Autowired
private IdCardRepository idCardRepository;
@Autowired
private PersonRepository personRepository;
@Override
public void saveAll ( ) {
IdCard ic1 = new IdCard ( ) ;
ic1. setCode ( "123456789" ) ;
ic1. setAddress ( "北京" ) ;
Calendar c1 = Calendar . getInstance ( ) ;
c1. set ( 2019 , 8 , 13 ) ;
ic1. setBirthday ( c1) ;
IdCard ic2 = new IdCard ( ) ;
ic2. setCode ( "000123456789" ) ;
ic2. setAddress ( "上海" ) ;
Calendar c2 = Calendar . getInstance ( ) ;
c2. set ( 2019 , 8 , 14 ) ;
ic2. setBirthday ( c2) ;
IdCard ic3 = new IdCard ( ) ;
ic3. setCode ( "1111123456789" ) ;
ic3. setAddress ( "广州" ) ;
Calendar c3 = Calendar . getInstance ( ) ;
c3. set ( 2019 , 8 , 15 ) ;
ic3. setBirthday ( c3) ;
List < IdCard > idCards = new ArrayList < IdCard > ( ) ;
idCards. add ( ic1) ;
idCards. add ( ic2) ;
idCards. add ( ic3) ;
idCardRepository. saveAll ( idCards) ;
Person p1 = new Person ( ) ;
p1. setPname ( "陈恒1" ) ;
p1. setPsex ( "男" ) ;
p1. setPage ( 88 ) ;
p1. setIdCard ( ic1) ;
Person p2 = new Person ( ) ;
p2. setPname ( "陈恒2" ) ;
p2. setPsex ( "女" ) ;
p2. setPage ( 99 ) ;
p2. setIdCard ( ic2) ;
Person p3 = new Person ( ) ;
p3. setPname ( "陈恒3" ) ;
p3. setPsex ( "女" ) ;
p3. setPage ( 18 ) ;
p3. setIdCard ( ic3) ;
List < Person > persons = new ArrayList < Person > ( ) ;
persons. add ( p1) ;
persons. add ( p2) ;
persons. add ( p3) ;
personRepository. saveAll ( persons) ;
}
@Override
public List < Person > findAllPerson ( ) {
return personRepository. findAll ( ) ;
}
@Override
public List < IdCard > findAllIdCard ( ) {
return idCardRepository. findAll ( ) ;
}
@Override
public IdCard findByPerson_id ( Integer id) {
return idCardRepository. findByPerson_id ( id) ;
}
@Override
public List < IdCard > findByAddressAndCode ( String address, String code) {
return idCardRepository. findByAddressAndCode ( address, code) ;
}
@Override
public Person findByIdCard_id ( Integer id) {
return personRepository. findByIdCard_id ( id) ;
}
@Override
public List < Person > findByPnameAndPsex ( String pname, String psex) {
return personRepository. findByPnameAndPsex ( pname, psex) ;
}
@Override
public IdCard getOneIdCard ( Integer id) {
return idCardRepository. getOne ( id) ;
}
@Override
public Person getOnePerson ( Integer id) {
return personRepository. getOne ( id) ;
}
}
d>创建控制器类
package com. yzh. jpa. service ;
import java. util. ArrayList ;
import java. util. Calendar ;
import java. util. List ;
import com. yzh. jpa. entity. IdCard ;
import com. yzh. jpa. entity. Person ;
import com. yzh. jpa. repository. IdCardRepository ;
import com. yzh. jpa. repository. PersonRepository ;
import org. springframework. beans. factory. annotation. Autowired ;
import org. springframework. stereotype. Service ;
@Service
public class PersonAndIdCardServiceImpl implements PersonAndIdCardService {
@Autowired
private IdCardRepository idCardRepository;
@Autowired
private PersonRepository personRepository;
@Override
public void saveAll ( ) {
IdCard ic1 = new IdCard ( ) ;
ic1. setCode ( "123456789" ) ;
ic1. setAddress ( "北京" ) ;
Calendar c1 = Calendar . getInstance ( ) ;
c1. set ( 2019 , 8 , 13 ) ;
ic1. setBirthday ( c1) ;
IdCard ic2 = new IdCard ( ) ;
ic2. setCode ( "000123456789" ) ;
ic2. setAddress ( "上海" ) ;
Calendar c2 = Calendar . getInstance ( ) ;
c2. set ( 2019 , 8 , 14 ) ;
ic2. setBirthday ( c2) ;
IdCard ic3 = new IdCard ( ) ;
ic3. setCode ( "1111123456789" ) ;
ic3. setAddress ( "广州" ) ;
Calendar c3 = Calendar . getInstance ( ) ;
c3. set ( 2019 , 8 , 15 ) ;
ic3. setBirthday ( c3) ;
List < IdCard > idCards = new ArrayList < IdCard > ( ) ;
idCards. add ( ic1) ;
idCards. add ( ic2) ;
idCards. add ( ic3) ;
idCardRepository. saveAll ( idCards) ;
Person p1 = new Person ( ) ;
p1. setPname ( "陈恒1" ) ;
p1. setPsex ( "男" ) ;
p1. setPage ( 88 ) ;
p1. setIdCard ( ic1) ;
Person p2 = new Person ( ) ;
p2. setPname ( "陈恒2" ) ;
p2. setPsex ( "女" ) ;
p2. setPage ( 99 ) ;
p2. setIdCard ( ic2) ;
Person p3 = new Person ( ) ;
p3. setPname ( "陈恒3" ) ;
p3. setPsex ( "女" ) ;
p3. setPage ( 18 ) ;
p3. setIdCard ( ic3) ;
List < Person > persons = new ArrayList < Person > ( ) ;
persons. add ( p1) ;
persons. add ( p2) ;
persons. add ( p3) ;
personRepository. saveAll ( persons) ;
}
@Override
public List < Person > findAllPerson ( ) {
return personRepository. findAll ( ) ;
}
@Override
public List < IdCard > findAllIdCard ( ) {
return idCardRepository. findAll ( ) ;
}
@Override
public IdCard findByPerson_id ( Integer id) {
return idCardRepository. findByPerson_id ( id) ;
}
@Override
public List < IdCard > findByAddressAndCode ( String address, String code) {
return idCardRepository. findByAddressAndCode ( address, code) ;
}
@Override
public Person findByIdCard_id ( Integer id) {
return personRepository. findByIdCard_id ( id) ;
}
@Override
public List < Person > findByPnameAndPsex ( String pname, String psex) {
return personRepository. findByPnameAndPsex ( pname, psex) ;
}
@Override
public IdCard getOneIdCard ( Integer id) {
return idCardRepository. getOne ( id) ;
}
@Override
public Person getOnePerson ( Integer id) {
return personRepository. getOne ( id) ;
}
}
2、@OneToMany–实现作者和文章一对多的映射关系
a>创建实体类
package com. yzh. jpa. entity ;
import java. io. Serializable ;
import java. util. List ;
import javax. persistence. CascadeType ;
import javax. persistence. Entity ;
import javax. persistence. FetchType ;
import javax. persistence. GeneratedValue ;
import javax. persistence. GenerationType ;
import javax. persistence. Id ;
import javax. persistence. OneToMany ;
import javax. persistence. Table ;
import com. fasterxml. jackson. annotation. JsonIgnoreProperties ;
import lombok. AllArgsConstructor ;
import lombok. Data ;
import lombok. NoArgsConstructor ;
import lombok. ToString ;
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
@Entity
@Table ( name = "author_table" )
@JsonIgnoreProperties ( value = { "hibernateLazyInitializer" } )
public class Author implements Serializable {
private static final long serialVersionUID = 1L ;
@Id
@GeneratedValue ( strategy = GenerationType . IDENTITY)
private int id;
private String aname;
@OneToMany (
mappedBy = "author" ,
cascade= CascadeType . ALL,
targetEntity = Article . class ,
fetch= FetchType . LAZY
)
private List < Article > articleList;
}
package com. yzh. jpa. entity ;
import java. io. Serializable ;
import javax. persistence. Basic ;
import javax. persistence. CascadeType ;
import javax. persistence. Column ;
import javax. persistence. Entity ;
import javax. persistence. FetchType ;
import javax. persistence. GeneratedValue ;
import javax. persistence. GenerationType ;
import javax. persistence. Id ;
import javax. persistence. JoinColumn ;
import javax. persistence. Lob ;
import javax. persistence. ManyToOne ;
import javax. persistence. Table ;
import javax. validation. constraints. NotEmpty ;
import javax. validation. constraints. Size ;
import com. fasterxml. jackson. annotation. JsonIgnore ;
import com. fasterxml. jackson. annotation. JsonIgnoreProperties ;
import lombok. AllArgsConstructor ;
import lombok. Data ;
import lombok. NoArgsConstructor ;
import lombok. ToString ;
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
@Entity
@Table ( name = "article_table" )
@JsonIgnoreProperties ( value = { "hibernateLazyInitializer" } )
public class Article implements Serializable {
private static final long serialVersionUID = 1L ;
@Id
@GeneratedValue ( strategy = GenerationType . IDENTITY)
private int id;
@NotEmpty ( message = "标题不能为空" )
@Size ( min = 2 , max = 50 )
@Column ( nullable = false , length = 50 )
private String title;
@Lob
@Basic ( fetch = FetchType . LAZY)
@NotEmpty ( message = "内容不能为空" )
@Size ( min = 2 )
@Column ( nullable = false )
private String content;
@ManyToOne ( cascade= { CascadeType . MERGE, CascadeType . REFRESH} , optional= false )
@JoinColumn ( name= "id_author_id" )
@JsonIgnore
private Author author;
}
b>创建数据访问层
package com. yzh. jpa. repository ;
import com. yzh. jpa. entity. Author ;
import org. springframework. data. jpa. repository. JpaRepository ;
import org. springframework. data. jpa. repository. Query ;
public interface AuthorRepository extends JpaRepository < Author , Integer > {
public Author findByArticleList_titleContaining ( String title) ;
@Query ( "select a from Author a inner join a.articleList t where t.title like %?1%" )
public Author findAuthorByArticleListtitleContaining ( String title) ;
}
package com. yzh. jpa. repository ;
import java. util. List ;
import com. yzh. jpa. entity. Article ;
import org. springframework. data. jpa. repository. JpaRepository ;
public interface ArticleRepository extends JpaRepository < Article , Integer > {
public List < Article > findByAuthor_id ( Integer id) ;
public List < Article > findByAuthor_aname ( String aname) ;
}
c>创建业务层
package com. yzh. jpa. service ;
import java. util. List ;
import com. yzh. jpa. entity. Article ;
import com. yzh. jpa. entity. Author ;
public interface AuthorAndArticleService {
public void saveAll ( ) ;
public List < Article > findByAuthor_id ( Integer id) ;
public List < Article > findByAuthor_aname ( String aname) ;
public Author findByArticleList_titleContaining ( String title) ;
public Author findAuthorByArticleListtitleContaining ( String title) ;
}
package com. yzh. jpa. service ;
import java. util. ArrayList ;
import java. util. List ;
import com. yzh. jpa. entity. Article ;
import com. yzh. jpa. entity. Author ;
import com. yzh. jpa. repository. ArticleRepository ;
import com. yzh. jpa. repository. AuthorRepository ;
import org. springframework. beans. factory. annotation. Autowired ;
import org. springframework. stereotype. Service ;
@Service
public class AuthorAndArticleServiceImpl implements AuthorAndArticleService {
@Autowired
private AuthorRepository authorRepository;
@Autowired
private ArticleRepository articleRepository;
@Override
public void saveAll ( ) {
Author a1 = new Author ( ) ;
a1. setAname ( "陈恒1" ) ;
Author a2 = new Author ( ) ;
a2. setAname ( "陈恒2" ) ;
ArrayList < Author > allAuthor = new ArrayList < Author > ( ) ;
allAuthor. add ( a1) ;
allAuthor. add ( a2) ;
authorRepository. saveAll ( allAuthor) ;
Article at1 = new Article ( ) ;
at1. setTitle ( "JPA的一对多111" ) ;
at1. setContent ( "其实一对多映射关系很常见111。" ) ;
at1. setAuthor ( a1) ;
Article at2 = new Article ( ) ;
at2. setTitle ( "JPA的一对多222" ) ;
at2. setContent ( "其实一对多映射关系很常见222。" ) ;
at2. setAuthor ( a1) ;
Article at3 = new Article ( ) ;
at3. setTitle ( "JPA的一对多333" ) ;
at3. setContent ( "其实一对多映射关系很常见333。" ) ;
at3. setAuthor ( a2) ;
Article at4 = new Article ( ) ;
at4. setTitle ( "JPA的一对多444" ) ;
at4. setContent ( "其实一对多映射关系很常见444。" ) ;
at4. setAuthor ( a2) ;
ArrayList < Article > allAt = new ArrayList < Article > ( ) ;
allAt. add ( at1) ;
allAt. add ( at2) ;
allAt. add ( at3) ;
allAt. add ( at4) ;
articleRepository. saveAll ( allAt) ;
}
@Override
public List < Article > findByAuthor_id ( Integer id) {
return articleRepository. findByAuthor_id ( id) ;
}
@Override
public List < Article > findByAuthor_aname ( String aname) {
return articleRepository. findByAuthor_aname ( aname) ;
}
@Override
public Author findByArticleList_titleContaining ( String title) {
return authorRepository. findByArticleList_titleContaining ( title) ;
}
@Override
public Author findAuthorByArticleListtitleContaining ( String title) {
return authorRepository. findAuthorByArticleListtitleContaining ( title) ;
}
}
d>创建控制器类
package com. yzh. jpa. controller ;
import java. util. List ;
import com. yzh. jpa. entity. Article ;
import com. yzh. jpa. entity. Author ;
import com. yzh. jpa. service. AuthorAndArticleService ;
import org. springframework. beans. factory. annotation. Autowired ;
import org. springframework. web. bind. annotation. RequestMapping ;
import org. springframework. web. bind. annotation. RestController ;
@RestController
public class TestOneToManyController {
@Autowired
private AuthorAndArticleService authorAndArticleService;
@RequestMapping ( "/saveOneToMany" )
public String save ( ) {
authorAndArticleService. saveAll ( ) ;
return "作者和文章保存成功!" ;
}
@RequestMapping ( "/findArticleByAuthor_id" )
public List < Article > findByAuthor_id ( Integer id) {
return authorAndArticleService. findByAuthor_id ( id) ;
}
@RequestMapping ( "/findArticleByAuthor_aname" )
public List < Article > findByAuthor_aname ( String aname) {
return authorAndArticleService. findByAuthor_aname ( aname) ;
}
@RequestMapping ( "/findByArticleList_titleContaining" )
public Author findByArticleList_titleContaining ( String title) {
return authorAndArticleService. findByArticleList_titleContaining ( title) ;
}
@RequestMapping ( "/findAuthorByArticleListtitleContaining" )
public Author findAuthorByArticleListtitleContaining ( String title) {
return authorAndArticleService. findAuthorByArticleListtitleContaining ( title) ;
}
}
3、@ManyToMany–实现用户和权限多对多的映射关系
a>创建实体类
package com. yzh. jpa. entity ;
import java. io. Serializable ;
import java. util. List ;
import javax. persistence. Entity ;
import javax. persistence. GeneratedValue ;
import javax. persistence. GenerationType ;
import javax. persistence. Id ;
import javax. persistence. JoinColumn ;
import javax. persistence. JoinTable ;
import javax. persistence. ManyToMany ;
import javax. persistence. Table ;
import com. fasterxml. jackson. annotation. JsonIgnoreProperties ;
import lombok. AllArgsConstructor ;
import lombok. Data ;
import lombok. NoArgsConstructor ;
import lombok. ToString ;
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
@Entity
@Table ( name = "user" )
@JsonIgnoreProperties ( value = { "hibernateLazyInitializer" } )
public class User implements Serializable {
private static final long serialVersionUID = 1L ;
@Id
@GeneratedValue ( strategy = GenerationType . IDENTITY)
private int id;
private String username;
private String password;
@ManyToMany
@JoinTable ( name = "user_authority" , joinColumns = @JoinColumn ( name = "user_id" ) ,
inverseJoinColumns = @JoinColumn ( name = "authority_id" ) )
private List < Authority > authorityList;
}
package com. yzh. jpa. entity ;
import java. io. Serializable ;
import java. util. List ;
import javax. persistence. Column ;
import javax. persistence. Entity ;
import javax. persistence. GeneratedValue ;
import javax. persistence. GenerationType ;
import javax. persistence. Id ;
import javax. persistence. ManyToMany ;
import javax. persistence. Table ;
import com. fasterxml. jackson. annotation. JsonIgnore ;
import com. fasterxml. jackson. annotation. JsonIgnoreProperties ;
import lombok. AllArgsConstructor ;
import lombok. Data ;
import lombok. NoArgsConstructor ;
import lombok. ToString ;
@Data
@AllArgsConstructor
@NoArgsConstructor
@ToString
@Entity
@Table ( name = "authority" )
@JsonIgnoreProperties ( value = { "hibernateLazyInitializer" } )
public class Authority implements Serializable {
private static final long serialVersionUID = 1L ;
@Id
@GeneratedValue ( strategy = GenerationType . IDENTITY)
private int id;
@Column ( nullable = false )
private String name;
@ManyToMany ( mappedBy = "authorityList" )
@JsonIgnore
private List < User > userList;
}
b>创建数据访问层
package com. yzh. jpa. repository ;
import java. util. List ;
import com. yzh. jpa. entity. User ;
import org. springframework. data. jpa. repository. JpaRepository ;
public interface UserRepository2 extends JpaRepository < User , Integer > {
public List < User > findByAuthorityList_id ( int id) ;
public List < User > findByAuthorityList_name ( String name) ;
}
package com. yzh. jpa. repository ;
import java. util. List ;
import com. yzh. jpa. entity. Authority ;
import org. springframework. data. jpa. repository. JpaRepository ;
import org. springframework. data. jpa. repository. Query ;
public interface AuthorityRepository extends JpaRepository < Authority , Integer > {
public List < Authority > findByUserList_id ( int id) ;
public List < Authority > findByUserList_Username ( String username) ;
@Query ( "select a from Authority a inner join a.userList u where u.username = ?1" )
public List < Authority > findByUserListUsername ( String username) ;
}
c>创建业务层
package com. yzh. jpa. service ;
import java. util. List ;
import com. yzh. jpa. entity. Authority ;
import com. yzh. jpa. entity. User ;
public interface UserAndAuthorityService {
public void saveAll ( ) ;
public List < User > findByAuthorityList_id ( int id) ;
public List < User > findByAuthorityList_name ( String name) ;
public List < Authority > findByUserList_id ( int id) ;
public List < Authority > findByUserList_Username ( String username) ;
public List < Authority > findByUserListUsername ( String username) ;
}
package com. yzh. jpa. service ;
import java. util. ArrayList ;
import java. util. List ;
import com. yzh. jpa. entity. Authority ;
import com. yzh. jpa. entity. User ;
import com. yzh. jpa. repository. AuthorityRepository ;
import com. yzh. jpa. repository. UserRepository2 ;
import org. springframework. beans. factory. annotation. Autowired ;
import org. springframework. stereotype. Service ;
@Service
public class UserAndAuthorityServiceImpl implements UserAndAuthorityService {
@Autowired
private AuthorityRepository authorityRepository;
@Autowired
private UserRepository2 userRepository2;
@Override
public void saveAll ( ) {
Authority at1 = new Authority ( ) ;
at1. setName ( "增加" ) ;
authorityRepository. save ( at1) ;
Authority at2 = new Authority ( ) ;
at2. setName ( "修改" ) ;
authorityRepository. save ( at2) ;
Authority at3 = new Authority ( ) ;
at3. setName ( "删除" ) ;
authorityRepository. save ( at3) ;
Authority at4 = new Authority ( ) ;
at4. setName ( "查询" ) ;
authorityRepository. save ( at4) ;
User u1 = new User ( ) ;
u1. setUsername ( "陈恒1" ) ;
u1. setPassword ( "123" ) ;
ArrayList < Authority > authorityList1 = new ArrayList < Authority > ( ) ;
authorityList1. add ( at1) ;
authorityList1. add ( at2) ;
authorityList1. add ( at3) ;
u1. setAuthorityList ( authorityList1) ;
userRepository2. save ( u1) ;
User u2 = new User ( ) ;
u2. setUsername ( "陈恒2" ) ;
u2. setPassword ( "234" ) ;
ArrayList < Authority > authorityList2 = new ArrayList < Authority > ( ) ;
authorityList2. add ( at2) ;
authorityList2. add ( at3) ;
authorityList2. add ( at4) ;
u2. setAuthorityList ( authorityList2) ;
userRepository2. save ( u2) ;
}
@Override
public List < User > findByAuthorityList_id ( int id) {
return userRepository2. findByAuthorityList_id ( id) ;
}
@Override
public List < User > findByAuthorityList_name ( String name) {
return userRepository2. findByAuthorityList_name ( name) ;
}
@Override
public List < Authority > findByUserList_id ( int id) {
return authorityRepository. findByUserList_id ( id) ;
}
@Override
public List < Authority > findByUserList_Username ( String username) {
return authorityRepository. findByUserList_Username ( username) ;
}
@Override
public List < Authority > findByUserListUsername ( String username) {
return authorityRepository. findByUserListUsername ( username) ;
}
}
package com. yzh. jpa. controller ;
import java. util. List ;
import com. yzh. jpa. entity. Authority ;
import com. yzh. jpa. entity. User ;
import com. yzh. jpa. service. UserAndAuthorityService ;
import org. springframework. beans. factory. annotation. Autowired ;
import org. springframework. web. bind. annotation. RequestMapping ;
import org. springframework. web. bind. annotation. RestController ;
@RestController
public class TestManyToManyController {
@Autowired
private UserAndAuthorityService userAndAuthorityService;
@RequestMapping ( "/saveManyToMany" )
public String save ( ) {
userAndAuthorityService. saveAll ( ) ;
return "权限和用户保存成功!" ;
}
@RequestMapping ( "/findByAuthorityList_id" )
public List < User > findByAuthorityList_id ( int id) {
return userAndAuthorityService. findByAuthorityList_id ( id) ;
}
@RequestMapping ( "/findByAuthorityList_name" )
public List < User > findByAuthorityList_name ( String name) {
return userAndAuthorityService. findByAuthorityList_name ( name) ;
}
@RequestMapping ( "/findByUserList_id" )
public List < Authority > findByUserList_id ( int id) {
return userAndAuthorityService. findByUserList_id ( id) ;
}
@RequestMapping ( "/findByUserList_Username" )
public List < Authority > findByUserList_Username ( String username) {
return userAndAuthorityService. findByUserList_Username ( username) ;
}
@RequestMapping ( "/findByUserListUsername" )
public List < Authority > findByUserListUsername ( String username) {
return userAndAuthorityService. findByUserListUsername ( username) ;
}
}
d>创建控制器类