Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
M
monolith-application-mybatis-plus
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
马天浩
monolith-application-mybatis-plus
Commits
66de6d3d
Commit
66de6d3d
authored
Dec 02, 2021
by
matianhao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
整合mp
依赖调整 mybatis plus通用字段自动填充
parent
a3cd3433
Changes
17
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
17 changed files
with
728 additions
and
65 deletions
+728
-65
EasyCodeConfig.json
EasyCodeConfig.json
+262
-0
README.md
README.md
+42
-1
pom.xml
pom.xml
+22
-0
application.yml
watone-admin/src/main/resources/application.yml
+16
-4
pom.xml
watone-business/pom.xml
+0
-21
ZjApprovalAttachController.java
...siness/module1/controller/ZjApprovalAttachController.java
+49
-20
ZjApprovalAttachDTO.java
...tone/business/module1/domain/dto/ZjApprovalAttachDTO.java
+32
-0
ZjApprovalAttach.java
...tone/business/module1/domain/entity/ZjApprovalAttach.java
+12
-13
ZjApprovalAttachMapper.java
...atone/business/module1/mapper/ZjApprovalAttachMapper.java
+1
-1
ZjApprovalAttachService.java
...one/business/module1/service/ZjApprovalAttachService.java
+44
-1
ZjApprovalAttachServiceImpl.java
...ess/module1/service/impl/ZjApprovalAttachServiceImpl.java
+72
-2
ZjApprovalAttachMapper.xml
...ness/src/main/resources/mapper/ZjApprovalAttachMapper.xml
+0
-2
pom.xml
watone-common/pom.xml
+12
-0
Constants.java
...n/src/main/java/com/watone/common/constant/Constants.java
+10
-0
BaseColumn.java
...com/watone/common/core/mybatisplus/domain/BaseColumn.java
+41
-0
BaseTimeColumn.java
...watone/common/core/mybatisplus/domain/BaseTimeColumn.java
+43
-0
MybatisPlusColumnsHandler.java
...m/watone/framework/handler/MybatisPlusColumnsHandler.java
+70
-0
No files found.
EasyCodeConfig.json
0 → 100644
View file @
66de6d3d
This diff is collapsed.
Click to expand it.
README.md
View file @
66de6d3d
...
...
@@ -31,4 +31,45 @@
## 用户密码
-
admin/admin123
\ No newline at end of file
-
admin/admin123
## 整合mybatis-plus
整合思路:使用代码生成器和 mp 实现单表增、删、改和通用查询,配合数据库字段约定达到简化开发的目的;复杂 sql 请直接写在 mapper.xml。
-
新增两种粒度的通用字段,通过 mp 实现自动填充功能;
> BaseTimeColumn 类,包含 createTime, updateTime;
>
> BaseColumn 类,包含 createBy, updateBy, createTime, updateTime;
>
> 填充逻辑类 com.watone.framework.handler.MybatisPlusColumnsHandler
-
使用 mp 的逻辑删除功能;
> application.yml 中配置,逻辑删除字段为约定字段 delFlag
-
根据 DTO 对象封装 Wrapper 实现通用单表查询;
> com.watone.business.module1.service.impl.ZjApprovalAttachServiceImpl#createWrapper
>
> 代码中只是个空的实例,根据实际查询类型封装条件,注意使用 mp 的条件构造器时选择带 `boolean condition` 的方法。
-
使用 IDEA 插件 Easy Code 生成代码,配置文件 EasyCodeConfig.json;
-
推荐分包规范,业务代码写在 watone-business 下 com.watone.business,根据业务边界分包,职责划分更清晰
> 参考 model1 示例。尽量避免所有业务的 controller 都在一个包下,entity 都在一个包下以此类推
约定数据库通用字段:
```
sql
`create_by`
varchar
(
64
)
COLLATE
utf8mb4_bin
DEFAULT
''
COMMENT
'创建者'
,
`create_time`
datetime
DEFAULT
NULL
COMMENT
'创建时间'
,
`update_by`
varchar
(
64
)
COLLATE
utf8mb4_bin
DEFAULT
''
COMMENT
'更新者'
,
`update_time`
datetime
DEFAULT
NULL
COMMENT
'更新时间'
,
`del_flag`
char
(
1
)
DEFAULT
'0'
COMMENT
'删除标志(0代表存在 2代表删除)'
,
```
pom.xml
View file @
66de6d3d
...
...
@@ -45,6 +45,7 @@
<velocity.version>
1.7
</velocity.version>
<jwt.version>
0.9.1
</jwt.version>
<lombok.version>
1.18.20
</lombok.version>
<hutool.version>
5.7.11
</hutool.version>
</properties>
<!-- 依赖声明 -->
...
...
@@ -79,6 +80,21 @@
<groupId>
com.baomidou
</groupId>
<artifactId>
mybatis-plus-boot-starter
</artifactId>
<version>
${mybatis-plus-boot.version}
</version>
<!-- 排除冲突依赖 -->
<exclusions>
<exclusion>
<groupId>
org.mybatis
</groupId>
<artifactId>
mybatis
</artifactId>
</exclusion>
<exclusion>
<groupId>
org.mybatis
</groupId>
<artifactId>
mybatis-spring
</artifactId>
</exclusion>
<exclusion>
<groupId>
com.github.jsqlparser
</groupId>
<artifactId>
jsqlparser
</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- pagehelper 分页插件 -->
...
...
@@ -213,6 +229,12 @@
<scope>
provided
</scope>
</dependency>
<dependency>
<groupId>
cn.hutool
</groupId>
<artifactId>
hutool-all
</artifactId>
<version>
${hutool.version}
</version>
</dependency>
<!-- 定时任务-->
<dependency>
<groupId>
com.watone
</groupId>
...
...
watone-admin/src/main/resources/application.yml
View file @
66de6d3d
# 项目相关配置
watone
:
# 名称
name
:
zj-lab
name
:
monolith-application-mybatis-plus
# 版本
version
:
3.6
.0
version
:
1.0
.0
# 版权年份
copyrightYear
:
2021
# 实例演示开关
...
...
@@ -59,13 +59,13 @@ spring:
# redis 配置
redis
:
# 地址
host
:
1
15.29.4.90
host
:
1
27.0.0.1
# 端口,默认为6379
port
:
6379
# 数据库索引
database
:
10
# 密码
password
:
WatoneDesktop
password
:
# 连接超时时间
timeout
:
10s
lettuce
:
...
...
@@ -90,11 +90,23 @@ token:
# Mybatis plus配置
mybatis-plus
:
# 别名包扫描路径
type-aliases-package
:
com.watone.**.domain
# mybatis配置文件
mapper-locations
:
classpath*:mapper/**/*Mapper.xml
configuration
:
# 驼峰命名映射
map-underscore-to-camel-case
:
true
# 映射null值
call-setters-on-nulls
:
true
global-config
:
db-config
:
# 主键策略
id-type
:
auto
# 逻辑删除 0代表存在 2代表删除
logic-delete-field
:
delFlag
logic-delete-value
:
2
logic-not-delete-value
:
0
# PageHelper分页插件
pagehelper
:
...
...
watone-business/pom.xml
View file @
66de6d3d
...
...
@@ -21,21 +21,6 @@
<dependency>
<groupId>
com.watone
</groupId>
<artifactId>
watone-system
</artifactId>
<!-- 排除冲突依赖 -->
<exclusions>
<exclusion>
<groupId>
org.mybatis
</groupId>
<artifactId>
mybatis
</artifactId>
</exclusion>
<exclusion>
<groupId>
org.mybatis
</groupId>
<artifactId>
mybatis-spring
</artifactId>
</exclusion>
<exclusion>
<groupId>
com.github.jsqlparser
</groupId>
<artifactId>
jsqlparser
</artifactId>
</exclusion>
</exclusions>
</dependency>
<!-- swagger start-->
...
...
@@ -66,12 +51,6 @@
<artifactId>
lombok
</artifactId>
</dependency>
<!-- Mybatis-Plus启动器 -->
<dependency>
<groupId>
com.baomidou
</groupId>
<artifactId>
mybatis-plus-boot-starter
</artifactId>
</dependency>
</dependencies>
</project>
\ No newline at end of file
watone-business/src/main/java/com/watone/business/module1/controller/ZjApprovalAttachController.java
View file @
66de6d3d
package
com
.
watone
.
business
.
module1
.
controller
;
import
com.watone.business.module1.domain.
entity.ZjApprovalAttach
;
import
com.watone.business.module1.domain.
dto.ZjApprovalAttachDTO
;
import
com.watone.business.module1.service.ZjApprovalAttachService
;
import
com.watone.common.core.controller.BaseController
;
import
com.watone.common.core.domain.AjaxResult
;
import
com.watone.common.core.page.TableDataInfo
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiResponse
;
import
io.swagger.annotations.ApiResponses
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.web.bind.annotation.*
;
import
javax.annotation.Resource
;
...
...
@@ -19,27 +16,59 @@ import javax.annotation.Resource;
* 审批附件表(ZjApprovalAttach)表控制层
*
* @author MaTianHao
* @date 2021/12/0
1
* @date 2021/12/0
9
*/
@Api
(
tags
=
"审批附件表"
)
@RestController
@RequestMapping
(
"zjApprovalAttach"
)
@Api
(
tags
=
"审批附件"
)
public
class
ZjApprovalAttachController
extends
BaseController
{
/**
* 服务对象
*/
@Resource
private
ZjApprovalAttachService
zjApprovalAttachService
;
@ApiResponses
({
@ApiResponse
(
code
=
200
,
message
=
"success"
,
response
=
ZjApprovalAttach
.
class
)
})
@ApiOperation
(
"附件列表"
)
@GetMapping
public
AjaxResult
findAll
()
{
startPage
();
return
AjaxResult
.
success
(
zjApprovalAttachService
.
list
());
/**
* 新增数据
*/
@ApiOperation
(
"新增数据"
)
@PostMapping
(
"/zjApprovalAttach"
)
public
AjaxResult
insert
(
@RequestBody
ZjApprovalAttachDTO
param
)
{
return
toAjax
(
zjApprovalAttachService
.
insert
(
param
));
}
/**
* 修改数据
*/
@ApiOperation
(
"修改数据"
)
@PutMapping
(
"/zjApprovalAttach"
)
public
AjaxResult
update
(
@RequestBody
ZjApprovalAttachDTO
param
)
{
return
toAjax
(
zjApprovalAttachService
.
update
(
param
));
}
/**
* 删除数据
*/
@ApiOperation
(
"删除数据"
)
@DeleteMapping
(
"/zjApprovalAttach/{id}"
)
public
AjaxResult
delete
(
@PathVariable
Long
id
)
{
return
toAjax
(
zjApprovalAttachService
.
delete
(
id
));
}
/**
* 通过主键查询单条数据
*/
@ApiOperation
(
"通过主键查询单条数据"
)
@GetMapping
(
"/zjApprovalAttach/{id}"
)
public
AjaxResult
detail
(
@PathVariable
Long
id
)
{
return
AjaxResult
.
success
(
zjApprovalAttachService
.
detail
(
id
));
}
/**
* 分页查询列表
*/
@ApiOperation
(
"分页查询列表"
)
@GetMapping
(
"/zjApprovalAttach"
)
public
TableDataInfo
findPage
(
ZjApprovalAttachDTO
param
)
{
startPage
();
return
getDataTable
(
zjApprovalAttachService
.
findPage
(
param
));
}
}
watone-business/src/main/java/com/watone/business/module1/domain/dto/ZjApprovalAttachDTO.java
0 → 100644
View file @
66de6d3d
package
com
.
watone
.
business
.
module1
.
domain
.
dto
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
/**
* 审批附件表(ZjApprovalAttach)表入参类
*
* @author MaTianHao
* @date 2021/12/09
*/
@Data
@ApiModel
(
"审批附件表入参"
)
public
class
ZjApprovalAttachDTO
{
@ApiModelProperty
(
"主键"
)
private
Long
id
;
@ApiModelProperty
(
"审批记录id"
)
private
Long
logId
;
@ApiModelProperty
(
"预警信息id"
)
private
Long
warningInfoId
;
@ApiModelProperty
(
"文件名"
)
private
String
attachName
;
@ApiModelProperty
(
"文件地址"
)
private
String
attachPath
;
}
watone-business/src/main/java/com/watone/business/module1/domain/entity/ZjApprovalAttach.java
View file @
66de6d3d
package
com
.
watone
.
business
.
module1
.
domain
.
entity
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
com.baomidou.mybatisplus.extension.activerecord.Model
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.*
;
import
java.time.LocalDateTime
;
import
lombok.AllArgsConstructor
;
import
lombok.Builder
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
/**
* 审批附件表(ZjApprovalAttach)表实体类
*
* @author MaTianHao
* @date 2021/12/0
1
* @date 2021/12/0
9
*/
@EqualsAndHashCode
(
callSuper
=
true
)
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@TableName
(
"zj_approval_attach"
)
@ApiModel
(
"审批附件表"
)
public
class
ZjApprovalAttach
extends
Model
<
ZjApprovalAttach
>
{
public
class
ZjApprovalAttach
{
@ApiModelProperty
(
"主键"
)
private
Long
id
;
@ApiModelProperty
(
"审批记录id"
)
private
Long
logId
;
@ApiModelProperty
(
"预警信息id"
)
private
Long
warningInfoId
;
@ApiModelProperty
(
"文件名"
)
private
String
attachName
;
@ApiModelProperty
(
"文件地址"
)
private
String
attachPath
;
@ApiModelProperty
(
"创建时间"
)
private
LocalDateTime
createTime
;
@ApiModelProperty
(
"更新时间"
)
private
LocalDateTime
updateTime
;
}
watone-business/src/main/java/com/watone/business/module1/mapper/ZjApprovalAttachMapper.java
View file @
66de6d3d
...
...
@@ -7,7 +7,7 @@ import com.watone.business.module1.domain.entity.ZjApprovalAttach;
* 审批附件表(ZjApprovalAttach)表数据库访问层
*
* @author MaTianHao
* @date 2021/12/0
1
* @date 2021/12/0
9
*/
public
interface
ZjApprovalAttachMapper
extends
BaseMapper
<
ZjApprovalAttach
>
{
...
...
watone-business/src/main/java/com/watone/business/module1/service/ZjApprovalAttachService.java
View file @
66de6d3d
package
com
.
watone
.
business
.
module1
.
service
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.watone.business.module1.domain.dto.ZjApprovalAttachDTO
;
import
com.watone.business.module1.domain.entity.ZjApprovalAttach
;
import
java.util.List
;
/**
* 审批附件表(ZjApprovalAttach)表服务接口
*
* @author MaTianHao
* @date 2021/12/0
1
* @date 2021/12/0
9
*/
public
interface
ZjApprovalAttachService
extends
IService
<
ZjApprovalAttach
>
{
/**
* 新增数据
*
* @param param 入参对象
* @return 是否成功
*/
boolean
insert
(
ZjApprovalAttachDTO
param
);
/**
* 修改数据
*
* @param param 入参对象
* @return 是否成功
*/
boolean
update
(
ZjApprovalAttachDTO
param
);
/**
* 删除数据
*
* @param id 主键
* @return 是否成功
*/
boolean
delete
(
Long
id
);
/**
* 通过主键查询单条数据
*
* @param id 主键
* @return 实例对象
*/
ZjApprovalAttach
detail
(
Long
id
);
/**
* 分页查询列表
*
* @param param 入参对象
* @return 对象集合
*/
List
<
ZjApprovalAttach
>
findPage
(
ZjApprovalAttachDTO
param
);
}
watone-business/src/main/java/com/watone/business/module1/service/impl/ZjApprovalAttachServiceImpl.java
View file @
66de6d3d
package
com
.
watone
.
business
.
module1
.
service
.
impl
;
import
cn.hutool.core.bean.BeanUtil
;
import
com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.watone.business.module1.
mapper.ZjApprovalAttachMapper
;
import
com.watone.business.module1.
domain.dto.ZjApprovalAttachDTO
;
import
com.watone.business.module1.domain.entity.ZjApprovalAttach
;
import
com.watone.business.module1.mapper.ZjApprovalAttachMapper
;
import
com.watone.business.module1.service.ZjApprovalAttachService
;
import
com.watone.common.exception.ServiceException
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.Resource
;
import
java.util.List
;
import
java.util.Objects
;
/**
* 审批附件表(ZjApprovalAttach)表服务实现类
*
* @author MaTianHao
* @date 2021/12/0
1
* @date 2021/12/0
9
*/
@Service
public
class
ZjApprovalAttachServiceImpl
extends
ServiceImpl
<
ZjApprovalAttachMapper
,
ZjApprovalAttach
>
implements
ZjApprovalAttachService
{
@Resource
private
ZjApprovalAttachMapper
zjApprovalAttachMapper
;
@Override
public
boolean
insert
(
ZjApprovalAttachDTO
param
)
{
ZjApprovalAttach
entity
=
new
ZjApprovalAttach
();
BeanUtil
.
copyProperties
(
param
,
entity
);
return
this
.
save
(
entity
);
}
@Override
public
boolean
update
(
ZjApprovalAttachDTO
param
)
{
ZjApprovalAttach
entity
=
new
ZjApprovalAttach
();
BeanUtil
.
copyProperties
(
param
,
entity
);
return
this
.
updateById
(
entity
);
}
@Override
public
boolean
delete
(
Long
id
)
{
// 存在delFlag字段则为逻辑删除,否则为物理删除
return
this
.
removeById
(
id
);
}
@Override
public
ZjApprovalAttach
detail
(
Long
id
)
{
ZjApprovalAttach
entity
=
this
.
getById
(
id
);
if
(
Objects
.
isNull
(
entity
))
{
throw
new
ServiceException
(
"详情未找到"
);
}
return
entity
;
}
@Override
public
List
<
ZjApprovalAttach
>
findPage
(
ZjApprovalAttachDTO
param
)
{
LambdaQueryWrapper
<
ZjApprovalAttach
>
wrapper
=
createWrapper
(
param
);
return
this
.
list
(
wrapper
);
}
/**
* 构建Wrapper
*
* @param param 入参对象
* @return Lambda 语法使用 Wrapper
*/
private
LambdaQueryWrapper
<
ZjApprovalAttach
>
createWrapper
(
ZjApprovalAttachDTO
param
)
{
LambdaQueryWrapper
<
ZjApprovalAttach
>
queryWrapper
=
Wrappers
.
lambdaQuery
();
// 排序
// queryWrapper.orderByDesc(BaseTimeColumn::getCreateTime);
if
(
Objects
.
isNull
(
param
))
{
return
queryWrapper
;
}
// 拼接条件
// queryWrapper.eq(boolean, R, Object)
return
queryWrapper
;
}
}
watone-business/src/main/resources/mapper/ZjApprovalAttachMapper.xml
View file @
66de6d3d
...
...
@@ -8,8 +8,6 @@
<result
property=
"warningInfoId"
column=
"warning_info_id"
jdbcType=
"INTEGER"
/>
<result
property=
"attachName"
column=
"attach_name"
jdbcType=
"VARCHAR"
/>
<result
property=
"attachPath"
column=
"attach_path"
jdbcType=
"VARCHAR"
/>
<result
property=
"createTime"
column=
"create_time"
jdbcType=
"TIMESTAMP"
/>
<result
property=
"updateTime"
column=
"update_time"
jdbcType=
"TIMESTAMP"
/>
</resultMap>
</mapper>
...
...
watone-common/pom.xml
View file @
66de6d3d
...
...
@@ -119,6 +119,18 @@
<artifactId>
javax.servlet-api
</artifactId>
</dependency>
<!-- 工具集 -->
<dependency>
<groupId>
cn.hutool
</groupId>
<artifactId>
hutool-all
</artifactId>
</dependency>
<!-- Mybatis-Plus启动器 -->
<dependency>
<groupId>
com.baomidou
</groupId>
<artifactId>
mybatis-plus-boot-starter
</artifactId>
</dependency>
</dependencies>
</project>
\ No newline at end of file
watone-common/src/main/java/com/watone/common/constant/Constants.java
View file @
66de6d3d
...
...
@@ -147,4 +147,14 @@ public class Constants {
* LDAP 远程方法调用
*/
public
static
final
String
LOOKUP_LDAP
=
"ldap://"
;
/**
* 删除标志 0 存在
*/
public
static
final
String
DEL_FLAG_EXIST
=
"0"
;
/**
* 删除标志 2 删除
*/
public
static
final
String
DEL_FLAG_DELETE
=
"2"
;
}
watone-common/src/main/java/com/watone/common/core/mybatisplus/domain/BaseColumn.java
0 → 100644
View file @
66de6d3d
package
com
.
watone
.
common
.
core
.
mybatisplus
.
domain
;
import
com.baomidou.mybatisplus.annotation.FieldFill
;
import
com.baomidou.mybatisplus.annotation.TableField
;
/**
* mybatis plus自动填充字段(时间字段 + 人员字段)
*
* @author MaTianHao
* @date 2021/12/3
*/
public
class
BaseColumn
extends
BaseTimeColumn
{
/**
* 创建时间
*/
@TableField
(
fill
=
FieldFill
.
INSERT
)
private
String
createBy
;
/**
* 更新时间
*/
@TableField
(
fill
=
FieldFill
.
INSERT_UPDATE
,
select
=
false
)
private
String
updateBy
;
public
String
getCreateBy
()
{
return
createBy
;
}
public
void
setCreateBy
(
String
createBy
)
{
this
.
createBy
=
createBy
;
}
public
String
getUpdateBy
()
{
return
updateBy
;
}
public
void
setUpdateBy
(
String
updateBy
)
{
this
.
updateBy
=
updateBy
;
}
}
watone-common/src/main/java/com/watone/common/core/mybatisplus/domain/BaseTimeColumn.java
0 → 100644
View file @
66de6d3d
package
com
.
watone
.
common
.
core
.
mybatisplus
.
domain
;
import
com.baomidou.mybatisplus.annotation.FieldFill
;
import
com.baomidou.mybatisplus.annotation.TableField
;
import
java.time.LocalDateTime
;
/**
* mybatis plus自动填充字段(时间字段)
*
* @author MaTianHao
* @date 2021/12/3
*/
public
class
BaseTimeColumn
{
/**
* 创建时间
*/
@TableField
(
fill
=
FieldFill
.
INSERT
)
private
LocalDateTime
createTime
;
/**
* 更新时间
*/
@TableField
(
fill
=
FieldFill
.
INSERT_UPDATE
,
select
=
false
)
private
LocalDateTime
updateTime
;
public
LocalDateTime
getCreateTime
()
{
return
createTime
;
}
public
void
setCreateTime
(
LocalDateTime
createTime
)
{
this
.
createTime
=
createTime
;
}
public
LocalDateTime
getUpdateTime
()
{
return
updateTime
;
}
public
void
setUpdateTime
(
LocalDateTime
updateTime
)
{
this
.
updateTime
=
updateTime
;
}
}
watone-framework/src/main/java/com/watone/framework/handler/MybatisPlusColumnsHandler.java
0 → 100644
View file @
66de6d3d
package
com
.
watone
.
framework
.
handler
;
import
com.baomidou.mybatisplus.core.handlers.MetaObjectHandler
;
import
com.watone.common.constant.HttpStatus
;
import
com.watone.common.core.domain.model.LoginUser
;
import
com.watone.common.exception.ServiceException
;
import
org.apache.ibatis.reflection.MetaObject
;
import
org.springframework.security.core.Authentication
;
import
org.springframework.security.core.context.SecurityContextHolder
;
import
org.springframework.stereotype.Component
;
import
java.time.LocalDateTime
;
import
java.util.Objects
;
/**
* mybatis plus通用字段自动填充
*
* @author MaTianHao
* @date 2021/12/1
*/
@Component
public
class
MybatisPlusColumnsHandler
implements
MetaObjectHandler
{
/**
* 匿名用户
*/
private
static
final
String
ANONYMOUS_USER
=
"anonymousUser"
;
@Override
public
void
insertFill
(
MetaObject
metaObject
)
{
this
.
strictInsertFill
(
metaObject
,
"createTime"
,
LocalDateTime
.
class
,
LocalDateTime
.
now
());
this
.
strictInsertFill
(
metaObject
,
"updateTime"
,
LocalDateTime
.
class
,
LocalDateTime
.
now
());
this
.
strictInsertFill
(
metaObject
,
"createBy"
,
String
.
class
,
getLoginUserName
());
this
.
strictUpdateFill
(
metaObject
,
"updateBy"
,
String
.
class
,
getLoginUserName
());
}
@Override
public
void
updateFill
(
MetaObject
metaObject
)
{
this
.
strictUpdateFill
(
metaObject
,
"updateTime"
,
LocalDateTime
.
class
,
LocalDateTime
.
now
());
this
.
strictUpdateFill
(
metaObject
,
"updateBy"
,
String
.
class
,
getLoginUserName
());
}
/**
* 获取当前登录用户名
*/
private
String
getLoginUserName
()
{
String
loginUserName
=
""
;
Authentication
authentication
=
SecurityContextHolder
.
getContext
().
getAuthentication
();
if
(
Objects
.
isNull
(
authentication
))
{
throw
new
ServiceException
(
"获取用户信息异常"
,
HttpStatus
.
UNAUTHORIZED
);
}
// 未认证
if
(!
authentication
.
isAuthenticated
())
{
return
loginUserName
;
}
// 匿名用户
if
(
ANONYMOUS_USER
.
equals
(
authentication
.
getPrincipal
()))
{
return
ANONYMOUS_USER
;
}
try
{
LoginUser
loginUser
=
(
LoginUser
)
authentication
.
getPrincipal
();
loginUserName
=
loginUser
.
getUsername
();
}
catch
(
Exception
ignore
)
{
}
return
loginUserName
;
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment