Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
qq_41234584
spring-boot-demo
提交
2b619798
S
spring-boot-demo
项目概览
qq_41234584
/
spring-boot-demo
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
S
spring-boot-demo
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
2b619798
编写于
10月 10, 2019
作者:
不合群的混子
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
✨
jpa增加部门上下级自关联,用户部门多对多关联,[PR#59](
https://github.com/xkcoding/spring-boot-demo/pull/59
)
上级
5dafba9e
变更
7
隐藏空白更改
内联
并排
Showing
7 changed file
with
287 addition
and
108 deletion
+287
-108
spring-boot-demo-orm-jpa/README.md
spring-boot-demo-orm-jpa/README.md
+192
-11
spring-boot-demo-orm-jpa/pom.xml
spring-boot-demo-orm-jpa/pom.xml
+57
-63
spring-boot-demo-orm-jpa/src/main/java/com/xkcoding/orm/jpa/entity/Department.java
...src/main/java/com/xkcoding/orm/jpa/entity/Department.java
+5
-5
spring-boot-demo-orm-jpa/src/main/java/com/xkcoding/orm/jpa/entity/User.java
...m-jpa/src/main/java/com/xkcoding/orm/jpa/entity/User.java
+9
-11
spring-boot-demo-orm-jpa/src/main/java/com/xkcoding/orm/jpa/repository/DepartmentDao.java
...n/java/com/xkcoding/orm/jpa/repository/DepartmentDao.java
+8
-2
spring-boot-demo-orm-jpa/src/main/resources/db/schema.sql
spring-boot-demo-orm-jpa/src/main/resources/db/schema.sql
+5
-5
spring-boot-demo-orm-jpa/src/test/java/com/xkcoding/orm/jpa/repository/DepartmentDaoTest.java
...va/com/xkcoding/orm/jpa/repository/DepartmentDaoTest.java
+11
-11
未找到文件。
spring-boot-demo-orm-jpa/README.md
浏览文件 @
2b619798
# spring-boot-demo-orm-jpa
> 此 demo 主要演示了 Spring Boot 如何使用 JPA 操作数据库。
> 此 demo 主要演示了 Spring Boot 如何使用 JPA 操作数据库,包含简单使用以及级联使用。
## 主要代码
### pom.xml
## pom.xml
```
xml
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
...
...
@@ -78,7 +81,7 @@
</project>
```
## JpaConfig.java
##
#
JpaConfig.java
```
java
/**
* <p>
...
...
@@ -123,7 +126,7 @@ public class JpaConfig {
}
}
```
## User.java
##
#
User.java
```
java
/**
* <p>
...
...
@@ -136,12 +139,12 @@ public class JpaConfig {
* @date: Created in 2018/11/7 14:06
* @copyright: Copyright (c)
* @version: V1.0
* @modified:
yangkai.shen
* @modified:
76peter
*/
@EqualsAndHashCode
(
callSuper
=
true
)
@Data
@NoArgsConstructor
@AllArgsConstructor
@Data
@Builder
@Entity
@Table
(
name
=
"orm_user"
)
...
...
@@ -183,9 +186,86 @@ public class User extends AbstractAuditModel {
*/
@Column
(
name
=
"last_login_time"
)
private
Date
lastLoginTime
;
/**
* 关联部门表
* 1、关系维护端,负责多对多关系的绑定和解除
* 2、@JoinTable注解的name属性指定关联表的名字,joinColumns指定外键的名字,关联到关系维护端(User)
* 3、inverseJoinColumns指定外键的名字,要关联的关系被维护端(Department)
* 4、其实可以不使用@JoinTable注解,默认生成的关联表名称为主表表名+下划线+从表表名,
* 即表名为user_department
* 关联到主表的外键名:主表名+下划线+主表中的主键列名,即user_id,这里使用referencedColumnName指定
* 关联到从表的外键名:主表中用于关联的属性名+下划线+从表的主键列名,department_id
* 主表就是关系维护端对应的表,从表就是关系被维护端对应的表
*/
@ManyToMany
(
cascade
=
CascadeType
.
ALL
,
fetch
=
FetchType
.
EAGER
)
@JoinTable
(
name
=
"orm_user_dept"
,
joinColumns
=
@JoinColumn
(
name
=
"user_id"
,
referencedColumnName
=
"id"
),
inverseJoinColumns
=
@JoinColumn
(
name
=
"dept_id"
,
referencedColumnName
=
"id"
))
private
Collection
<
Department
>
departmentList
;
}
```
## AbstractAuditModel.java
### Department.java
```
java
/**
* <p>
* 部门实体类
* </p>
*
* @package: com.xkcoding.orm.jpa.entity
* @description: 部门实体类
* @author: 76peter
* @date: Created in 2019/10/1 18:07
* @copyright: Copyright (c) 2019
* @version: V1.0
* @modified: 76peter
*/
@EqualsAndHashCode
(
callSuper
=
true
)
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Entity
@Table
(
name
=
"orm_department"
)
@ToString
(
callSuper
=
true
)
public
class
Department
extends
AbstractAuditModel
{
/**
* 部门名
*/
@Column
(
name
=
"name"
,
columnDefinition
=
"varchar(255) not null"
)
private
String
name
;
/**
* 上级部门id
*/
@ManyToOne
(
cascade
=
{
CascadeType
.
REFRESH
},
optional
=
true
)
@JoinColumn
(
name
=
"superior"
,
referencedColumnName
=
"id"
)
private
Department
superior
;
/**
* 所属层级
*/
@Column
(
name
=
"levels"
,
columnDefinition
=
"int not null default 0"
)
private
Integer
levels
;
/**
* 排序
*/
@Column
(
name
=
"order_no"
,
columnDefinition
=
"int not null default 0"
)
private
Integer
orderNo
;
/**
* 子部门集合
*/
@OneToMany
(
cascade
=
{
CascadeType
.
REFRESH
,
CascadeType
.
REMOVE
},
fetch
=
FetchType
.
EAGER
,
mappedBy
=
"superior"
)
private
Collection
<
Department
>
children
;
/**
* 部门下用户集合
*/
@ManyToMany
(
mappedBy
=
"departmentList"
)
private
Collection
<
User
>
userList
;
}
```
### AbstractAuditModel.java
```
java
/**
* <p>
...
...
@@ -228,7 +308,7 @@ public abstract class AbstractAuditModel implements Serializable {
private
Date
lastUpdateTime
;
}
```
## UserDao.java
##
#
UserDao.java
```
java
/**
* <p>
...
...
@@ -248,7 +328,33 @@ public interface UserDao extends JpaRepository<User, Long> {
}
```
## application.yml
### DepartmentDao.java
```
java
/**
* <p>
* User Dao
* </p>
*
* @package: com.xkcoding.orm.jpa.repository
* @description: Department Dao
* @author: 76peter
* @date: Created in 2019/10/1 18:07
* @copyright: Copyright (c) 2019
* @version: V1.0
* @modified: 76peter
*/
@Repository
public
interface
DepartmentDao
extends
JpaRepository
<
Department
,
Long
>
{
/**
* 根据层级查询部门
*
* @param level 层级
* @return 部门列表
*/
List
<
Department
>
findDepartmentsByLevels
(
Integer
level
);
}
```
### application.yml
```
yaml
server
:
port
:
8080
...
...
@@ -290,7 +396,7 @@ logging:
org.hibernate.SQL
:
debug
org.hibernate.type
:
trace
```
## UserDaoTest.java
##
#
UserDaoTest.java
```
java
/**
* <p>
...
...
@@ -403,7 +509,82 @@ public class UserDaoTest extends SpringBootDemoOrmJpaApplicationTests {
}
```
### DepartmentDaoTest.java
```
java
/**
* <p>
* jpa 测试类
* </p>
*
* @package: com.xkcoding.orm.jpa.repository
* @description: jpa 测试类
* @author: 76peter
* @date: Created in 2018/11/7 14:09
* @copyright: Copyright (c) 2018
* @version: V1.0
* @modified: 76peter
*/
@Slf4j
public
class
DepartmentDaoTest
extends
SpringBootDemoOrmJpaApplicationTests
{
@Autowired
private
DepartmentDao
departmentDao
;
@Autowired
private
UserDao
userDao
;
/**
* 测试保存 ,根节点
*/
@Test
@Transactional
public
void
testSave
()
{
Collection
<
Department
>
departmentList
=
departmentDao
.
findDepartmentsByLevels
(
0
);
if
(
departmentList
.
size
()
==
0
)
{
Department
testSave1
=
Department
.
builder
().
name
(
"testSave1"
).
orderNo
(
0
).
levels
(
0
).
superior
(
null
).
build
();
Department
testSave1_1
=
Department
.
builder
().
name
(
"testSave1_1"
).
orderNo
(
0
).
levels
(
1
).
superior
(
testSave1
).
build
();
Department
testSave1_2
=
Department
.
builder
().
name
(
"testSave1_2"
).
orderNo
(
0
).
levels
(
1
).
superior
(
testSave1
).
build
();
Department
testSave1_1_1
=
Department
.
builder
().
name
(
"testSave1_1_1"
).
orderNo
(
0
).
levels
(
2
).
superior
(
testSave1_1
).
build
();
departmentList
.
add
(
testSave1
);
departmentList
.
add
(
testSave1_1
);
departmentList
.
add
(
testSave1_2
);
departmentList
.
add
(
testSave1_1_1
);
departmentDao
.
saveAll
(
departmentList
);
Collection
<
Department
>
deptall
=
departmentDao
.
findAll
();
log
.
debug
(
"【部门】= {}"
,
JSONArray
.
toJSONString
((
List
)
deptall
));
}
userDao
.
findById
(
1L
).
ifPresent
(
user
->
{
user
.
setName
(
"添加部门"
);
Department
dept
=
departmentDao
.
findById
(
2L
).
get
();
user
.
setDepartmentList
(
departmentList
);
userDao
.
save
(
user
);
});
log
.
debug
(
"用户部门={}"
,
JSONUtil
.
toJsonStr
(
userDao
.
findById
(
1L
).
get
().
getDepartmentList
()));
departmentDao
.
findById
(
2L
).
ifPresent
(
dept
->
{
Collection
<
User
>
userlist
=
dept
.
getUserList
();
//关联关系由user维护中间表,department userlist不会发生变化,可以增加查询方法来处理 重写getUserList方法
log
.
debug
(
"部门下用户={}"
,
JSONUtil
.
toJsonStr
(
userlist
));
});
userDao
.
findById
(
1L
).
ifPresent
(
user
->
{
user
.
setName
(
"清空部门"
);
user
.
setDepartmentList
(
null
);
userDao
.
save
(
user
);
});
log
.
debug
(
"用户部门={}"
,
userDao
.
findById
(
1L
).
get
().
getDepartmentList
());
}
}
```
### 其余代码及 SQL 参见本 demo
## 参考
Spring Data JPA 官方文档:https://docs.spring.io/spring-data/jpa/docs/current/reference/html/
\ No newline at end of file
-
Spring Data JPA 官方文档:https://docs.spring.io/spring-data/jpa/docs/current/reference/html/
spring-boot-demo-orm-jpa/pom.xml
浏览文件 @
2b619798
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<modelVersion>
4.0.0
</modelVersion>
<modelVersion>
4.0.0
</modelVersion>
<artifactId>
spring-boot-demo-orm-jpa
</artifactId>
<version>
1.0.0-SNAPSHOT
</version>
<packaging>
jar
</packaging>
<artifactId>
spring-boot-demo-orm-jpa
</artifactId>
<version>
1.0.0-SNAPSHOT
</version>
<packaging>
jar
</packaging>
<name>
spring-boot-demo-orm-jpa
</name>
<description>
Demo project for Spring Boot
</description>
<name>
spring-boot-demo-orm-jpa
</name>
<description>
Demo project for Spring Boot
</description>
<parent>
<groupId>
com.xkcoding
</groupId>
<artifactId>
spring-boot-demo
</artifactId>
<version>
1.0.0-SNAPSHOT
</version>
</parent>
<parent>
<groupId>
com.xkcoding
</groupId>
<artifactId>
spring-boot-demo
</artifactId>
<version>
1.0.0-SNAPSHOT
</version>
</parent>
<properties>
<project.build.sourceEncoding>
UTF-8
</project.build.sourceEncoding>
<project.reporting.outputEncoding>
UTF-8
</project.reporting.outputEncoding>
<java.version>
1.8
</java.version>
</properties>
<properties>
<project.build.sourceEncoding>
UTF-8
</project.build.sourceEncoding>
<project.reporting.outputEncoding>
UTF-8
</project.reporting.outputEncoding>
<java.version>
1.8
</java.version>
</properties>
<dependencies>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-data-jpa
</artifactId>
</dependency>
<dependencies>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-data-jpa
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter
</artifactId>
</dependency>
<dependency>
<groupId>
mysql
</groupId>
<artifactId>
mysql-connector-java
</artifactId>
</dependency>
<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>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-test
</artifactId>
<scope>
test
</scope>
</dependency>
<dependency>
<groupId>
cn.hutool
</groupId>
<artifactId>
hutool-all
</artifactId>
</dependency>
<dependency>
<groupId>
cn.hutool
</groupId>
<artifactId>
hutool-all
</artifactId>
</dependency>
<dependency>
<groupId>
com.google.guava
</groupId>
<artifactId>
guava
</artifactId>
</dependency>
<dependency>
<groupId>
com.google.guava
</groupId>
<artifactId>
guava
</artifactId>
</dependency>
<dependency>
<groupId>
org.projectlombok
</groupId>
<artifactId>
lombok
</artifactId>
<optional>
true
</optional>
</dependency>
<dependency>
<groupId>
com.alibaba
</groupId>
<artifactId>
fastjson
</artifactId>
<version>
1.2.58
</version>
<scope>
test
</scope>
</dependency>
</dependencies>
<dependency>
<groupId>
org.projectlombok
</groupId>
<artifactId>
lombok
</artifactId>
<optional>
true
</optional>
</dependency>
</dependencies>
<build>
<finalName>
spring-boot-demo-orm-jpa
</finalName>
<plugins>
<plugin>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-maven-plugin
</artifactId>
</plugin>
</plugins>
</build>
<build>
<finalName>
spring-boot-demo-orm-jpa
</finalName>
<plugins>
<plugin>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-maven-plugin
</artifactId>
</plugin>
</plugins>
</build>
</project>
spring-boot-demo-orm-jpa/src/main/java/com/xkcoding/orm/jpa/entity/Department.java
浏览文件 @
2b619798
...
...
@@ -38,8 +38,8 @@ public class Department extends AbstractAuditModel {
/**
* 上级部门id
*/
@ManyToOne
(
cascade
=
{
CascadeType
.
REFRESH
},
optional
=
true
)
@JoinColumn
(
name
=
"superior"
,
referencedColumnName
=
"id"
)
@ManyToOne
(
cascade
=
{
CascadeType
.
REFRESH
},
optional
=
true
)
@JoinColumn
(
name
=
"superior"
,
referencedColumnName
=
"id"
)
private
Department
superior
;
/**
* 所属层级
...
...
@@ -49,12 +49,12 @@ public class Department extends AbstractAuditModel {
/**
* 排序
*/
@Column
(
name
=
"orderno"
,
columnDefinition
=
"int not null default 0"
)
private
Integer
order
n
o
;
@Column
(
name
=
"order
_
no"
,
columnDefinition
=
"int not null default 0"
)
private
Integer
order
N
o
;
/**
* 子部门集合
*/
@OneToMany
(
cascade
={
CascadeType
.
REFRESH
,
CascadeType
.
REMOVE
},
fetch
=
FetchType
.
EAGER
,
mappedBy
=
"superior"
)
@OneToMany
(
cascade
=
{
CascadeType
.
REFRESH
,
CascadeType
.
REMOVE
},
fetch
=
FetchType
.
EAGER
,
mappedBy
=
"superior"
)
private
Collection
<
Department
>
children
;
/**
...
...
spring-boot-demo-orm-jpa/src/main/java/com/xkcoding/orm/jpa/entity/User.java
浏览文件 @
2b619798
...
...
@@ -66,21 +66,19 @@ public class User extends AbstractAuditModel {
@Column
(
name
=
"last_login_time"
)
private
Date
lastLoginTime
;
/**
* 关联部门表
* 1、关系维护端,负责多对多关系的绑定和解除
* 2、@JoinTable注解的name属性指定关联表的名字,joinColumns指定外键的名字,关联到关系维护端(User)
* 3、inverseJoinColumns指定外键的名字,要关联的关系被维护端(Department)
* 4、其实可以不使用@JoinTable注解,默认生成的关联表名称为主表表名+下划线+从表表名,
* 即表名为user_department
* 关联到主表的外键名:主表名+下划线+主表中的主键列名,即user_id,这里使用referencedColumnName指定
* 关联到从表的外键名:主表中用于关联的属性名+下划线+从表的主键列名,department_id
* 主表就是关系维护端对应的表,从表就是关系被维护端对应的表
*/
@ManyToMany
(
cascade
=
CascadeType
.
ALL
,
fetch
=
FetchType
.
EAGER
)
@JoinTable
(
name
=
"orm_usersetdept"
,
joinColumns
=
@JoinColumn
(
name
=
"userid"
,
referencedColumnName
=
"id"
),
inverseJoinColumns
=
@JoinColumn
(
name
=
"deptid"
,
referencedColumnName
=
"id"
))
//1、关系维护端,负责多对多关系的绑定和解除
//2、@JoinTable注解的name属性指定关联表的名字,joinColumns指定外键的名字,关联到关系维护端(User)
//3、inverseJoinColumns指定外键的名字,要关联的关系被维护端(Department)
//4、其实可以不使用@JoinTable注解,默认生成的关联表名称为主表表名+下划线+从表表名,
//即表名为user_department
//关联到主表的外键名:主表名+下划线+主表中的主键列名,即user_id,这里使用referencedColumnName指定
//关联到从表的外键名:主表中用于关联的属性名+下划线+从表的主键列名,department_id
//主表就是关系维护端对应的表,从表就是关系被维护端对应的表
@JoinTable
(
name
=
"orm_user_dept"
,
joinColumns
=
@JoinColumn
(
name
=
"user_id"
,
referencedColumnName
=
"id"
),
inverseJoinColumns
=
@JoinColumn
(
name
=
"dept_id"
,
referencedColumnName
=
"id"
))
private
Collection
<
Department
>
departmentList
;
}
spring-boot-demo-orm-jpa/src/main/java/com/xkcoding/orm/jpa/repository/DepartmentDao.java
浏览文件 @
2b619798
...
...
@@ -4,7 +4,7 @@ import com.xkcoding.orm.jpa.entity.Department;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.stereotype.Repository
;
import
java.util.
Collection
;
import
java.util.
List
;
/**
...
...
@@ -22,5 +22,11 @@ import java.util.Collection;
*/
@Repository
public
interface
DepartmentDao
extends
JpaRepository
<
Department
,
Long
>
{
public
Collection
<
Department
>
findDepartmentsByLevels
(
Integer
level
);
/**
* 根据层级查询部门
*
* @param level 层级
* @return 部门列表
*/
List
<
Department
>
findDepartmentsByLevels
(
Integer
level
);
}
spring-boot-demo-orm-jpa/src/main/resources/db/schema.sql
浏览文件 @
2b619798
...
...
@@ -19,16 +19,16 @@ CREATE TABLE `orm_department` (
`name`
VARCHAR
(
32
)
NOT
NULL
COMMENT
'部门名称'
,
`superior`
INT
(
11
)
COMMENT
'上级id'
,
`levels`
INT
(
11
)
NOT
NULL
COMMENT
'层级'
,
`orderno`
INT
(
11
)
NOT
NULL
DEFAULT
0
COMMENT
'排序'
,
`order
_
no`
INT
(
11
)
NOT
NULL
DEFAULT
0
COMMENT
'排序'
,
`create_time`
DATETIME
NOT
NULL
DEFAULT
NOW
()
COMMENT
'创建时间'
,
`last_update_time`
DATETIME
NOT
NULL
DEFAULT
NOW
()
COMMENT
'上次更新时间'
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8
COMMENT
=
'Spring Boot Demo Orm 系列示例表'
;
--DROP TABLE IF EXISTS `orm_userset
dept`;
CREATE
TABLE
`orm_user
set
dept`
(
DROP
TABLE
IF
EXISTS
`orm_user_
dept`
;
CREATE
TABLE
`orm_user
_
dept`
(
`id`
INT
(
11
)
NOT
NULL
AUTO_INCREMENT
PRIMARY
KEY
COMMENT
'主键'
,
`userid`
INT
(
11
)
NOT
NULL
COMMENT
'用户id'
,
`deptid`
INT
(
11
)
NOT
NULL
COMMENT
'部门id'
,
`user
_
id`
INT
(
11
)
NOT
NULL
COMMENT
'用户id'
,
`dept
_
id`
INT
(
11
)
NOT
NULL
COMMENT
'部门id'
,
`create_time`
DATETIME
NOT
NULL
DEFAULT
NOW
()
COMMENT
'创建时间'
,
`last_update_time`
DATETIME
NOT
NULL
DEFAULT
NOW
()
COMMENT
'上次更新时间'
)
ENGINE
=
InnoDB
DEFAULT
CHARSET
=
utf8
COMMENT
=
'Spring Boot Demo Orm 系列示例表'
;
spring-boot-demo-orm-jpa/src/test/java/com/xkcoding/orm/jpa/repository/DepartmentDaoTest.java
浏览文件 @
2b619798
package
com.xkcoding.orm.jpa.repository
;
import
cn.hutool.json.JSONUtil
;
import
com.xkcoding.orm.jpa.SpringBootDemoOrmJpaApplicationTests
;
import
com.xkcoding.orm.jpa.entity.Department
;
import
com.xkcoding.orm.jpa.entity.User
;
...
...
@@ -39,11 +40,12 @@ public class DepartmentDaoTest extends SpringBootDemoOrmJpaApplicationTests {
@Transactional
public
void
testSave
()
{
Collection
<
Department
>
departmentList
=
departmentDao
.
findDepartmentsByLevels
(
0
);
if
(
departmentList
.
size
()==
0
){
Department
testSave1
=
Department
.
builder
().
name
(
"testSave1"
).
orderno
(
0
).
levels
(
0
).
superior
(
null
).
build
();
Department
testSave1_1
=
Department
.
builder
().
name
(
"testSave1_1"
).
orderno
(
0
).
levels
(
1
).
superior
(
testSave1
).
build
();
Department
testSave1_2
=
Department
.
builder
().
name
(
"testSave1_2"
).
orderno
(
0
).
levels
(
1
).
superior
(
testSave1
).
build
();
Department
testSave1_1_1
=
Department
.
builder
().
name
(
"testSave1_1_1"
).
orderno
(
0
).
levels
(
2
).
superior
(
testSave1_1
).
build
();
if
(
departmentList
.
size
()
==
0
)
{
Department
testSave1
=
Department
.
builder
().
name
(
"testSave1"
).
orderNo
(
0
).
levels
(
0
).
superior
(
null
).
build
();
Department
testSave1_1
=
Department
.
builder
().
name
(
"testSave1_1"
).
orderNo
(
0
).
levels
(
1
).
superior
(
testSave1
).
build
();
Department
testSave1_2
=
Department
.
builder
().
name
(
"testSave1_2"
).
orderNo
(
0
).
levels
(
1
).
superior
(
testSave1
).
build
();
Department
testSave1_1_1
=
Department
.
builder
().
name
(
"testSave1_1_1"
).
orderNo
(
0
).
levels
(
2
).
superior
(
testSave1_1
).
build
();
departmentList
.
add
(
testSave1
);
departmentList
.
add
(
testSave1_1
);
departmentList
.
add
(
testSave1_2
);
...
...
@@ -51,7 +53,7 @@ public class DepartmentDaoTest extends SpringBootDemoOrmJpaApplicationTests {
departmentDao
.
saveAll
(
departmentList
);
Collection
<
Department
>
deptall
=
departmentDao
.
findAll
();
log
.
debug
(
"【部门】= {}"
,
JSONArray
.
toJSONString
((
List
)
deptall
));
log
.
debug
(
"【部门】= {}"
,
JSONArray
.
toJSONString
((
List
)
deptall
));
}
...
...
@@ -61,14 +63,14 @@ public class DepartmentDaoTest extends SpringBootDemoOrmJpaApplicationTests {
user
.
setDepartmentList
(
departmentList
);
userDao
.
save
(
user
);
});
User
users
=
userDao
.
findById
(
1L
).
get
();
log
.
debug
(
"用户部门={}"
,
JSON
Array
.
toJSONString
((
List
)
userDao
.
findById
(
1L
).
get
().
getDepartmentList
()));
log
.
debug
(
"用户部门={}"
,
JSON
Util
.
toJsonStr
(
userDao
.
findById
(
1L
).
get
().
getDepartmentList
()));
departmentDao
.
findById
(
2L
).
ifPresent
(
dept
->
{
Collection
<
User
>
userlist
=
dept
.
getUserList
();
//关联关系由user维护中间表,department userlist不会发生变化,可以增加查询方法来处理 重写getUserList方法
log
.
debug
(
"部门下用户={}"
,
JSON
Array
.
toJSONString
((
List
)
userlist
));
log
.
debug
(
"部门下用户={}"
,
JSON
Util
.
toJsonStr
(
userlist
));
});
...
...
@@ -79,8 +81,6 @@ public class DepartmentDaoTest extends SpringBootDemoOrmJpaApplicationTests {
});
log
.
debug
(
"用户部门={}"
,
userDao
.
findById
(
1L
).
get
().
getDepartmentList
());
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录