mybatis怎么使用insert标签 实现没有id就新增有就修改
时间: 2024-02-24 15:54:21 浏览: 103
mybatis学习之路mysql批量新增数据的方法
你可以使用MyBatis动态SQL中的`<insert>`标签来实现没有id就新增,有id就修改的功能。具体步骤如下:
1.在Mapper.xml文件中,定义一个`<insert>`标签,同时在`<selectKey>`标签中使用`order`属性指定获取自增主键的时机为`AFTER`,并将获取到的自增主键设置到参数对象中。示例代码如下:
```
<insert id="saveOrUpdate" parameterType="com.example.User">
<selectKey resultType="java.lang.Long" keyProperty="id" order="AFTER">
SELECT LAST_INSERT_ID()
</selectKey>
INSERT INTO user(name, age) VALUES(#{name}, #{age})
ON DUPLICATE KEY UPDATE name=VALUES(name), age=VALUES(age)
</insert>
```
2.在Java代码中,调用Mapper接口的`saveOrUpdate`方法,并传入对应的参数。示例代码如下:
```
User user = new User();
user.setName("张三");
user.setAge(20);
// 执行新增操作
userMapper.saveOrUpdate(user);
user.setId(1);
user.setName("李四");
// 执行修改操作
userMapper.saveOrUpdate(user);
```
这样,就可以根据是否传入id来执行新增或修改操作了。需要注意的是,`<insert>`标签中的`ON DUPLICATE KEY UPDATE`语句只有在MySQL数据库中才能使用,其它数据库可能需要使用不同的语法来实现类似的功能。
阅读全文