MybatisPlus 添加返回复杂类型字段数据

在使用MybatisPlus时,遇到插入包含List<String>和List<Flavors>等复杂类型字段的数据时,需要添加FastjsonTypeHandler处理。然而,查询后发现这些字段值为null。为了解决这个问题,可以启用自动结果映射,通过@TableName(autoResultMap=true)注解让MyBatis-Plus自动生成结果映射,避免手动配置,简化代码。
摘要由CSDN通过智能技术生成

MybatisPlus 添加返回复杂类型字段数据

  • 实体类 FoodMenu
@Data
@TableName
@ApiModel("食品菜单")
public class FoodMenu {
	@TableId(type = IdType.ASSIGN_ID)
	private Long id;
	@ApiModelProperty("食品名称")
	private String name;
	@ApiModelProperty("食品图片")
	private List<String> images;
	@ApiModelProperty("口味")
	private List<Flavors> flavors;
	@CreatedAt
	@ApiModelProperty("创建时间")
	private LocalDateTime createdAt;
}

@Data
@ApiModel("食品口味")
public class Flavors{
	@ApiModelProperty("口味名称")
	private String title;
	@ApiModelProperty("标签")
	private List<String> tags;
}

在这样的情况下,使用BaseMapper中的insert进行添加时会抛出querying database. Cause: java.lang.IllegalStateException: 异常,为了解决这个异常,需要对复杂类型的字段加上类型处理器FastjsonTypeHandler 如上方的images与flavors字段来举例:
FastjsonTypeHandler 是属于 com.baomidou.mybatisplus.extension.handlers包下的

	@TableField(typeHandler = FastjsonTypeHandler.class)
	@ApiModelProperty("食品图片")
	private List<String> images;
	@TableField(typeHandler = FastjsonTypeHandler.class)
	@ApiModelProperty("口味")
	private List<Flavors> flavors;

但是这时候有有一个问题,当时用BaseMapper 中的任何查询方法进行查询时,例如 selectById 查出来的数据imagesflavors 为null,这时候我们需要让这个实体类自动映射结果集,需要加上@TableName(autoResultMap = true),这个的意思就是让 MyBatis-Plus 自动生成结果映射,确保正确地将数据库中的字段值映射到实体类的相应属性上,避免手动编写 @Results 注解,从而简化了代码编写。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值