1.添加关联表,这是很简单的方法,也很常用。
2.将新增字段用Json存储在数据库原有字段中
3.在设计代码之初,采用Map<>接取数据然后向数据库插入数据,实现如下:
用Map<String,Object>接受前端传入的数据,
@PostMapping("/save")
public AjaxJson insert(@RequestBody Map<String,Object> map) {
try {
service.insert(map);
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
}
return AjaxJson.success();
}
然后将数据分别获取在两个list集合中,传入mapper方法
@Transactional
public void insert(Map<String, Object> map) throws IllegalAccessException {
List<String> values = new ArrayList<>();
List<String> names = new ArrayList<>();
for (Map.Entry<String, Object> entry : map.entrySet()) {
names.add(entry.getKey());
values.add(entry.getValue().toString());
}
values.add(UUID.randomUUID().toString());
names.add("id");
mapper.insertWithObject(values, names);
}
用sql插入
<insert id="insertWithObject">
INSERT INTO table
<trim prefix="(" suffix=")" suffixOverrides=",">
<foreach collection="names" item="name" separator=",">
${name}
</foreach>
</trim>
VALUES
<trim prefix="(" suffix=")" suffixOverrides=",">
<foreach collection="values" item="value" separator=",">
#{value}
</foreach>
</trim>
</insert>
注:前端传入参数,属性名称用数据库字段来命名,比如创建时间create_by,而不能用createBy