文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Mybatis-Plus的SQL语句组拼原理说明

2024-04-02 19:55

关注

记录查找自动组拼SQL语句的过程

首先在BaseMapper其中的一个方法下打个断点

在这里插入图片描述

在断点显示的值栏找到相关的SQL

发现SQL语句在MappedStatement对象中,而sqlSource存的就是相关的sql语句

在这里插入图片描述

在这里插入图片描述

然后在MappedStatement这个对象打断点,看看到底是哪个对象对它进行了操作

在这里插入图片描述

发现是AutoSqlInjector创建了MappedStatement

在这里插入图片描述

在AutoSqlInjector对象找到与selectById相关的一个方法,打断点

在这里插入图片描述

SqlSource果然在这里创建出来了,createSqlSource就是具体过程,然后添加到MappedStatement对象中,此SQL完成组拼

在createSqlSource方法打下断点,进入具体的组拼过程

在这里插入图片描述

方法sqlSelectColumns就是具体的组拼方法,一直在此方法进行递归

在这里插入图片描述

在此方法中,迭代器在不断迭代组拼

在这里插入图片描述

最后SQL全部完成组拼,存在集合对象中,就可以取出来了

学会从逆推到顺推,学会怎样打断点是关键。

mybatisPlus注解版动态拼接sql

前段时间不是在实习嘛,公司用的是注解开发不用xml的,特此记录注解版动态拼接sql,还有使用过程中踩坑集合。

先记录1.0版本,以后遇到别的在完善就是。

其实就是在xml那种格式下面最外面一层用< /script > 标签包住就行了,其余部分用英文双引号包住,表达式用单引号包住就ok了,@Param(“idMin”) Integer idMin与#{idMin}对应。

不过我这里如果idMin为null那么between null and 20是查不出数值的,< /script > 标签是重点,这种sql业务逻辑读者以后自己改。



public interface GoodsMapper extends BaseMapper<Goods> {
    @Select("<script>"
            + "select * from goods where id between"
            + "<if test='#{idMin}!=null'>" + "#{idMin} and "+"</if>"
            + "<if test='#{idMax}!=null'>" + "#{idMax}" + "</if>"
            + "</script>")
    public List<Goods> select(@Param("idMin") Integer idMin, @Param("idMax") Integer idMax);
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯