经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 数据库/运维 » MyBatis » 查看文章
从MybatisPlus回归Mybatis
来源:cnblogs  作者:Rookie_Leixin  时间:2023/8/9 9:16:00  对本文有异议

从MybatisPlus回归Mybatis

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

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

SQL的一些问题

分页的问题

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

  1. select t1.id,
  2. title,
  3. content,
  4. t2.id,
  5. t2.publication_id,
  6. t2.tag_name
  7. from publication t1
  8. inner join publication_tag t2 on t1.id = t2.publication_id

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

image-20230807151218943

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

  1. select t1.id,
  2. title,
  3. content,
  4. t2.id,
  5. t2.publication_id,
  6. t2.tag_name
  7. from publication t1
  8. inner join publication_tag t2 on t1.id = t2.publication_id
  9. limit 1,2

这个很明显是错误的:

image-20230807151404856

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

  1. select t1.id,
  2. title,
  3. content,
  4. t2.id,
  5. t2.publication_id,
  6. t2.tag_name
  7. from (select * from publication limit 1,2) t1
  8. inner join publication_tag t2 on t1.id = t2.publication_id

映射的问题

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

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

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

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

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

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

原文链接:https://www.cnblogs.com/flyleixin/p/17611612.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号