从MybatisPlus回归Mybatis

之前写项目一直习惯使用MyBatisPlus,单表查询很方便;两张表也很方便,直接业务层处理两张表的逻辑。但什么都图方便只会害了你。

但连接的表比较复杂的时候,还是要使用MyBatis 写 SQL,这对于一个Plus选手,无疑是遇到了一些障碍的。

SQL的一些问题

分页的问题

当习惯使用了MybatisPlus的分页,再回到Mybatis写SQL,分页容易出点问题.

select t1.id,
title,
content,
t2.id,
t2.publication_id,
t2.tag_name
from publication t1
inner join publication_tag t2 on t1.id = t2.publication_id

id为1的文章有两个标签,id分别为1,2;

这个时候很容易写出这样的sql

select t1.id,
title,
content,
t2.id,
t2.publication_id,
t2.tag_name
from publication t1
inner join publication_tag t2 on t1.id = t2.publication_id
limit 1,2

这个很明显是错误的:

正确的SQL应该是类似这样的:

select t1.id,
title,
content,
t2.id,
t2.publication_id,
t2.tag_name
from (select * from publication limit 1,2) t1
inner join publication_tag t2 on t1.id = t2.publication_id

映射的问题

有些复杂的查询映射会在resultMap中嵌套一些映射(如:association,collection),当autoMappingBehavior使用PARTIAL的时候,如果有嵌套映射,则这个嵌套映射不会进行自动映射了。按照一般开发来说,这时候驼峰映射就失效了。这个时候应该设置将其设置成FULL

当这个解决了之后,你在application.yml写下以下配置:

mybatis:
configuration:
auto-mapping-behavior: full mybatis-plus:
mapper-locations: classpath:mybatis/mapper/*.xml
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #开启sql日志

这个时候,你感觉问题解决了,实际上还是映射不了,mybatis的配置未生效,具体原因我也还在探究,目前先留下正确的配置:

mybatis-plus:
mapper-locations: classpath:mybatis/mapper/*.xml
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl #开启sql日志
auto-mapping-behavior: full

只需要将配置都放在mybatis-plus下

从MybatisPlus回归Mybatis的更多相关文章

  1. Mybatis-Plus和Mybatis的区别

    1.List item 区别一如果Mybatis Plus是扳手,那Mybatis Generator就是生产扳手的工厂.通俗来讲——MyBatis:一种操作数据库的框架,提供一种Mapper类,支持 ...

  2. SpringCloud或SpringBoot+Mybatis-Plus利用mybatis插件实现数据操作记录及更新对比

    引文 本文主要介绍如何使用mybatis插件实现拦截数据库操作并根据不同需求进行数据对比分析,主要适用于系统中需要对数据操作进行记录.在更新数据时准确记录更新字段 核心:mybatis插件(拦截器). ...

  3. Springboot+Mybatisplus替换mybatis整合报错Mapped Statements collection does not contain value

    问题一: mybatisPlus完全兼容mybatis,一般来说直接替换掉就可以了,如果mybatis的数据源不能取消创建的话,就注掉mybatisplus的数据源 //@Configurationp ...

  4. Springboot将mybatis替换为mybatis-plus

    知识点: 1.Mybatis-plus相比mybatis,功能更加强大,简而言之,不需要我们去写mapper.xml配置,但是对于特殊需求的sql语句,还是需要写mapper.xml文件中的sql语句 ...

  5. 2流高手速成记(之三):SpringBoot整合mybatis/mybatis-plus实现数据持久化

    接上回 上一篇我们简单介绍了基于SpringBoot实现简单的Web开发,本节来看Web开发中必不可少的内容--数据持久化 先看项目结构: 1. 创建数据表 打开mysql,打开数据库 test (没 ...

  6. SpringBoot整合系列--整合MyBatis-plus

    原创作品,可以转载,但是请标注出处地址:https://www.cnblogs.com/V1haoge/p/10125279.html SpringBoot整合MyBatis-plus 步骤 第一步: ...

  7. mybatis之一对多

    今天主要话题围绕这么几个方面? mybatis一对多示例 sql优化策略 一.mybatis之一对多 在说一对多之前,顺便说一下一对一. 一对一,常见的例子,比如以常见的班级例子来说,一个班主任只属于 ...

  8. MyBatis-Plus工具快速入门

    MyBatis-Plus官方文档:http://mp.baomidou.com/#/quick-starthttp://mp.baomidou.com/guide/#%E7%89%B9%E6%80%A ...

  9. mybatis基础系列(一)——mybatis入门

    好久不发博客了,写博文的一个好处是能让心静下来,整理下之前学习过的一些知识一起分享,大神路过~ mybatis简介 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射. ...

  10. SpringBoot 使用Mybatis-Plus

    简介 Mybatis-Plus(简称MP)是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发.提高效率而生. 特性 无侵入:Mybatis-Plus 在 My ...

随机推荐

  1. 2021-01-13:很多列的数据,任意一列组合查询,mysql能做到,但是上亿的数据量做不到了,查的时候非常慢。我们需要一个引擎来支持它。这个引擎你有了解过吗?

    福哥答案2021-01-13:[答案来自此链接:](https://www.zhihu.com/question/439121902)数据库存储设计一般分为行存储还有列存储.行存储一般每一行的数据通过 ...

  2. Dashboard监控页面和Zuul路由网关

    Dashboard监控页面 dashboard监控功能:我们需要前端页面能够监控提供者provider8001的工作状态 对dashboard监控页面的介绍: 1.在客户端导依赖 <?xml v ...

  3. 公众号接入 ChatGPT 了!

    虽迟但到,用了一段时间的chatgpt,功能确实令人惊叹,也是第一次体验到了交互式编程.不得不说,未来已来,花了一些时间,终于把chatgpt接入到了公众号! 使用方法 打开公众号的对话框,直接提问! ...

  4. Vue cli3 整合SuperMap巧遇js异步加载的坑

    最近使用到superMap做三维地图,而项目又分为可视化大屏与后台管理系统两部分,所以项目配置了多入口,然引入cesium依赖就成了问题,在vue cli3 整合Cesium,处理build 时内存溢 ...

  5. 使用a标签下载**.txt文件, 而不是直接打开

    今天有个使用a标签下载一个 .txt 文件,但是使用了不少方法,在点击下载的时候总是会直接打开被下载的文件,但是下载其他格式的文件就不会:也在网上找了不少资料 一.尝试href + download方 ...

  6. IIC通信协议

    1.IIC 通信协议简介 I2C 通讯协议(Inter-Integrated Circuit)是由 Phiilps 公司开发的, 由于它引脚少,硬件实现简单,可扩展性强,不需要 USART.CAN 等 ...

  7. 【python基础】复杂数据类型-列表类型(元组)

    1.初识元组 列表非常适合用于存储在程序运行期间可能变化的数据集.列表是可以修改的. 然而,有时候需要创建一系列不可修改的元素,元组可以满足这种需求 python将不能修改的值称为不可变的,而不可变的 ...

  8. 用R来分析洛杉矶犯罪

    由于微信不允许外部链接,你需要点击文章尾部左下角的 "阅读原文",才能访问文中链接. 洛杉矶市(Los Angeles)或"爵士乐的诞生地(The Birthplace ...

  9. cmake 安装一个目录下的图片 到另一个目录文件中去

    install(DIRECTORY ./cfg/labels/ DESTINATION ./fservo/cfg/yolo_cfg/labels/) install (DIRECTORY ./cfg/ ...

  10. FPGA加速技术:如何提高系统的性能和安全性

    目录 1. 引言 2. 技术原理及概念 2.1 基本概念解释 2.2 技术原理介绍 3. 实现步骤与流程 3.1 准备工作:环境配置与依赖安装 3.2 核心模块实现 3.3 集成与测试 4. 应用示例 ...