mysql判断主键值是否存在,如果存在则更新,不存在则新增

ON DUPLICATE KEY UPDATE 可以达到以下目的:
向数据库中插入一条记录:
若该数据的主键值/ UNIQUE KEY 已经在表中存在,则执行更新操作, 即UPDATE 后面的操作。
否则插入一条新的记录。
示例:

Step1 . 创建表,插入测试数据

SET FOREIGN_KEY_CHECKS=0;


– Table structure for mRowUpdate


DROP TABLE IF EXISTS mRowUpdate;
CREATE TABLE mRowUpdate (
  id int(11) NOT NULL,
  value varchar(255) DEFAULT NULL,
  PRIMARY KEY (id)
) ENGINE=InnoDB;


– Records of mRowUpdate


INSERT INTO mRowUpdate VALUES (‘1’, ‘sss’);
INSERT INTO mRowUpdate VALUES (‘2’, ‘szh’);
INSERT INTO mRowUpdate VALUES (‘3’, ‘9999’);
SET FOREIGN_KEY_CHECKS=1;

Step2 .测试 ON DUPLICATE KEY UPDATE 的使用方法:

INSERT INTO mRowUpdate(id,value) VALUES(3, ‘SuperMan’) ON DUPLICATE KEY UPDATE value=‘SuperMan’;

在MyBatis中,如果你想要实现在新增操作时,如果主键存在则进行修改,不存在则进行新增,可以通过以下步骤来实现: 1. 在数据库表的定义中,将主键字段设置为唯一索引。这样可以确保主键的唯一性。 2. 创建一个Mapper接口,并在接口中定义两个方法:一个用于新增操作,另一个用于修改操作。 ```java public interface UserMapper { void insertUser(User user); void updateUser(User user); } ``` 3. 在对应的Mapper XML文件中,实现这两个方法。 ```xml <insert id="insertUser" parameterType="User"> INSERT INTO user (id, name, age) VALUES (#{id}, #{name}, #{age}) </insert> <update id="updateUser" parameterType="User"> UPDATE user SET name = #{name}, age = #{age} WHERE id = #{id} </update> ``` 4. 在Java代码中使用MyBatis的SqlSession执行新增或修改操作。 ```java User user = new User(); user.setId(1); // 设置主键值 user.setName("John"); user.setAge(25); UserMapper userMapper = sqlSession.getMapper(UserMapper.class); // 判断主键是否存在 User existingUser = userMapper.getUserById(user.getId()); if (existingUser == null) { // 主键不存在,执行新增操作 userMapper.insertUser(user); } else { // 主键存在,执行修改操作 userMapper.updateUser(user); } sqlSession.commit(); ``` 通过以上步骤,你可以实现在新增操作时,根据主键存在与否进行修改或新增的逻辑判断。需要注意的是,你需要自行实现获取主键对应的数据的方法,例如`getUserById()`方法,用于判断主键是否存在
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值