springboot+mybatis批量更新,通过两个字段找到对应字段将原有值为000011110000中的某一小段更改成前端传过来的值,例如:后面0000改为1111
时间: 2024-05-08 11:16:36 浏览: 127
基于SpringBoot+MyBatis实现数据库存取字段的自动加解密源码(课程设计).zip
可以通过以下步骤实现:
1. 定义一个 MyBatis 的 mapper 接口,声明一个批量更新的方法,如下:
```java
public interface MyMapper {
void batchUpdate(@Param("list") List<UpdateParam> list);
}
```
其中 UpdateParam 是一个包含更新信息的实体类,如下:
```java
public class UpdateParam {
private String field1;
private String field2;
private String oldValue;
private String newValue;
// getter/setter
}
```
2. 在 mapper.xml 文件中编写批量更新的 SQL,如下:
```xml
<update id="batchUpdate">
<foreach collection="list" item="param" separator=";">
UPDATE my_table
SET my_field = CONCAT(SUBSTR(my_field, 1, POSITION(#{param.oldValue} IN my_field) - 1),
#{param.newValue},
SUBSTR(my_field, POSITION(#{param.oldValue} IN my_field) + LENGTH(#{param.oldValue})))
WHERE field1 = #{param.field1} AND field2 = #{param.field2}
</foreach>
</update>
```
其中,使用了 MySQL 的 SUBSTR、POSITION、CONCAT、LENGTH 函数来实现对 my_field 的更新。
3. 在代码中调用批量更新方法,如下:
```java
@Autowired
private MyMapper myMapper;
public void updateBatch(List<UpdateParam> list) {
myMapper.batchUpdate(list);
}
```
这样就可以实现通过两个字段找到对应字段将原有值为 000011110000 中的某一小段更改成前端传过来的值的功能了。
阅读全文