mybatis if标签判断不生效的解决方法
实际需求
<if test='computationRule == ’1’'> FROM app_sz_bbb a</if><if test='computationRule == ’2’'> FROM app_ccc a</if>
这种情况不生效,
原因:mybatis是用OGNL表达式来解析的,在OGNL的表达式中,’0’会被解析成字符,java是强类型的,char 和 一个string 会导致不等,所以if标签中的sql不会被解析。
先说怎么解决
三种:
加 .toString()
<if test='computationRule == ’1’.toString()'> FROM app_sz_bbb a</if><if test='computationRule == ’2’.toString()'> FROM app_ccc a</if>
choose when 标签代替
<choose> <when test='computationRule == ’1’'> FROM app_sz_bbb a </when> <otherwise> FROM app_sz_bbb a </otherwise> </choose>
单引号 换成双引号
<if test=’computationRule == '1'’> FROM app_sz_bbb a</if><if test=’computationRule == '2'’> FROM app_ccc a</if>MyBatis 中if 标签 判断字符串不生效
异常sql 的mapper 文件:
<if test='isBound != null and isBound !=’’ and isBound == ’1’'> and box_sid is not null </if><if test='isBound != null and isBound !=’’ and isBound == ’2’'> and box_sid is null </if>
正确sql 的mapper 文件
<if test='isBound != null and isBound !=’’ and isBound == ’1’.toString()'> and box_sid is not null </if><if test='isBound != null and isBound !=’’ and isBound == ’2’.toString()'> and box_sid is null </if>
到此这篇关于mybatis if标签判断不生效的解决方法的文章就介绍到这了,更多相关mybatis if标签判断不生效内容请搜索好吧啦网以前的文章或继续浏览下面的相关文章希望大家以后多多支持好吧啦网!
相关文章:
1. SQL Server里函数的两种用法(可以代替游标)2. DB2新手使用的一些小笔记:新建实例、数据库路径不存在、客户端连接 .3. Windows下不能启动mysql服务--错误总结4. Oracle数据库最大可用性体系结构5. Mysql/MariaDB启动时处于进度条状态导致启动失败的原因及解决办法6. 详解Centos 使用YUM安装MariaDB7. Oracle数据泵实现不同用户导入导出表级8. ORACLE ORA-01653: unable to extend table 的错误处理方案(oracle报错)9. MySQL CHAR和VARCHAR该如何选择10. 导致mysqld无法启动的一个错误问题及解决
