使用mybatis实现 Mysql操作存在则修改如果不存在则新增的两种实现方法并举例出代码
时间: 2023-05-12 21:06:08 浏览: 162
mysql如果数据不存在,则插入新数据,否则更新的实现方法
可以使用MyBatis提供的insert和update语句来实现Mysql操作存在则修改如果不存在则新增的两种实现方法。
方法一:使用MyBatis的insert和update语句实现
在Mapper.xml文件中,可以使用insert语句插入数据,如果数据已经存在,则使用update语句更新数据。具体代码如下:
<insert id="insertOrUpdate" parameterType="com.example.User">
insert into user (id, name, age) values (#{id}, #{name}, #{age})
on duplicate key update name=#{name}, age=#{age}
</insert>
在Java代码中,可以使用MyBatis的SqlSession执行该语句:
User user = new User();
user.setId(1);
user.setName("Tom");
user.setAge(20);
SqlSession sqlSession = sqlSessionFactory.openSession();
int result = sqlSession.insert("insertOrUpdate", user);
sqlSession.commit();
sqlSession.close();
方法二:使用MyBatis的动态SQL实现
在Mapper.xml文件中,可以使用MyBatis的动态SQL实现Mysql操作存在则修改如果不存在则新增的功能。具体代码如下:
<insert id="insertOrUpdate" parameterType="com.example.User">
insert into user (id, name, age)
values (#{id}, #{name}, #{age})
<selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="id">
select last_insert_id()
</selectKey>
on duplicate key update
<set>
<if test="name != null">name=#{name},</if>
<if test="age != null">age=#{age},</if>
</set>
</insert>
在Java代码中,可以使用MyBatis的SqlSession执行该语句:
User user = new User();
user.setId(1);
user.setName("Tom");
user.setAge(20);
SqlSession sqlSession = sqlSessionFactory.openSession();
int result = sqlSession.insert("insertOrUpdate", user);
sqlSession.commit();
sqlSession.close();
以上就是使用MyBatis实现Mysql操作存在则修改如果不存在则新增的两种实现方法的代码示例。
阅读全文