-
使用Mybatis高级映射的困惑(N+1)40
为了解决“N+1”问题,Mybatis推荐使用left join等关联查询,并结合<association>等标签来映射高级查询结果。
比如:
<resultMap type="Order" id="baseResultMap"> <id property="id" column="order_id" /> <result property="no" column="order_no"/> <result property="name" column="order_name" /> <association property="goods" javaType="Goods" resultMap="com.hfrelay.persistence.spares.SparesMapper.sparesResultMap"> </association> </resultMap>
<select id="findById" resultMap="baseResultMap"> select a.order_id, a.order_no, b.goods_id, b.goods_name, b.* /* Goods的 N 多 字段(假如某天删除一个Goods的一个属性,就得来这边顺便删除)*/ from order a, goods b where a.goods_id = b.goods_id </select>
这样虽然解决了N+1问题。但是,由于很多类都将Goods作为子对象,因此,若删除Goods的某一个字段,则必须在引用它的所有XML配置文件中删除高级查询语句对应的字段,甚是麻烦!
后面,改用“<association select=“XXX””,就相对简单了,但新的问题又出现了,如果在改文件中使用缓存配置“<cache />”则会提示出错。
请问你们都是怎么使用的????
问题补充:举例:
Goods本身也是个复杂的ResultMap,而且有很多对象引用到它,比如订单Order、库存StockPile。当某天删除Goods的一个表字段(如goods_aa),则你必须到每个相关的Mapper文件中的对应查询语句删除它(除非你使用SQL视图,但你也必须使用重新修改对应的SQL视图)。如果你在 < association >中使用属性 select=“ GoodsMapper.findByGoodsId” ,则不存在上述现象,但也导致一个问题,那就是无法在GoodsMapper使用“<cache />”,即无法使用缓存
问题补充:哎,竟然没人回答!2012年11月20日 13:25
目前还没有答案
相关推荐
目标:本示例说明SFM...6、如果一切正常,你会看到我们使用SpringBoot整合Spring+MyBatis+tkMabtis+pagehelper+redis+webFlux的响应式单体并高web应用项目。 目的:希望学习springboot开发SFM响应式应用的小白们。
项目描述 在上家公司自己集成的一套系统,用了两个多月的时间完成的:Springboot+Mybatis-plus+ SpringMvc+Shiro+Redis企业级开发系统 Springboot作为容器,使用mybatis作为持久层框架 使用官方推荐的thymeleaf做为...
本项目JDK8x64+SpringBoot+MyBatis+Redis+Druid+Beetl+Shrio的框架组合, 自研工作流引擎,支持可视化表单设计与流程设计。 支技分布式部署。功能完善能够满足中大型企业办公需要。 本项目JDK8x64+SpringBoot+...
Springboot作为容器,使用mybatis作为持久层框架 使用官方推荐的thymeleaf做为模板引擎,shiro作为安全框架,主流技术 几乎零XML,极简配置 两套UI实现(bootstrap+layer ui),可以自由切换 报表后端采用技术: ...
1、该资源包括项目的全部源码,下载可以直接使用! 2、本项目适合作为计算机、数学、电子信息等专业的课程设计、期末大作业和毕设项目,作为参考资料学习借鉴。 3、本资源作为“参考资料”如果需要实现其他功能,...
在提供的"mybatis_test"压缩包中,可能包含了示例代码,展示了如何在MyBatis中使用上述策略来解决“n+1”问题。通过分析这些代码,我们可以更深入地理解如何在实际项目中应用这些技巧。 总之,掌握MyBatis中的关联...
基于SpringBoot + Mybatis + Thymeleaf +Redis+MongoDB+MySQL开发的商品管理系统。基于SpringBoot + Mybatis + Thymeleaf +Redis+MongoDB+MySQL开发的商品管理系统。基于SpringBoot + Mybatis + Thymeleaf +Redis+...
SpringBoot+Mybatis -plus+Mysql+Vue渲染整合,需求为,院系和学生之间的多对一关系管理,外键不可删除,添加学生时完整显示学院姓名,成功添加,删除,修改,查询,模糊查询包括下拉框(院系),区间段(学生年龄)...
Spring+SpringMVC+MyBatis+Shiro+MySQL+Redis+Maven+EasyUI+Bootstrap实现的通用权限管理系统。 Spring+SpringMVC+MyBatis+Shiro+MySQL+Redis+Maven+EasyUI+Bootstrap实现的通用权限管理系统 Spring+SpringMVC+...
基于SpringBoot+MyBatis+Shiro+Redis+ElasticSearch的企业级博客系统.zip基于SpringBoot+MyBatis+Shiro+Redis+ElasticSearch的企业级博客系统.zip基于SpringBoot+MyBatis+Shiro+Redis+ElasticSearch的企业级博客系统...
基于MyBatis+servlet+EasyUI+Oracle完成的一个员工信息管理系统 基于MyBatis+servlet+EasyUI+Oracle完成的一个员工信息管理系统 基于MyBatis+servlet+EasyUI+Oracle完成的一个员工信息管理系统 基于MyBatis+servlet+...
在本项目中,"springboot+mybatis+mysql+layUI+thymeleaf实现对学员信息的增删改查" 是一个典型的Web应用程序开发案例,涵盖了多种技术栈的综合运用。下面将详细阐述这些技术及其在项目中的作用。 1. SpringBoot: ...
毕业设计,基于springboot+mybatis-plus+shiro+mysql+layui开发的仓库物流管理系统,课程设计 基于spring boot的中小型仓库物流管理系统(springboot+mybatis-plus+shiro+mysql+layui前端框架) 技术栈使用 后端:...
基于Springboot+Mybatis+Redis+MySql+MQ的校园医疗管理系统.zip轻松搞定课程设计。 基于Springboot+Mybatis+Redis+MySql+MQ的校园医疗管理系统.zip轻松搞定课程设计。基于Springboot+Mybatis+Redis+MySql+MQ的校园...
标题 "springboot+mybatis+mysql+jsp+bootstrap+web.xml例子" 描述了一个使用现代技术栈构建的Web应用程序示例。这个项目结合了Spring Boot、MyBatis、MySQL数据库、JSP(JavaServer Pages)以及Bootstrap前端框架,...
标题中的"全注解 spring boot +spring security + mybatis+druid+thymeleaf+mysql+bootstrap"是一个集成开发环境的配置,涉及到的主要技术有Spring Boot、Spring Security、MyBatis、Druid、Thymeleaf、MySQL以及...
基于springboot微服务框架的个人博客系统,技术栈SpringCloud+MyBatis+Redis+shiro+vue 基于springboot微服务框架的个人博客系统,技术栈SpringCloud+MyBatis+Redis+shiro+vue 基于springboot微服务框架的个人博客...
本科毕设项目,基于springboot+mybatis+html+bootstrap+jquery的请假审批与管理系统。项目经过测试,可完美运行! 本科毕设项目,基于springboot+mybatis+html+bootstrap+jquery的请假审批与管理系统。项目经过测试...
基于SpringBoot + Mybatis + MySql + Redis + Token的云生活超市管理后台,app接口交互 项目经过测试,可完美运行! 基于SpringBoot + Mybatis + MySql + Redis + Token的云生活超市管理后台,app接口交互 项目...