mybatis-mp 之简单省力方法,超实用!!!
省力写法-必看
这些都是作者推荐的省心、省力、省事写法
指定数据库类型
虽然 mybatis-mp 支持自动识别,但是具有一定损耗,能加尽量加上
mybatis: configuration: databaseId: MYSQL
select 、from、returnType 都可以省略
-
假如 只select 当前Mapper的实体类:可不写 select
-
假如 from的是当前Mapper的实体类:可不写 from
-
假如 返回的是当前Mapper的实体类:可不写 returnType
SysUser sysUser = QueryChain.of(sysUserMapper) .eq(SysUser::getId,1) .get();
一键忽略null,忽略空字符串,自动对字符串进行去空格
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();
join 可不用再写on条件
配合 @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列
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)); } }
结果映射 - VO自动映射 - 如何得到不同的类型的结果?
使用 returnType(XX.class)方法,设置你想要的结果的类型
XX类型 可以是 简单的基本类型包装类,实体类,VO类
实体类:依赖实体类注解 前往 @Table 查看
VO: 依赖VO注解 前往 @ResultEntity 查看
VO映射 - 构建复杂的结构类
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映射注解 查看
链路操作 - connect方法 - 拿到自己的句柄
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();

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
10 张图,说透 Kubernetes 架构原理,这会算是真懂了
这本关于 Kubernetes 架构的综合指南旨在通过插图详细解释每个 Kubernetes 组件。 因此,如果您希望: 了解 Kubernetes 的架构 掌握 Kubernetes 的基本概念 了解 Kubernetes 架构组件 探索连接这些组件的工作流 然后,您会发现此 Kubernetes 架构指南非常有价值。 注意:为了更好地理解 Kubernetes 架构,有一些先决条件请查看 kubernetes 学习指南中的先决条件以了解更多信息。 什么是 Kubernetes 架构? 以下 Kubernetes 架构图显示了 Kubernetes 集群的所有组件以及外部系统如何连接到 Kubernetes 集群。 关于 Kubernetes,您应该了解的第一件事是,它是一个分布式系统。这意味着,它有多个组件分布在网络上的不同服务器上。这些服务器可以是虚拟机或裸机服务器。我们称之为 Kubernetes 集群。 Kubernetes 集群由控制平面节点和工作节点组成。 控制平面 控制平面负责容器编排和维护集群的所需状态。它具有以下组件。 kube-apiserver etcd kub...
- 下一篇
Bytebase 2.22.0 - 支持在 PostgreSQL 任务执行期间监控阻塞会话
🚀 新功能 支持在 PostgreSQL 任务执行期间监控阻塞会话。 支持 Oracle 自动补全。 支持 Hive 的 Kerberos 身份验证。 可同步表 / 列上的扩展属性 MS_Description 作为 SQL Server 的注释。 🎄 改进 改进在线迁移功能,以便在启用该功能时识别不支持的语句并通知用户。 支持在问题中取消任务检查。 在审计日志中显示用户登录、管理模式执行和设置更改。 在 SQL 编辑器中正确显示 SQL Server 位键入数据。 改进对 Oracle dblink 的支持。 📕 安装及升级 全新安装: https://www.bytebase.com/docs/get-started/self-host 升级: https://www.bytebase.com/docs/get-started/upgrade 警告: Bytebase 不支持降级。请确保升级前备份原数据。 💡 更多资讯,请关注 Bytebase 公号:Bytebase
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2全家桶,快速入门学习开发网站教程
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- 2048小游戏-低调大师作品
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS关闭SELinux安全模块