Mybatis xml if tag tips

简介: Mybatis xml if tag tips

当我们使用 <if> 实现动态sql时, 需要注意, 单个字符比较问题。

例如:

List<User> queryUserByParam(Map<String, Object> param);
select * from user
<where>
  name like #{name}
  <if test="isChinese == '1'">
    and coutry = 'China'
  </if>
</where>
Map<String, object> param = new HashMap<>();
param.put("name", "张三");
param.put("isChinese ", "1");
userMapper.queryUserByParam(param);

查询结果不会过滤China用户,

此时if 条件是不成立的, 因为上面的写法 isChinese == '1' ‘1’ 会解析为单个字符, 因此条件总是不成立, 所以 and coutry = 'China' 也不会生效

解决办法:

1.外层用单引号, 里面用双引号

select * from user
<where>
   name like #{name}
   <if test='isChinese == "1"'>
    and coutry = 'China'
   </if>
</where>

2.使用toString()

select * from user
<where>
   name like #{name}
   <if test="isChinese == '1'.toString()">
    and coutry = 'China'
   </if>
</where>

感兴趣的朋友可以深入了解一下 mybatis 是如何解析 if 里面的表达式的

以及OGNL 语言

OGNL

目录
相关文章
|
8月前
|
XML Java 数据库连接
MyBatis入门——MyBatis XML配置文件(3)
MyBatis入门——MyBatis XML配置文件(3)
188 6
|
3月前
|
SQL 缓存 Java
MyBatis如何关闭一级缓存(分注解和xml两种方式)
MyBatis如何关闭一级缓存(分注解和xml两种方式)
124 5
|
5月前
|
SQL XML Java
mybatis :sqlmapconfig.xml配置 ++++Mapper XML 文件(sql/insert/delete/update/select)(增删改查)用法
当然,这些仅是MyBatis功能的初步介绍。MyBatis还提供了高级特性,如动态SQL、类型处理器、插件等,可以进一步提供对数据库交互的强大支持和灵活性。希望上述内容对您理解MyBatis的基本操作有所帮助。在实际使用中,您可能还需要根据具体的业务要求调整和优化SQL语句和配置。
95 1
|
6月前
|
SQL Java 数据库连接
MyBatis Mapper.XML 标签使用说明
MyBatis Mapper.XML 标签使用说明
62 0
|
8月前
|
SQL XML Java
后端数据库开发JDBC编程Mybatis之用基于XML文件的方式映射SQL语句实操
后端数据库开发JDBC编程Mybatis之用基于XML文件的方式映射SQL语句实操
102 3
|
8月前
|
XML Java 数据库连接
MyBatis第二课,灰度发布,@Results注解,使用xml书写mysql
MyBatis第二课,灰度发布,@Results注解,使用xml书写mysql
|
7月前
|
XML Java 数据格式
支付系统----微信支付20---创建案例项目--集成Mybatis-plus的补充,target下只有接口的编译文件,xml文件了,添加日志的写法
支付系统----微信支付20---创建案例项目--集成Mybatis-plus的补充,target下只有接口的编译文件,xml文件了,添加日志的写法
|
8月前
|
XML 关系型数据库 数据库
使用mybatis-generator插件生成postgresql数据库model、mapper、xml
使用mybatis-generator插件生成postgresql数据库model、mapper、xml
696 0
|
9月前
|
XML Java 数据库连接
Mybatis逆向工程的2种方法,一键高效快速生成Pojo、Mapper、XML,摆脱大量重复开发
【5月更文挑战第10天】Mybatis逆向工程的2种方法,一键高效快速生成Pojo、Mapper、XML,摆脱大量重复开发
106 6
|
9月前
|
XML Java 数据库连接
MyBatis 解决上篇的参数绑定问题以及XML方式交互
MyBatis 解决上篇的参数绑定问题以及XML方式交互
90 0