这些都是作者推荐的省心、省力、省事写法
虽然 mybatis-mp 支持自动识别,但是具有一定损耗,能加尽量加上
mybatis: configuration: databaseId: MYSQL
假如 只select 当前Mapper的实体类:可不写 select
假如 from的是当前Mapper的实体类:可不写 from
假如 返回的是当前Mapper的实体类:可不写 returnType
SysUser sysUser = QueryChain.of(sysUserMapper) .eq(SysUser::getId,1) .get();
SysUser sysUser = QueryChain.of(sysUserMapper) // 忽略 null 条件参数 // 忽略 空字符串 条件参数 // 对字符串进行trim 去空格操作 .forSearch(true) .eq(SysUser::getUserName, null ) .eq(SysUser::getUserName, "" ) .eq(SysUser::getUserName," admin ") .get();
更多说明:前往 这里 查看
Integer id= XXX; String userName= YYY; SysUser sysUser = QueryChain.of(sysUserMapper) .select(SysUser.class,SysRole.class) .from(SysUser.class) .eq(SysUser::getId,id,Objects::nonNull) .like(SysUser::getUserName,userName,StringUtils::isNotBlank) .get();
配合 @ForeignKey 注解 可以不用再写on条件
@Data @Table public class SysUser { @TableId private Integer id; private String userName; private String password; @ForeignKey(SysRole.class) private Integer roleId; private LocalDateTime createTime; }
public class Demo { @Autowired private SysUserMapper sysUserMapper; public void page() { Pager pager= QueryChain.of(sysUserMapper) .select(SysUser.class) .from(SysUser.class) .join(SysUser.class,SysRole.class) .like(SysUser::getUserName,"abc") .returnType(SysUser.class) .paging(Pager.of(1)); } }
select(实体类.class) 或 select(VO.class) 都可以自定帮你select所需要的列
public class Demo { @Autowired private SysUserMapper sysUserMapper; public void page() { Pager pager= QueryChain.of(sysUserMapper) .select(SysUser.class) // or select(SysUserVO.class) .from(SysUser.class) .like(SysUser::getUserName,"abc") .returnType(SysUser.class) .paging(Pager.of(1)); } }
使用 returnType(XX.class)方法,设置你想要的结果的类型
XX类型 可以是 简单的基本类型包装类,实体类,VO类
实体类:依赖实体类注解 前往 @Table 查看
VO: 依赖VO注解 前往 @ResultEntity 查看
mybatis-mp 实现
结果自动映射(多复杂的都可以映射)
重复列名 根本无需担心
可以构建 多重内嵌结构 例如:
@ResultEntity(A对应实体类.class) class A { @NestedResultEntity(target=(B对应实体类.class) B b; } class B { @NestedResultEntity(target=(C对应实体类.class) List cs; } class C { Integer id; }
更多更复杂的映射,前往 VO映射注解 查看
List list=QueryChain.of(sysUserMapper) .select(SysUser::getId,SysUser::getUserName,SysUser::getRole_id) .from(SysUser.class) .connect(query->{ query.exists(SubQuery.create() .select1() .from(SysUser.class) .eq(SysUser::getId,query.$(SysUser::getId)) .isNotNull(SysUser::getPassword) .limit(1) ); }) .list();
评论删除后,数据将无法恢复
mybatis-mp 之简单省力方法,超实用!!!
省力写法-必看
这些都是作者推荐的省心、省力、省事写法
指定数据库类型
虽然 mybatis-mp 支持自动识别,但是具有一定损耗,能加尽量加上
select 、from、returnType 都可以省略
假如 只select 当前Mapper的实体类:可不写 select
假如 from的是当前Mapper的实体类:可不写 from
假如 返回的是当前Mapper的实体类:可不写 returnType
一键忽略null,忽略空字符串,自动对字符串进行去空格
更多说明:前往 这里 查看
手动优雅忽略条件
join 可不用再写on条件
配合 @ForeignKey 注解 可以不用再写on条件
简单自动select列
select(实体类.class) 或 select(VO.class) 都可以自定帮你select所需要的列
结果映射 - VO自动映射 - 如何得到不同的类型的结果?
使用 returnType(XX.class)方法,设置你想要的结果的类型
XX类型 可以是 简单的基本类型包装类,实体类,VO类
VO映射 - 构建复杂的结构类
mybatis-mp 实现
结果自动映射(多复杂的都可以映射)
重复列名 根本无需担心
可以构建 多重内嵌结构 例如:
更多更复杂的映射,前往 VO映射注解 查看
链路操作 - connect方法 - 拿到自己的句柄