MyBatis-Puls如何处理Json数据类型

MyBatis Puls中已经定义了三种处理方式:FastjsonTypeHandler,GsonTypeHandler,JacksonTypeHandler我们可以直接使用。

在对应的位置添加属性 autoResultMap = true和typeHandler = FastjsonTypeHandler.class即可。

方式一、

import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import java.io.Serializable;

import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;

@TableName(value = "sys_user", autoResultMap = true)
public class SysUser extends Model<SysUser>{
    
    
    
    private Integer id;
    
    private String userName;
    
    @TableField(typeHandler = FastjsonTypeHandler.class)
    private JSONArray roles;

}

方式二、

<resultMap id="sysUserMap" type="com.jayknoxqu.entity.SysUser" autoMapping="true">
    <id column="user_id" property="userId"/>
    <result column="user_name" property="userName"/>
    <result column="roles" property="role" typeHandler="com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler"/>
</resultMap>

方式三、
异常:Data truncation: Cannot create a JSON value from a string with CHARACTER SET ‘binary’

注意: set 处理 typeHandler 需要设置 mapping

/**
 * 设置 更新 SQL 的 SET 片段
 *
 * @param condition 是否加入 set
 * @param column    字段
 * @param val       值
 * @param mapping   例: javaType=int,jdbcType=NUMERIC,typeHandler=xxx.xxx.MyTypeHandler
 * @return children
 */
Children set(boolean condition, R column, Object val, String mapping);

自带的updateById(),saveOrUpdate()等方法则不需要

猜你喜欢

转载自blog.csdn.net/qq_43842093/article/details/132381352