首页 > 其他分享 >从MybatisPlus回归Mybatis

从MybatisPlus回归Mybatis

时间:2023-08-07 15:44:54浏览次数:71  
标签:MybatisPlus publication 映射 回归 t2 t1 mybatis Mybatis id

从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;

image-20230807151218943

这个时候很容易写出这样的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

这个很明显是错误的:

image-20230807151404856

正确的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,publication,映射,回归,t2,t1,mybatis,Mybatis,id
From: https://www.cnblogs.com/flyleixin/p/17611612.html

相关文章

  • Springboot-Mybatis(idea)-自学笔记
    Spring-boot-Mybaties快速入门使用Mybatis查询所有用户数据准备工作(创建springboot工程,数据库表格user,实体类User)引入Mybatis的相关依赖,配置Mybatis(数据库连接信息)编写SQL语句(注解/XML)单元测试packagecom.example;importcom.example.mapper.UserMapper;impo......
  • 【mybatis】传参异常:Parameter ‘xxx‘ not found. Available parameters are [xxx,xx
    造成该异常可能的原因有:1、多个传参没有用@Param注解,或者注解导入的包有误。2、#{xxx}填写错误;3、#{xxx}遗漏,特别是有些写在select里的;4、写在bean类里,后面新需求增加变量的,没有加上bean的前缀:"bean.xxx";5、在xml文件里不需要的变量,特别是包含了#{}的,使用不正确的注释方式注......
  • 一次关于mybatis的bug解决
    bug表现: 网上的一些映射的对应关系我这边都排除了,实际的是创建级联文件夹时候要逐个去创建:比如com.xx.xx.xx,不能一次性创建,不然idea会把这个识别成一个文件夹,而不是级联的文件夹,编译的时候,mapper类和对应的mapper.xml就不会编译到一起,会报找不到的错误,判断方式:右键该文件夹—......
  • 了解 MyBatis
    本文,我们来了解MyBatis。什么是MyBatis下面这段介绍是摘自中文官网:MyBatis是一款优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射。MyBatis免除了几乎所有的JDBC代码以及设置参数和获取结果集的工作。MyBatis可以通过简单的XML或注解来配置和映射原始类型、接口......
  • Springboot - mybatis
    目录入门入门1.准备工作(创建springboot工程,数据库表user,实体类user)2.引入Mybatis的相关依赖,配置Mybatis3.编写SQL语句(注解/xml)创建工程时直接引入mybatis依赖:dao层编写mapper:packagecom.chuangzhou.dao;importcom.chuangzhou.pojo.User;importorg.apache.ibati......
  • 深度学习—线性回归预测销售额
    (深度学习—线性回归预测销售额)前提进行程序训练之前,需已经成功安装好深度学习环境若没有安装环境,可以参考:深度学习环境安装教程,进行环境安装。一、简介机器学习是人工智能的核心,是使计算机具有智能的根本途径。线性回归模型是机器学习中最简单、最基础的一类有监督学习模型......
  • 基于mybatis-plus的Api开发记实
    近日基于mybatis-plus的应用做了应用体验,现将主要步骤进行记录,以便后日使用可参考借鉴1.新建springboot应用,仅仅保留pom.xml文件a.基础依赖<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId>......
  • java202304java学习笔记第六十六天-ssm-mybatis的增删改查-修改和删除操作1
       ......
  • java202304java学习笔记第六十六天-ssm-声明式控制-mybatis映射文件概述
    ......
  • java202304java学习笔记第六十五天-ssm-声明式控制-基于xml的声明式配置-mybatis的概
      ......