当前位置: 首页 > news >正文

sql语法- MyBatis 中 <association> 标签的作用 1对1的情况

之前我们都是普通查询, 现在我们有个疑问如果出现下面的定义的model 数据库能直接查询么, 就是sql查询出来能够映射 对象作为另外一个对象的属性

// 主对象publicclassProjInfoModel{privateLongprojId;privateStringprojName;privateProjAppInfoModelprojAppInfoModel;// 关联对象// getters / setters}// 子对象publicclassProjAppInfoModel{privateStringpreMoney;privateStringpostMoney;privateStringinveRole;privateStringinveType;privateStringsumActualPayAmount;privateDatestartDate;// getters / setters}
<resultMap id="ProjInfoResult"type="com.purvar.petou.ei.model.ProjInfoModel"><idcolumn="PROJ_ID"property="projId"/><resultcolumn="PROJ_NAME"property="projName"/></resultMap><resultMap id="ProjInfoResultInternal"type="com.purvar.petou.ei.model.ProjInfoModel"extends="ProjInfoResult"><association property="projAppInfoModel"javaType="com.purvar.petou.ei.model.ProjAppInfoModel"column="PROJ_ID"><!-- 这里其实不用于查询,仅作逻辑分组 --><resultcolumn="PRE_MONEY"property="preMoney"/><resultcolumn="POST_MONEY"property="postMoney"/><resultcolumn="INVE_ROLE"property="inveRole"/><resultcolumn="inve_types"property="inveType"/><resultcolumn="SUM_ACTUAL_PAY_AMOUNT"property="sumActualPayAmount"/><resultcolumn="START_DATE"property="startDate"jdbcType="TIMESTAMP"/></association></resultMap>
<selectid="selectProjInfoWithApp"resultMap="ProjInfoResultInternal">SELECTp.PROJ_ID,p.PROJ_NAME,a.PRE_MONEY,a.POST_MONEY,a.INVE_ROLE,a.inve_types,a.SUM_ACTUAL_PAY_AMOUNT,a.START_DATEFROMproject_info pLEFTJOINproject_app_info aONp.PROJ_ID=a.PROJ_IDWHEREp.PROJ_ID=#{projId}</select>
ProjInfoModelproj=newProjInfoModel();proj.setProjId(1001L);proj.setProjName("AI项目");ProjAppInfoModelapp=newProjAppInfoModel();app.setPreMoney("500万");app.setPostMoney("600万");app.setInveRole("领投");app.setInveType("VC");// ...proj.setProjAppInfoModel(app);// 自动注入!

我们仔细的看下查询 首先使用了 resultMap , 映射类型都是type=“com.purvar.petou.ei.model.ProjInfoModel” 第二个resultMap 有个 extends=“ProjInfoResult” 就是继承了第一个resultMap 的所有属性,应该也可以合写

  1. 为什么需要 javaType
    MyBatis 在运行时通过反射创建对象。当你在 中定义一个嵌套对象(如 projAppInfoModel)时,MyBatis 无法仅从字段名推断出该对象的具体类型(尤其是当属性是接口、抽象类或泛型时)。因此,必须通过 javaType 明确告知

即使 MyBatis 能自动推断类型,显式写出 javaType 仍然是推荐做法,原因包括:
提高代码可读性:XML 配置自包含,无需跳转到 Java 类查看类型。
避免潜在错误:防止因字段类型变更(如改为接口)导致运行时异常。
兼容性保障:不同 MyBatis 版本对类型推断的实现可能有差异。

http://www.jsqmd.com/news/1116725/

相关文章:

  • HoRain云--C++命名空间:解决冲突的终极指南
  • 量子计算商业化进入关键阶段:2026年哪些行业已经率先实现应用落地?
  • 毫米波人体动作姿态分类数据集3057张12类别
  • AI教材写作新方案:利用AI工具,快速产出低查重、高质量的教材!
  • TB9051FTG与MKV42F64VLH16的直流电机静音驱动方案
  • 一张架构图看懂 CC Switch:AI Coding 工具链终于有了“控制中心”
  • 如何在Windows上轻松安装虚拟游戏控制器驱动:ViGEmBus完整指南
  • Linux系统安装与命令行入门实战指南
  • 生产环境监控方案,Prometheus 加 Grafana 可视化显卡状态
  • 从业复盘:展厅制作常见落地坑点与高效解决方案
  • AI 如何提升工程生产力:高管圆桌会议的关键洞察
  • GPT-5.5 上下文缓存怎么用?Token降本方案与代码实战指南
  • 基于STM32单片机土壤湿度计WIFI物联网云平台阿里云大棚智能浇花1(设计源文件+万字报告+讲解)(支持资料、图片参考_相关定制)_
  • 高精度4-20mA电流环设计:基于DAC161S997与PIC18F86K90
  • U校园智能刷课工具终极指南:三步实现全自动答题
  • 用了三年CSS Grid,我今天才发现以前理解布局的方式全是错的
  • 工业级条形码扫描模块EM3080-W与STM32F745VG集成方案
  • wlanapi.dll 报错和无线网络有关吗?服务、驱动和系统文件一起查
  • YOLOv10模型改进-注意力机制-第43篇:YOLOv10改进策略【注意力机制】| SpatialTransformer注意力机制
  • EM3080-W条形码解码器与STM32嵌入式系统开发指南
  • 免费大模型镜像真相:成本、风险与可持续替代方案
  • 第 16 讲:Workflow:让复杂任务可控执行
  • Akagi麻将AI助手:实时分析引擎的架构解析与部署指南
  • 小白友好|OpenClaw 2.7.9 Windows 端自动化 AI 助手搭建步骤
  • WannaCry勒索病毒应急响应与数字取证实战指南
  • 别被“纯手工编程”情怀绑架!资深CTO坦白局:淘汰率最高的不是不会AI的人,而是不会评估AI输出的人
  • YOLOv10模型改进-注意力机制-第45篇:YOLOv10改进策略【注意力机制】| RecurrentAttention循环注意力
  • 如何快速实现RTSP到网页直播:简单3步完整指南
  • DM8 常见应用程序开发配置
  • 基于TPA3128D2与STM32的高效数字功放系统设计