Mybatis-Plus关于MYSQL中JSON字段的操作
Mybatis-Plus关于MYSQL中JSON字段的操作
1. Mysql 相关字段 2. 相关字段插入的JSON内容
3. 修改对应实体类
内容三中我们相关的两个字段是在mysql中是json类型,为了我们方便操作我们可以自定义封装对象来为我们的JSON字段进行接收和传递。下面的两个字段公用了一个类型的封装对象,如下:PremaritalAndPremaritalInfo。这里我们就可以写成静态类封装到当前实体类下,也可以单独写一个类进行封装。
@TableField(value = “premarital”, typeHandler = JacksonTypeHandler.class) typeHandler = JacksonTypeHandler.class:因为这里是Json类型的字段接收,我们为其添加一个Json类型的TypeHandler,TypeHandler是MybatisPlus中的字段处理器。我们使用它就可以解决实体类属性与表字段的处理。
@Data @EqualsAndHashCode(callSuper = true) @AllArgsConstructor @NoArgsConstructor @TableName(value = "t_ppaal",autoResultMap = true) public class Ppaal extends BaseEntity implements Serializable { /** /** * 婚前检出疾病分类 HQ003 */ @TableField(value = "premarital", typeHandler = JacksonTypeHandler.class) @ApiModelProperty(value = "婚前检出疾病分类HQ003") private PremaritalAndPremaritalInfo premarital; /** * 孕前风险因素 HQ004 */ @TableField(value = "progestation", typeHandler = JacksonTypeHandler.class) @ApiModelProperty(value = "孕前风险因素HQ004") private PremaritalAndPremaritalInfo progestation; /** * 对json字段的封装 */ @Data public static class PremaritalAndPremaritalInfo implements Serializable { private List<String> woman; private List<String> man; } }
4. 修改对应mapper.xml
这里需要修改的是jdbcType、typeHandler、javaType如果没有就添加一下好了 首先修改对应的typeHandler,这里要和实体类中的一样。 设置javaType,javaType中就是我们封装的实体因为是封装在了实体内部可以用$符号定义出来 jdbcType,因为jdbcType中是没有对应Json的类型。所以我们就自定义了接收Json类型的对象,因为是Java语言所以jdbcType我们就定义为JAVA_OBJECT.
<result column="premarital" jdbcType="JAVA_OBJECT" property="premarital" typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler" javaType="com.esmooc.life.marriage.entity.Ppaal$PremaritalAndPremaritalInfo"/> <result column="progestation" jdbcType="JAVA_OBJECT" property="progestation" typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler" javaType="com.esmooc.life.marriage.entity.Ppaal$PremaritalAndPremaritalInfo"/>
此篇内容为工作中遇到的问题,也是不断打怪升级的过程,希望各位看官都多交流并提出宝贵的建议。
下一篇:
外模式、模式、内模式