Mybatis-Plus中SQL语句组拼原理的的示例分析

发布时间:2021-06-10 10:51:45 作者:小新
来源:亿速云 阅读:211

这篇文章主要为大家展示了“Mybatis-Plus中SQL语句组拼原理的的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Mybatis-Plus中SQL语句组拼原理的的示例分析”这篇文章吧。

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

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

Mybatis-Plus中SQL语句组拼原理的的示例分析

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

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

Mybatis-Plus中SQL语句组拼原理的的示例分析

Mybatis-Plus中SQL语句组拼原理的的示例分析

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

Mybatis-Plus中SQL语句组拼原理的的示例分析

发现是AutoSqlInjector创建了MappedStatement

Mybatis-Plus中SQL语句组拼原理的的示例分析

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

Mybatis-Plus中SQL语句组拼原理的的示例分析

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

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

Mybatis-Plus中SQL语句组拼原理的的示例分析

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

Mybatis-Plus中SQL语句组拼原理的的示例分析

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

Mybatis-Plus中SQL语句组拼原理的的示例分析

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

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

mybatisPlus注解版动态拼接sql

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

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

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

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

/**
 * @author zzh
 * @since 2021-01-26
 */
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);
}

以上是“Mybatis-Plus中SQL语句组拼原理的的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!

推荐阅读:
  1. Mysql中Sql语句注释的示例分析
  2. js中this原理的示例分析

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

mybatis-plus sql

上一篇:php_sapi = cli指的是什么意思

下一篇:php中static指的是什么意思

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》