mybatis根据某个字段在表里是否存在,存在更新,不存在新增怎么实现
时间: 2023-03-30 13:00:31 浏览: 454
可以使用MyBatis的动态SQL语句来实现这个功能。具体步骤如下:
1. 编写一个SQL语句,使用IF语句判断该字段是否存在,如果存在则执行UPDATE语句,否则执行INSERT语句。
2. 在MyBatis的Mapper文件中定义一个方法,使用@Insert和@Update注解来分别指定插入和更新的SQL语句。
3. 在Java代码中调用该方法,传入需要插入或更新的数据对象即可。
示例代码如下:
```
<!-- 定义动态SQL语句 -->
<sql id="checkExist">
<if test="id != null">
SELECT COUNT(*) FROM my_table WHERE id = #{id}
</if>
<if test="id == null">
SELECT
</if>
</sql>
<insert id="insertOrUpdate" parameterType="com.example.MyObject">
<selectKey keyProperty="id" order="BEFORE" resultType="java.lang.Long">
<include refid="checkExist"/>
</selectKey>
<if test="id != null">
UPDATE my_table SET name = #{name} WHERE id = #{id}
</if>
<if test="id == null">
INSERT INTO my_table (name) VALUES (#{name})
</if>
</insert>
// 定义Mapper接口
public interface MyMapper {
@Insert("insertOrUpdate")
void insertOrUpdate(MyObject obj);
}
// 调用Mapper方法
MyObject obj = new MyObject();
obj.setName("test");
myMapper.insertOrUpdate(obj);
```
阅读全文