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

目录
相关文章
|
6天前
|
XML Java 数据库连接
mybatis中在xml文件中通用查询结果列如何使用
mybatis中在xml文件中通用查询结果列如何使用
42 0
|
6天前
|
XML Java 数据库连接
Mybatis逆向工程的2种方法,一键高效快速生成Pojo、Mapper、XML,摆脱大量重复开发
【5月更文挑战第10天】Mybatis逆向工程的2种方法,一键高效快速生成Pojo、Mapper、XML,摆脱大量重复开发
18 6
|
6天前
|
XML Java 数据库连接
MyBatis 解决上篇的参数绑定问题以及XML方式交互
MyBatis 解决上篇的参数绑定问题以及XML方式交互
13 0
|
6天前
|
XML Java 数据库连接
Javaweb之Mybatis的XML配置文件的详细解析
Javaweb之Mybatis的XML配置文件的详细解析
18 0
|
6天前
|
Java 数据库连接 mybatis
Mybatis+mysql动态分页查询数据案例——Mybatis的配置文件(mybatis-config.xml)
Mybatis+mysql动态分页查询数据案例——Mybatis的配置文件(mybatis-config.xml)
20 1
|
6天前
Mybatis+mysql动态分页查询数据案例——配置映射文件(HouseDaoMapper.xml)
Mybatis+mysql动态分页查询数据案例——配置映射文件(HouseDaoMapper.xml)
18 1
|
6天前
ssm(Spring+Spring mvc+mybatis)——web.xml
ssm(Spring+Spring mvc+mybatis)——web.xml
13 0
|
6天前
|
Java Spring
ssm(Spring+Spring mvc+mybatis)Spring配置文件——applicationContext.xml
ssm(Spring+Spring mvc+mybatis)Spring配置文件——applicationContext.xml
11 0
|
6天前
|
Java 数据库连接 mybatis
mybatis简单案例源码详细【注释全面】——Dao层映射文件(UserMapper.xml)【重要】
mybatis简单案例源码详细【注释全面】——Dao层映射文件(UserMapper.xml)【重要】
11 0
|
6天前
|
SQL Java 数据库连接
Mybatis中Mapper.xml 文件使用注释遇到的坑
Mybatis中Mapper.xml 文件使用注释遇到的坑