前面已经介绍了Mybatis-plus基本用法,今天为大家分享一些Mybatis-plus高级应用
- 逻辑删除
- 自动注入
- 枚举类型处理
- Sql注入器
- 多租户
表结构
CREATE TABLE `sys_role` ( `id` varchar(64) NOT NULL COMMENT '主键', `code` varchar(64) NOT NULL DEFAULT '' COMMENT '角色编码', `name` varchar(64) NOT NULL DEFAULT '' COMMENT '角色名', `type` char(2) NOT NULL COMMENT '角色类型,1:管理员,2:普通', `tenant_code` varchar(64) NOT NULL DEFAULT '' COMMENT '租户编码', `create_user` varchar(64) NOT NULL DEFAULT '' COMMENT '创建用户', `create_time` datetime NOT NULL COMMENT '创建时间', `update_user` varchar(64) NOT NULL DEFAULT '' COMMENT '更新用户', `update_time` datetime NOT NULL COMMENT '更新时间', `is_del` char(1) NOT NULL DEFAULT '0' COMMENT '是否删除,0:未删除,1:删除', PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='角色';
![fefe5b768fd09b43e512206d718e66ab.png](https://i-blog.csdnimg.cn/blog_migrate/8ef4a4048ce1ca459d92854fbee49ffd.jpeg)
逻辑删除
全局配置
在配置文件中增加如下配置
mybatis-plus: global-config: db-config: logic-delete-field: isDel#全局逻辑删除字段值 3.3.0开始支持,详情看下面。 logic-delete-value: 1 # 逻辑已删除值(默认为 1) logic-not-delete-value: 0 # 逻辑未删除值(默认为 0)
局部配置
在实体类删除字段上增加@TableLogic注解
/** 是否删除,0:未删除,1:删除 */@TableLogicprivate String isDel;
全局配置和局部配置实现的结果是一样的,下面针对局部配置做一下测试
@Autowiredprivate RoleMapper roleMapper;@Testpublic void logicDel() { roleMapper.deleteById("1");}
![96b91e997a43c9b6579abc33c139f4a9.png](https://i-blog.csdnimg.cn/blog_migrate/5a5936b9b3fbcb55a49dcf9b6254b234.jpeg)
从结果可以看出角色id为1数据的is_del被设置为1
使用Mybatis-plus自带方法删除、更新和查找都会where条件后面加上删除字段
以查询为例看一下效果
@Test void loginDel2() { roleMapper.selectList(null);}
![b13cc2c64f15f205cdfcc58257b5b019.png](https://i-blog.csdnimg.cn/blog_migrate/0139dd111ed43c909565e6013e84da53.jpeg)
从打印的sql中可以看出,在where后面添加了is_del='0'限定,所以要查询所有数据可以采用自定义sql实现