官网 :https://mybatis-mp.cn
1. 单表 +@Fetch 注解 + fetchFilter 方法
@Data @ResultEntity(SysUser.class) public class SysUserVo { private Integer id; private String userName; private String password; private Integer roleId; private LocalDateTime create_time; @Fetch(source = SysUser.class, property = "roleId", target = SysRole.class, targetProperty = "id") private List<SysRoleVo> sysRoles; }
List<SysUserVO> list = QueryChain.of(sysUserMapper) .from(SysUser.class) .fetchFilter(SysUserVO::getRoles,where->where.eq(SysRole::getStatus,1)) .returnType(SysUserVO.class) .list();
fetchFilter 方法是对 @Fetch 注解的增强,没有特殊要求一般,可忽略
2. 单表查询
SysUser sysUser = QueryChain.of(sysUserMapper) .eq(SysUser::getId, 1) .eq(SysUser::getUserName,'admin') .get();
3.VO 映射
@Data @ResultEntity(SysUser.class) public class SysUserVo { private Integer id; private String userName; //字段名字不一样时 @ResultEntityField(property = "password") private String pwd; }
SysUserVO sysUserVO = QueryChain.of(sysUserMapper) .eq(SysUser::getId, 1) .eq(SysUser::getUserName,'admin') .returnType(SysUserVO.class) .list();
4. join 查询
@Data @ResultEntity(SysUser.class) public class SysUserVo { private Integer id; private String userName; //字段名字不一样时 @ResultEntityField(property = "password") private String pwd; //映射一个对象 1对1 @NestedResultEntity(target = SysRole.class) prviate SysRole sysRole; //映射多个对象 1对多 @NestedResultEntity(target = SysRole.class) prviate List<SysRole> sysRoles; }
List<SysUserRoleVO> list = QueryChain.of(sysUserMapper) .from(SysUser.class) .join(SysUser.class, SysRole.class) .returnType(SysUserRoleVO.class) .list();
它拥有与众不同的 几大亮点:
1:mybatis-mp - 亮点一:可自定义动态默认值
2:mybatis-mp - 亮点二:支持不同数据库ID自增配置
3:mybatis-mp - 亮点三:逻辑删除,可自动填充删除时间
4:mybatis-mp - 亮点四:可自定义sql(sql模板)
5:mybatis-mp - 亮点五:mapWithKey(把查询转成一个 map)
6:mybatis-mp - 亮点 六:部分字段 新增 和 修改
7:mybatis-mp - 亮点七:枚举的良好支持
8:mybatis-mp - 亮点八:mybatis-xml returnType 的 ORM 映射
9:mybatis-mp - 亮点九:优雅的 XML和 @Select查询 自动分页
10:mybatis-mp - 亮点十:支持多层嵌套VO,自动映射以及自动select 所需列
更多请前往官方文档:http://mybatis-mp.cn