MyBatis-MP是一个基于MyBatis的ORM框架,它以轻量级封装、简单易用和强大的功能著称。以下是一些实用的使用技巧:

单表查询与VO映射

通过@Fetch注解和fetchFilter方法,可以轻松实现单表查询和关联对象的自动加载。例如,使用@Fetch注解可以关联SysUserSysRole,而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官网