# mybatis-plus升级版 **Repository Path**: alter-yh/mybatis-plus ## Basic Information - **Project Name**: mybatis-plus升级版 - **Description**: mybatis-plus升级版,基于mybatis-plus,对dao层进一步优化,免去了绝大多数mapper里的sql,并同时优化了分页查询速度 - **Primary Language**: Java - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 2 - **Created**: 2022-03-07 - **Last Updated**: 2022-07-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # mybatis-plus升级版 # 介绍 mybatis-plus升级版,基于mybatis-plus,对dao层进一步优化,免去了绝大多数mapper里的sql,并同时优化了分页查询速度 ### 目前dao层可能会面临的问题: 1、在表结构敲定之后,由于各接口需求不同,开发人员往往创建多个实体类来处理对应入参、反参,如:一个user表,在项目中可能有 UserPO、 UserVO、 UserBO、...DTO等等。这样一来,就加大了开发的复杂度,另外,假如表结构需要调整,比如加减字段、调整字段类型等等,开发可能需要调整多个实体类来配合改动,这里难免会出现bug点; 2、前端带条件查询列表时,在之前的开发方式中,需要在mapper或者条件构造器加入条件,流程繁琐,且容易出bug; 3、对于公共动态参数,在保证安全性的同时,我们肯定希望动态顺滑地传入dao层,而不是每个接口都有针对性的处理,费时又费力; 4、其他可以自动处理的功能,目前可能通过硬编码来处理; ### 解决思路: 1. 唯一实体类; 2. 通过注解来配置业务需求; 3. 通过公共方法来统一处理功能缺陷,并实现自动化过程; ### 实体类配置方案: 1. 条件配置: ```java /** * 昵称 * 通过加 @WrapperConf 注解来配置具体条件类型 * 参数是枚举类,功能一目了然 */ @WrapperConf(WrapperE.LIKE) private String nickName; ``` 2. 查询范围: ```java /** * 默认为 BaseType.class */ @SelectType private String userName; /** * 可指定为 DemoType.class */ @SelectType(DemoType.class) @WrapperConf(WrapperE.LIKE) private String nickName; /** * 可指定多个 */ @SelectType({DemoType.class, BaseType.class}) @ApiModelProperty(value = "手机号") private String mobilePhone; ``` ```java //实际使用时: getXyOne(new UserPO().setId(1L), BaseType.class, ...); ``` 3. 查询关联信息 ```java public class UserPO { ... /** * 角色对象 */ @Joins(table = "sys_role", value = RolePO.class) private List roles; /** * 单个角色对象 */ @Joins(table = "sys_role", value = RolePO.class) private RolePO singleRole; /** * 角色ID */ @Joins(table = "sys_user_role") private Long roleId; ... } ``` 另外:配置表关系:demo 注意,两个表的表名是无序的,随便写 ```yml data: dao: relateMap: sys_user.sys_user_role: - table: sys_user down: id - table: sys_user_role up: user_id sys_user.sys_role: - table: sys_user down: id - table: sys_user_role up: user_id down: role_id - table: sys_role up: id ``` # 联系方式 手机/微信: 18103217165 # 最后 - 本着好思想就应该分享的开源精神,将该demo分享给大家,希望大家能用到 - 欢迎提出更好的意见,帮助完善 本项目 - 其他功能等有时间继续优化 感谢支持