2019独角兽企业重金招聘Python工程师标准>>>
使用到Sringboot、Mybatis Plus、Shiro、Mysql
1、创建一张部门表,表结构
CREATE TABLE `sys_dept` (
`dept_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '部门id',
`parent_id` bigint(20) DEFAULT '0' COMMENT '父部门id',
`dept_name` varchar(30) DEFAULT '' COMMENT '部门名称',
`order_num` int(4) DEFAULT '0' COMMENT '显示顺序',
`status` tinyint(1) DEFAULT '0' COMMENT '部门状态(0:正常 1:停用)',
`create_by` varchar(64) DEFAULT '' COMMENT '创建者',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_by` varchar(64) DEFAULT '' COMMENT '更新者',
`update_time` datetime DEFAULT NULL COMMENT '更新时间',
`remark` varchar(200) DEFAULT '' COMMENT '备注',
PRIMARY KEY (`dept_id`)
) ENGINE=InnoDB AUTO_INCREMENT=27 DEFAULT CHARSET=utf8
2、配置文件中添加下面的代码
@Configuration public class MyBatisPlusConfig { /** * 自动填充功能 * @return */ @Bean public GlobalConfig globalConfig() { GlobalConfig globalConfig = new GlobalConfig(); globalConfig.setMetaObjectHandler(new MetaHandler()); return globalConfig; } }
3、MetaHandler类的代码
/** * 处理新增和更新的基础数据填充,配合BaseEntity和MyBatisPlusConfig使用 */ @Component public class MetaHandler implements MetaObjectHandler { private static final Logger logger = LoggerFactory.getLogger(MetaHandler.class); /** * 新增数据执行 * @param metaObject */ @Override public void insertFill(MetaObject metaObject) { SysUserEntity userEntity = ShiroUtil.getUser(); this.setFieldValByName("createTime", new Date(), metaObject); this.setFieldValByName("createBy", userEntity.getLoginName(), metaObject); this.setFieldValByName("updateTime", new Date(), metaObject); this.setFieldValByName("updateBy", userEntity.getLoginName(), metaObject); } /** * 更新数据执行 * @param metaObject */ @Override public void updateFill(MetaObject metaObject) { SysUserEntity userEntity = ShiroUtil.getUser(); this.setFieldValByName("updateTime", new Date(), metaObject); this.setFieldValByName("updateBy", userEntity.getLoginName(), metaObject); } }
4、执行正常的增删改操作,例如新增
@RequiresPermissions("sys:dept:add") @PostMapping("/add") @ResponseBody public R add(@RequestBody SysDeptEntity deptEntity) { logger.info("添加信息={}", deptEntity); sysDeptService.save(deptEntity); // 不再需要设置setCreateBy、setCreateTime、setUpdateBy、setUpdateTime操作,代码更优美 return R.ok(); }
5、SysDeptEntity类代码
@Data @TableName("sys_dept") public class SysDeptEntity extends BaseEntity { private static final long serialVersionUID = 1L; /** * 部门ID **/ @TableId private Long deptId; /** * 部门父节点ID **/ private Long parentId; /** * 部门名称 **/ private String deptName; /** * 显示顺序 **/ private Integer orderNum; /** * 用户状态(0:正常 1:禁用) **/ private Integer status; @TableField(exist = false) private Listchildren; }
6、BaseEntity类代码
/** * 基础Bean */ @Data public class BaseEntity implements Serializable { @TableField(value = "create_by", fill = FieldFill.INSERT) // 新增执行 private String createBy; @TableField(value = "create_time", fill = FieldFill.INSERT) private Date createTime; @TableField(value = "update_by", fill = FieldFill.INSERT_UPDATE) // 新增和更新执行 private String updateBy; @TableField(value = "update_Time", fill = FieldFill.INSERT_UPDATE) private Date updateTime; @TableField(value = "remark") private String remark; }