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

iBatis和MyBatis在使用ResultMap对应关系时的区别

本文已同步至个人博客 liaosi's blog-iBatis和MyBatis在使用ResultMap对应关系时的区别

在使用iBatis和MyBatis的查询时,查询出来的数据通常会由一个ResultMap来接收。如果在sql语句中 SELECT 出来的字段和ResultMap中的column没有一一对应,是否会有影响呢?而且ResultMap通常会用到多个查询的sql中,这就是必须要考虑的一个问题。

iBatis

在iBatis中,如果查询的字段比ResultMap中对应的字段多,不会报错。
如果ResultMap中字段多了,查询数据的时候没有 SELECT 出来这个数据,那么此时就会报错,比如说我查询的时候没有查询gyTradeCode这个字段,但是ResultMap里面有这个字段,报了如下错误:

--- The error occurred in market-shop/sql/GoodOrder.xml.  
--- The error occurred while applying a result map.  
--- Check the GoodOrder.GoodOrderResult.  
--- Check the result mapping for the 'gyTradeCode' property.  
--- Cause: java.sql.SQLException: Invalid column name, dubbo version: 0.0.1-SNAPSHOT, current host: 127.0.0.1
org.springframework.jdbc.BadSqlGrammarException: SqlMapClient operation; bad SQL grammar []; nested exception is com.ibatis.common.jdbc.exception.NestedSQLException:   
--- The error occurred in market-shop/sql/GoodOrder.xml.  
--- The error occurred while applying a result map.  
--- Check the GoodOrder.GoodOrderResult.  
--- Check the result mapping for the 'gyTradeCode' property.  
--- Cause: java.sql.SQLException: Invalid column name

结论是:ResultMap里的column不能比sql中查询的字段多,但是查询的字段是可以比ResultMap中的多。所以当我们在ResultMap中增加了一个字段时,所有用到了这个ResultMap的sql语句都要在SELECT中增加对应的字段

MyBatis

如果是使用MyBatis,这种对应关系谁多谁少都不会报错,不影响。

相关文章:

  • Java 架构师眼中的 HTTP 协议
  • Java多线程干货系列—(四)volatile关键字
  • first
  • Linux Swap扩容
  • 函数的默认参数:可有可无
  • os模块注意事项
  • 腾讯云全面开放,联手千万开发者共建超级大脑
  • 【51Nod】1920 空间统计学 状压DP
  • vue-router原理剖析
  • js继承方式讲解
  • BZOJ5286:[HNOI/AHOI2018]转盘——题解
  • maven 下载地址
  • JS中的深拷贝与浅拷贝了解一下
  • Postfix邮件系统
  • .NET CORE 2.0发布后没有 VIEWS视图页面文件
  • [iOS]Core Data浅析一 -- 启用Core Data
  • 【407天】跃迁之路——程序员高效学习方法论探索系列(实验阶段164-2018.03.19)...
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • bootstrap创建登录注册页面
  • Github访问慢解决办法
  • JavaScript 一些 DOM 的知识点
  • js 实现textarea输入字数提示
  • Logstash 参考指南(目录)
  • MySQL QA
  • mysql 数据库四种事务隔离级别
  • MySQL常见的两种存储引擎:MyISAM与InnoDB的爱恨情仇
  • Nacos系列:Nacos的Java SDK使用
  • Spring Cloud中负载均衡器概览
  • Vue 重置组件到初始状态
  • vue2.0项目引入element-ui
  • 对超线程几个不同角度的解释
  • 数据结构java版之冒泡排序及优化
  • 算法-插入排序
  • 项目管理碎碎念系列之一:干系人管理
  • 学习Vue.js的五个小例子
  • HanLP分词命名实体提取详解
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (四)linux文件内容查看
  • 、写入Shellcode到注册表上线
  • ./include/caffe/util/cudnn.hpp: In function ‘const char* cudnnGetErrorString(cudnnStatus_t)’: ./incl
  • .Net 8.0 新的变化
  • .net 生成二级域名
  • .NET:自动将请求参数绑定到ASPX、ASHX和MVC(菜鸟必看)
  • /etc/X11/xorg.conf 文件被误改后进不了图形化界面
  • @data注解_一枚 架构师 也不会用的Lombok注解,相见恨晚
  • @GlobalLock注解作用与原理解析
  • [2013][note]通过石墨烯调谐用于开关、传感的动态可重构Fano超——
  • [20180312]进程管理其中的SQL Server进程占用内存远远大于SQL server内部统计出来的内存...
  • [Android]通过PhoneLookup读取所有电话号码
  • [BZOJ3211]:花神游历各国(小清新线段树)
  • [C#]手把手教你打造Socket的TCP通讯连接(一)
  • [c]扫雷