官网 :mybatis-mp.cn
0. 单表 +@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 注解的增强,没有特殊要求一般,可忽略
1. 单表查询
SysUser sysUser = QueryChain.of(sysUserMapper)
.eq(SysUser::getId, 1)
.eq(SysUser::getUserName,'admin')
.get();
2.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();
3. 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 所需列
更多请前往官方文档:mybatis-mp.cn