mybatis xml if写法
时间: 2023-07-06 15:25:46 浏览: 262
MyBatis中使用XML文件来定义SQL语句,其中if标签可以用于动态生成SQL语句的where条件。示例代码如下:
```
<select id="getUserList" resultType="User">
SELECT * FROM user
<where>
<if test="id != null">
AND id = #{id}
</if>
<if test="name != null and name != ''">
AND name = #{name}
</if>
<if test="age != null">
AND age = #{age}
</if>
</where>
</select>
```
上面的代码中,使用了where标签来包含动态生成的SQL语句的where条件部分,if标签用于判断是否需要添加where条件,test属性用于指定判断条件,当test条件成立时,if标签内的SQL语句会被添加到where条件中。如果test条件不成立,则if标签内的SQL语句不会被添加到where条件中。
注意,这里的#{id}、#{name}、#{age}是MyBatis中的占位符,用于替换SQL语句中的参数,具体用法可以参考MyBatis官方文档。
相关问题
mybatis xml 条件写法
MyBatis XML 中常见的条件写法有以下几种:
1. if 标签:根据条件判断是否需要拼接 SQL,可以嵌套在 where 标签中。
```
<select id="selectUser" resultType="User">
SELECT * FROM users
<where>
<if test="id != null">
AND id = #{id}
</if>
<if test="name != null and name != ''">
AND name like concat('%', #{name}, '%')
</if>
</where>
</select>
```
2. choose、when、otherwise 标签:类似于 Java 中的 switch 语句,根据条件选择不同的 SQL 语句。
```
<select id="selectUser" resultType="User">
SELECT * FROM users
<where>
<choose>
<when test="id != null">
AND id = #{id}
</when>
<when test="name != null and name != ''">
AND name like concat('%', #{name}, '%')
</when>
<otherwise>
AND state = '1'
</otherwise>
</choose>
</where>
</select>
```
3. where 标签:用于动态拼接 SQL 中的 WHERE 子句,会自动去除 WHERE 关键字前面的多余条件。
```
<select id="selectUser" resultType="User">
SELECT * FROM users
<where>
<if test="id != null">
AND id = #{id}
</if>
<if test="name != null and name != ''">
AND name like concat('%', #{name}, '%')
</if>
<if test="state != null">
AND state = #{state}
</if>
</where>
</select>
```
4. foreach 标签:用于遍历对象集合或数组,生成对应的 SQL 语句。
```
<select id="selectUserByIds" resultType="User">
SELECT * FROM users
WHERE id IN
<foreach collection="ids" item="id" open="(" close=")" separator=",">
#{id}
</foreach>
</select>
```
mybatis xml if 标签字符串判断不相等
在 MyBatis 的 `<if>` 标签中,我们可以使用 OGNL 表达式判断条件是否成立。如果你想判断两个字符串不相等,可以使用 `!=` 操作符,例如:
```xml
<if test="username != null and username != ''">
AND username = #{username}
</if>
```
其中,`test` 属性中的表达式判断 `username` 不为 `null` 且不为空字符串,如果条件成立,则拼接 SQL 语句 `AND username = #{username}`。
你也可以使用 `ne` 操作符,例如:
```xml
<if test="username ne null and username ne ''">
AND username = #{username}
</if>
```
这两种写法的效果是一样的。
阅读全文