MyBatis-MP是一个基于MyBatis的ORM框架,它以轻量级封装、简单易用和强大的功能著称。以下是一些实用的使用技巧:
单表查询与VO映射
通过@Fetch
注解和fetchFilter
方法,可以轻松实现单表查询和关联对象的自动加载。例如,使用@Fetch
注解可以关联SysUser
和SysRole
,而fetchFilter
方法则提供了过滤条件,使得查询更加灵活。
@Data
@ResultEntity(SysUser.class)
public class SysUserVo {
// 省略其他字段
@Fetch(source = SysUser.class, property = "roleId", target = SysRole.class, targetProperty = "id")
private List<SysRoleVo> sysRoles;
}
List<SysUserVO> list = QueryChain.of(sysUserMapper)
.fetchFilter(SysUserVO::getRoles, where -> where.eq(SysRole::getStatus, 1))
.list();
单表查询
单表查询同样简单,通过链式调用即可完成条件查询。
SysUser sysUser = QueryChain.of(sysUserMapper)
.eq(SysUser::getId, 1)
.eq(SysUser::getUserName, "admin")
.get();
VO映射
当数据库字段和VO字段名称不一致时,可以使用@ResultEntityField
注解进行映射。
@Data
@ResultEntity(SysUser.class)
public class SysUserVo {
// 省略其他字段
@ResultEntityField(property = "password")
private String pwd;
}
SysUserVO sysUserVO = QueryChain.of(sysUserMapper)
.eq(SysUser::getId, 1)
.eq(SysUser::getUserName, "admin")
.list();
Join查询
对于需要进行多表关联查询的情况,MyBatis-MP提供了@NestedResultEntity
注解,支持1对1和1对多的映射。
@Data
@ResultEntity(SysUser.class)
public class SysUserVo {
// 省略其他字段
@NestedResultEntity(target = SysRole.class)
private SysRole sysRole;
@NestedResultEntity(target = SysRole.class)
private List<SysRole> sysRoles;
}
List<SysUserRoleVO> list = QueryChain.of(sysUserMapper)
.from(SysUser.class)
.join(SysUser.class, SysRole.class)
.list();
MyBatis-MP还提供了多种高级特性,如多表join查询、自动分页、SQL模板等,使得ORM开发更加灵活和高效。更多详情和使用示例,欢迎访问MyBatis-MP官网。