Mybatis的mapper.xml中if标签test怎么取反
时间: 2023-02-08 09:52:07 浏览: 790
在 MyBatis 的 mapper.xml 中,如果要对 if 标签的 test 属性进行取反,可以使用 `not` 关键字。
具体的使用方法为:在 if 标签的 test 属性值前面加上 `not` 关键字即可,例如:
```
<if test="not condition">
...
</if>
```
这样,当 `condition` 的值为 true 时,if 标签内部的语句将不会执行;而当 `condition` 的值为 false 时,if 标签内部的语句将会执行。
如果想取反复杂一点的多重条件,可以使用 <bind> 来绑定变量来做到取反
```
<bind name="not_param" value="!param" />
<if test="not_param == true">
...
</if>
```
总之,取反操作可以通过在条件表达式前加上not或者使用<bind>来实现
相关问题
mybatis mapper.xml 插入后返回主键 id 的配置
在 MyBatis 中,可以通过配置来实现插入数据后返回主键 id。具体可以通过以下步骤来实现:
1. 在 mapper.xml 文件中指定主键的生成策略,例如:
```
<insert id="insertUser" parameterType="User">
<selectKey keyProperty="id" resultType="int" order="AFTER">
SELECT LAST_INSERT_ID()
</selectKey>
INSERT INTO user (username, password) VALUES (#{username}, #{password})
</insert>
```
其中,`<selectKey>` 标签用于指定主键的生成策略,`keyProperty` 属性指定主键对应的实体属性名称,`resultType` 属性指定主键类型,`order` 属性指定执行顺序。
2. 在 Java 代码中调用 insert 方法时,必须将实体对象作为参数传递进去,例如:
```
User user = new User();
user.setUsername("test");
user.setPassword("123456");
userMapper.insertUser(user);
System.out.println(user.getId()); // 返回插入后的主键 id
```
通过以上配置和代码,就可以实现插入数据后返回主键 id 的功能。需要注意的是,`<selectKey>` 标签中的 SQL 语句必须符合当前数据库的语法规范,例如 MySQL 数据库可以使用 `LAST_INSERT_ID()` 函数来获取插入后的主键 id。
在com.mybatis.mapper.UserInfoMapper.xml文件中添加动态SQL语句,在user_info表格中添加数据,列名为UserName和password; 在com.mybatis.mapper.UserInfoMapper.xml文件中添加动态SQL语句,在user_info表格中修改用户信息; 在com.mybatis.mapper.UserInfoMapper.xml文件中添加动态SQL语句,在user_info表格中根据用户编号删除用户;
好的,你的三个问题都是关于MyBatis的动态SQL语句的使用。
第一个问题的答案如下:
在com.mybatis.mapper.UserInfoMapper.xml文件中添加如下动态SQL语句:
```xml
<insert id="insertUser">
INSERT INTO user_info (UserName, password)
VALUES
<trim suffixOverrides=",">
<if test="userName != null and password != null">
(#{userName}, #{password}),
</if>
</trim>
</insert>
```
其中,#{userName}和#{password}是占位符,表示需要插入的值。
第二个问题的答案如下:
在com.mybatis.mapper.UserInfoMapper.xml文件中添加如下动态SQL语句:
```xml
<update id="updateUser">
UPDATE user_info
<set>
<if test="userName != null">
UserName = #{userName},
</if>
<if test="password != null">
password = #{password},
</if>
</set>
WHERE id = #{id}
</update>
```
其中,#{id}是要修改的用户编号,#{userName}和#{password}是需要修改的值。
第三个问题的答案如下:
在com.mybatis.mapper.UserInfoMapper.xml文件中添加如下动态SQL语句:
```xml
<delete id="deleteUser">
DELETE FROM user_info WHERE id = #{id}
</delete>
```
其中,#{id}是要删除的用户编号。
阅读全文