首页 > 数据库 >mybatis-mp 高级用法:ORM+SQL模板,真正意义实现ORM!!!

mybatis-mp 高级用法:ORM+SQL模板,真正意义实现ORM!!!

时间:2024-06-19 10:32:22浏览次数:13  
标签:getId ORM SysUser SQL mybatis class mp

官网 :mybatis-mp.cn

目前 ORM 以 JPA PLUS 为首的 ORM,遇到稍微复杂的、或者数据库特性 函数时通常需要 自己写 sql ,或代码中,或 xml 中,这就有点难受了

1:有没有好的办法?

mybatis-mp 的做法 就是 ORM+SQL 模板,SQL 模板不仅仅是 sql 字符串,它还帮你替换关系的信息:列

SysUserRoleAutoSelectVo vo = QueryChain.of(sysUserMapper)
                    .select(SysUserRoleAutoSelectVo.class)
                    .selectWithFun(SysRole::getId, c -> CmdTemplate.create(" RANK() OVER( ORDER BY {0}) ", c).as("RANK2"))
                    .selectWithFun(SysRole::getId, c -> CmdTemplate.create(" RANK() OVER( ORDER BY {0}) as RANK3", c))
                    .from(SysUser.class)
                    .join(SysUser.class, SysRole.class)
                    .and(cs -> ConditionTemplate.create("{0}+{1}={2}", cs[0], cs[1], 2).as("xx2"), SysUser::getId, SysUser::getId)
                    .returnType(SysUserRoleAutoSelectVo.class)
                    .orderBy(SysUser::getId)
                    .limit(1)
                    .get();

以上代码中,我们利用到了数据库窗口函数以及自定义的一个 where 条件(只是示例,不考虑具体逻辑)

mybatis-mp 是真的做到了真正的 ORM,并给开发自由度;可实现很多很多复杂的场景;解决了 ORM 框架的痛点,再难的 sql 在这里都不是太大的问题;

你还能找到其他的 ORM 框架有这灵活度的功能吗?评论区见

标签:getId,ORM,SysUser,SQL,mybatis,class,mp
From: https://blog.csdn.net/2301_81633770/article/details/139794535

相关文章

  • MySQL存储引擎之MyISAM与InnoDB详解
    文章目录MySQL存储引擎之MyISAM与InnoDB详解MyISAM存储引擎MyISAM的特点InnoDB存储引擎InnoDB的特点InnoDB插入数据示例面试题总结解答为什么InnoDB一定要有一个主键?为什么主键要用整型?为什么主键建议使用自增?总结MySQL存储引擎之MyISAM与InnoDB详解在MySQL中,......
  • MySQL的字符集与排序规则
    在MySQL数据库中,字符集(CharacterSet)和排序规则(Collation)是两个至关重要的概念,它们共同决定了数据库中字符数据的存储、比较和排序方式。对于涉及多语言、国际化或特殊字符处理的应用来说,正确选择和使用字符集与排序规则尤为关键。一、字符集(CharacterSet)字符集定义了数据库......
  • 课题分享:学校招生信息管理系统,基于java+SSM+mysql
     一、前言介绍    在当今这个信息技术高度发展的时代,信息管理的革新已经成为了一个全球性的议题,它的影响深远而广泛。作为这一变革的一部分,“学校招生信息网”应运而生,它是一个基于Mysql数据库,通过JSP技术实现的在线平台。这个平台的建立,不仅是为了应对中国经济持续增......
  • MySQL之复制(四)
    复制复制的原理基于语句的复制在MySQL5.0及之前的版本中只支持基于语句的复制(也称为逻辑复制),这在数据库领域是很少见的,基于语句的复制模式下,主库会记录那些造成数据更改的查询,当备库读取并重放这些事件时,实际上只是把主库上执行过的SQL再执行一遍。这种方式既有好处、......
  • 关于MySQL数据库基础学习心得与体会
    引言在当今的信息化时代,数据已经成为企业和社会运行的重要驱动力。作为数据的载体,数据库管理系统(DBMS)扮演着至关重要的角色。MySQL作为最流行的开源关系型数据库管理系统之一,因其高性能、可靠性、易用性等特点,被广泛应用于各种规模的系统中。在学习了MySQL数据库基础课程之后,......
  • 最新Prompt预设词分享,DALL-E3文生图+文档分析
     使用指南直接复制使用可以前往已经添加好Prompt预设的AI系统测试使用(可自定义添加使用)支持GPTsSparkAiSparkAi创作系统是基于ChatGPT进行开发的Ai智能问答系统和Midjourney绘画系统,支持OpenAI-GPT全模型+国内AI全模型。支持GPT-4o大模型、文档分析、识图图片理解、......
  • 数据库常见 SQL 语句及语法
    数据库操作创建数据库语法CREATEDATABASEdatabase_name;删除数据库语法DROPDATABASEdatabase_name;选择数据库语法USEdatabase_name;表操作创建表语法CREATETABLEtable_name(column1(字段)datatype(数据类型)constraints(约束条件),column2d......
  • MySQL常见的后端面试题,你会几道?
     为什么分库分表单表数据量过大,会出现慢查询,所以需要水平分表可以把低频、高频的字段分开为多个表,低频的表作为附加表,且逻辑更加清晰,性能更优随着系统的业务模块的增多,放到单库会增加其复杂度,逻辑不清晰,不好维护,所以会对业务进行微服务拆分,同时拆分数据库怎么分库分......
  • NumPy 双曲函数与集合操作详解
    NumPy双曲函数NumPy提供了sinh()、cosh()和tanh()等ufunc,它们接受弧度值并生成相应的双曲正弦、双曲余弦和双曲正切值。示例:importnumpyasnpx=np.sinh(np.pi/2)print(x)示例找到数组arr中所有值的双曲余弦值:importnumpyasnparr=np.array([n......
  • 【MySQL】——概念、逻辑、物理结构设计
    ......