前端要求对上传的文件列表保存并返回文件信息对象的数组,后端把其作为 Mysql中Json数据类型进行保存。对数据库 Json 类型保存,并与List对象相互映射,需要相应一些不同的处理。项目采用 SpringBoot + Mybatis-plus
借助 AI编程(豆包),使用提示词,给出的答案都不是很简单。
我们现在实现一种最间接的。当然需用使用Mybatis-plus的高级编程 QueryWrapper,若用 mybatis xml中写sql的模式,则需要进一步配置数据库表字段与类字段之间的映射,如果是一个大对象,为了一个json字段配置整个映射关系显得笨拙。
开始实现步骤:
①. 表字段为json类型
②. 创建一个FileInfo类
/* 文件信息实体
*/
@Data
public class FileInfo {
// 文件编码
private String fileCode;
// 文件名称
private String fileName;
}
③. 对应数据表的类,如 Business 中有一个字段为 List<FileInfo> fileInfoList , 配上相应的 Json转换处理注解 @TableField(typeHandler =JacksonTypeHandler.class) 与 @TableName(autoResultMap = true) 即可。
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;
/**
* 业务主实体(对应t_business表)
* ✅ 核心:autoResultMap = true
*/
@Data
@TableName(value = "t_business",autoResultMap = true) // 绑定数据库表名
public class Business {
@TableId(type = IdType.AUTO) // 主键自增
private Long id;
// 业务名称
private String bizName;
// ✅ 关键:List数组字段
TableField(typeHandler = JacksonTypeHandler.class)
private List<FileInfo> fileInfoList;
// 创建时间
private LocalDateTime createTime;
}
④查询与保存必须通过 BaseMapper 继承的方法,即复杂查询使用 QueryWrapper 或 LambdaQueryWrapper (推荐)
有关这方面的知识请自行查阅相关文档即可。

2175

被折叠的 条评论
为什么被折叠?



