iBatis 动态SQL别名查询结果为Null问题
iBatis 动态SQL别名查询结果为Null问题
在项目中使用了iBatis,使用xml方便的维护SQL,清晰明了,偶然发现动态拼接的SQL语句在数据中执行很好的返回结果,而到了程序中总是有字段返回null值,跟在数据库中执行的结果不一致
例如
<select id="getUser" parameterClass="SearchModel" resultClass="UserTO">select id,name<dynamic><isNotNull property="birthday" prepend=",">time AS birthday</isNotNull></dynamic>from user
</select>
这个简单查询中,“birthday”这个字段是在传入参数birthday不为null的情况才会返回,有时候即使数据库中time字段有值也会返回null,这个是因为iBatis机制的问题,这是因为只定义了birthday字段不为null时返回的别名(值),而另外的情况未为iBatis设置返回规则,默认的iBatis就会都返回null
解决方法
iBatis中
- isNotNull
- isNull
- isNotEmpty
- isEmpty
- isNotEqual
- isEqual
这种动态判断关键字最好是成对出现,将所有情况规则都写出来,避免iBatis使用默认规则导致的动态SQL别名字段返回为Null问题
<select id="getUser" parameterClass="SearchModel" resultClass="UserTO">select id,name<dynamic><isNotNull property="birthday" prepend=",">time AS birthday</isNotNull><isNull property="birthday" prepend=",">null AS birthday</isNull></dynamic>from user
</select>
注意: iBatis中的动态拼接SELECT 后面列时,会出现 “索引超出了数组界限”的错误,需要将动态拼接的情况写完整,类似上述情况
iBatis 动态SQL别名查询结果为Null问题相关推荐
- 动态sql模糊查询和分页
文章目录 动态sql 模糊查询 查询返回结果集的处理 分页 动态sql BookMapper xml bookservice 测试: MapperSql.test 运行: 模糊查询 BookMappe ...
- ibatis动态sql配置启动时提示:The content of elements must consist of well-formed character data......
ibatis动态sql配置启动时提示:The content of elements must consist of well-formed character data... 2012-07-18 ...
- 转:ibatis动态sql
直接使用JDBC一个非常普遍的问题就是动态SQL.使用参数值.参数本身和数据列都是动态SQL,通常是非常困难的.典型的解决办法就是用上一堆的IF-ELSE条件语句和一连串的字符串连接.对于这个问 ...
- MyBatis 实践 -动态SQL/关联查询
MyBatis 实践 标签: Java与存储 动态SQL 动态SQL提供了对SQL语句的灵活操作,通过表达式进行判断,对SQL进行拼接/组装. if 对查询条件进行判断,如果输入参数不为空才进行查询条 ...
- 动态SQL 模糊查询 联表查询
1. 正文 1. set标签 和 foreach标签 trim标签 sql片段 2. mybatis映射文件处理特殊字符. 3. mybatis完成模糊查询. 4. 联表查询 2. 动态sql 2.1 ...
- Mybatis:动态SQL分组查询
目录 1. 实现思路 2. 代码实现 2.1 mapper 2.2 mapper 接口 2.3 Service层 AjaxResult对象 2.4 controller 2.5 测试 1. 实现 ...
- mybatis02映射动态sql关联查询spring整合mybatis
2019独角兽企业重金招聘Python工程师标准>>> 输入映射和输出映射: 动态sql: 关联查询_一对一: 关联查询_一对多: 一对一,一对多操作的区别: 一对一,resultM ...
- mybatis collection标签_MyBatis第二天(结果映射+动态sql+关联查询)
笑不出莱:MyBatis第一天(介绍+文件配置+Mapper动态代理)zhuanlan.zhihu.com 一.导包+配置文件+pojo类 1.jar包:mybatis的核心包和依赖包+连接数据库的 ...
- mybatis动态sql模糊查询方法
动态SQL可以省略很多拼接SQL的步骤,使用类似于JSTL方式. 方式1 : <select id="queryBlogIf" resultType="blog&q ...
最新文章
- 在线直播 | 是事实还是贩卖焦虑?IT行业也偏爱“小鲜肉”​
- 【BOOM】一款有趣的Javascript动画效果
- Dubbo 序列化协议 5 连问,你接得住不?
- linux:vim中全选复制
- 基于JAVA+SpringBoot+Vue+Mybatis+MYSQL的宿舍管理系统
- 计算机主机技术标准规范,B级机房技术规范要求
- 盘点(腾讯字节谷歌等大厂)面试中常见的智力题
- 革新科技CIDE-EDA:实验1 3-8译码器
- oppo小布机器人_OPPO小布助手2.0强势来袭 三大版块迎来重大升级
- 二层交换机 三层交换机 四层交换机的区别
- “怀孕后,老公居然背着我做这些事”:有没有嫁对人,看这点就知道了
- 好数推荐 数据堂平均音色语音库
- Assignment | 05-week3 -Part_2-Trigger Word Detection
- 简单计算器(C 语言实现)
- JS实现元素自动移动
- matlab之用m脚本自动完成检查变量命名规范
- 结构体嵌套结构体,及其的初始化
- java-字符串,抽象类与抽象
- 俄罗斯最大银行宣布加入区块链联盟…
- linux文件名后 rc 是什么意思
热门文章
- 实例化Servlet类ServletTest异常的处理方式
- 共享打印机查找计算机名,如何查找网络共享打印机
- HCIA-Security 学习笔记-1.1信息安全基础概念
- 网易内部AIGC项目落地长图;Claude开放申请;YC 2023顶级初创公司地图;科研界ChatGPT | ShowMeAI日报
- 打印杨辉三角的java代码,打印打印杨辉三角形怎么编程?
- 著名经济学家吴敬链清华大学演讲:不惜一切代价发展芯片非常危险!
- memcpy函数实现(c语言)
- 高级语言及其文法(一)
- 用最精炼语言介绍OpenStack网络代码演进的前世今生
- Javascript入门阶段——else if语句