mybatis-plus SQL注入器 实现插入或更新 on duplicate key
时间: 2024-11-22 08:43:50 浏览: 21
mybatis-plus配置控制台打印完整带参数SQL语句的实现
MyBatis-Plus 是基于 MyBatis 的一款优秀的持久层框架,它提供了一种便捷的方式来操作数据库。其中,SQL 注入器(SqlInjector)可以帮助你在插入(insert)或更新(update)操作时处理主键冲突(on duplicate key),也就是通常所说的 UPSERT(即 Insert... On Duplicate Key Update)。
在 MyBatis-Plus 中,如果你想利用 SQL 注入器来实现 UPSERT,你可以通过自定义 SQL 插入语句,并在插入部分加入 `ON DUPLICATE KEY UPDATE` 子句。例如:
```java
String sql = "INSERT INTO table_name (column1, column2) VALUES (?, ?) ON DUPLICATE KEY UPDATE column1 = VALUES(column1), column2 = VALUES(column2)";
Object[] params = new Object[]{value1, value2}; // 参数值
BaseMapper<MyEntity> mapper = ...; // 获取对应的 Mapper 接口
mapper.insert(sql, params); // 执行操作
```
在这个例子中,如果表中已经存在相同的唯一键(比如 primary key 或 unique index),则只会更新指定的列,而不是抛出异常。
阅读全文