前端要求对上传的文件列表保存并返回文件信息对象的数组,后端把其作为 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 (推荐)

有关这方面的知识请自行查阅相关文档即可。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐