从MybatisPlus回归Mybatis
从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的更多相关文章
- Mybatis-Plus和Mybatis的区别
1.List item 区别一如果Mybatis Plus是扳手,那Mybatis Generator就是生产扳手的工厂.通俗来讲——MyBatis:一种操作数据库的框架,提供一种Mapper类,支持 ...
- SpringCloud或SpringBoot+Mybatis-Plus利用mybatis插件实现数据操作记录及更新对比
引文 本文主要介绍如何使用mybatis插件实现拦截数据库操作并根据不同需求进行数据对比分析,主要适用于系统中需要对数据操作进行记录.在更新数据时准确记录更新字段 核心:mybatis插件(拦截器). ...
- Springboot+Mybatisplus替换mybatis整合报错Mapped Statements collection does not contain value
问题一: mybatisPlus完全兼容mybatis,一般来说直接替换掉就可以了,如果mybatis的数据源不能取消创建的话,就注掉mybatisplus的数据源 //@Configurationp ...
- Springboot将mybatis替换为mybatis-plus
知识点: 1.Mybatis-plus相比mybatis,功能更加强大,简而言之,不需要我们去写mapper.xml配置,但是对于特殊需求的sql语句,还是需要写mapper.xml文件中的sql语句 ...
- 2流高手速成记(之三):SpringBoot整合mybatis/mybatis-plus实现数据持久化
接上回 上一篇我们简单介绍了基于SpringBoot实现简单的Web开发,本节来看Web开发中必不可少的内容--数据持久化 先看项目结构: 1. 创建数据表 打开mysql,打开数据库 test (没 ...
- SpringBoot整合系列--整合MyBatis-plus
原创作品,可以转载,但是请标注出处地址:https://www.cnblogs.com/V1haoge/p/10125279.html SpringBoot整合MyBatis-plus 步骤 第一步: ...
- mybatis之一对多
今天主要话题围绕这么几个方面? mybatis一对多示例 sql优化策略 一.mybatis之一对多 在说一对多之前,顺便说一下一对一. 一对一,常见的例子,比如以常见的班级例子来说,一个班主任只属于 ...
- MyBatis-Plus工具快速入门
MyBatis-Plus官方文档:http://mp.baomidou.com/#/quick-starthttp://mp.baomidou.com/guide/#%E7%89%B9%E6%80%A ...
- mybatis基础系列(一)——mybatis入门
好久不发博客了,写博文的一个好处是能让心静下来,整理下之前学习过的一些知识一起分享,大神路过~ mybatis简介 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射. ...
- SpringBoot 使用Mybatis-Plus
简介 Mybatis-Plus(简称MP)是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发.提高效率而生. 特性 无侵入:Mybatis-Plus 在 My ...
随机推荐
- 文盘Rust —— rust连接oss | 京东云技术团队
作者:京东科技 贾世闻 对象存储是云的基础组件之一,各大云厂商都有相关产品.这里跟大家介绍一下rust与对象存储交到的基本套路和其中的一些技巧. 基本连接 我们以 [S3 sdk]( https:// ...
- 2020-10-24:go中channel的recv流程是什么?
福哥答案2020-10-24: ***[评论](https://user.qzone.qq.com/3182319461/blog/1603496305)
- 2020-12-23:如何保证MQ的高可用?
福哥答案2020-12-23: ActiveMQ:Master-Slave 部署方式主从热备,方式包括通过共享存储目录来实现(shared filesystem Master-Slave).通过共享数 ...
- golang调用sdl2,播放yuv视频
golang调用sdl2,播放yuv视频 win10 x64下测试成功,其他操作系统下不保证成功. 采用的是syscall方式,不是cgo方式. 见地址 代码如下: package main impo ...
- vue全家桶进阶之路31:Vue3 数据和方法的双向绑定ref、reactive、toRefs
ref 在 Vue 3 中,你可以使用 setup 函数来定义组件的数据和方法.在 setup 函数中,你可以使用 ref.reactive 和 computed 等 Vue 3 的响应式 API 来 ...
- 【GiraKoo】CMake提示could not find any instance of Visual Studio
CMake提示could not find any instance of Visual Studio. 原因 此种情况是由于默认的CMake工具不是Visual Studio提供的版本导致的. 解决 ...
- 【汇编】masm文件夹整理
整理masm文件夹 前言 不好意思,我又来了,今天上汇编课,发现汇编masm文件夹实在是太乱了,像这样: 着实太乱了!程序一多就会很乱很让人心烦!(虽然我现在没有认真上汇编课吧,就这几个文件) 开始折 ...
- 一个.Net Core开发的开源动态壁纸软件
推荐一个Github上Start超过10.8K的超火.好用.强大的.内置很多优美的动态壁纸软件. 项目简介 这是基于.Net Core+WPF开发的.开源的动态壁纸软件,壁纸设置支持任何文件形式,包括 ...
- java中接口,抽象类,具体类之间的关系
抽象类实现接口,具体类继承于抽象类
- tryhackem_wonderland
涉及,解密,扫描,横向移动,纵向移动 仙境 掉进兔子洞,进入仙境. 获得shell 解法一: 目录扫描 ffuf -u http://10.10.134.189/FUZZ -w /usr/share/ ...