spring boot mybatis plus 判断一个值在数据库是否存在,存在给后面加一个数字,不能和数据库重复
时间: 2024-02-18 21:06:21 浏览: 89
您可以使用 MyBatis-Plus 的 LambdaWrapper 来实现您的需求。示例代码如下:
```java
// 假设您要查询的表名为 user,要查询的字段为 value
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.likeRight(User::getValue, value);
User user = userService.getOne(wrapper);
if (user == null) {
// 如果查询结果为 null,则说明该值在数据库中不存在,直接插入一条新纪录,value 的值为 value1
User newUser = new User();
newUser.setValue(value + "1");
userService.save(newUser);
} else {
// 如果查询结果不为 null,则说明该值在数据库中已经存在,根据 value 的值来进行更新
String oldValue = user.getValue();
String newValue = getNewValue(oldValue, value);
User newUser = new User();
newUser.setValue(newValue);
userService.save(newUser);
}
private String getNewValue(String oldValue, String value) {
String newValue = oldValue;
int index = oldValue.lastIndexOf(value);
if (index != -1) {
String suffix = oldValue.substring(index + value.length());
try {
int num = Integer.parseInt(suffix);
newValue = oldValue.substring(0, index) + value + (num + 1);
} catch (NumberFormatException e) {
newValue = oldValue + "1";
}
} else {
newValue = oldValue + "1";
}
return newValue;
}
```
上述代码中,我们首先使用 LambdaWrapper 来查询数据库中是否已经存在一个以 value 开头的记录。如果查询结果为 null,则说明该值在数据库中不存在,直接插入一条新纪录,value 的值为 value1;否则,根据查询结果中 value 的值来进行更新,将 value 后面的数字加 1,如果 value 后面没有数字,则默认为 1。注意,为了避免和数据库中已有的记录重复,我们使用了 likeRight 来进行模糊查询。
阅读全文