需求说明
今天在工作中遇到这样一个需求,请求参数、返回参数要以JSONArray的数据类型要存储,正好MySQL支持了json数据类型,直接存储为json类型就不需要二次转换了。
说明:持久层框架mybatis-plus,MySQL 5.7+才开始支持json数据格式。
请求参数说明数据结构如下,是一个json数组,那我们后端也采用json数组接收
[ { "order":1, "paramName":"name", "type":"string", "iseRequest":"是", "remark":"名字" }, { "order":2, "paramName":"age", "type":"int", "iseRequest":"是", "remark":"年龄" } ]
后端接收对象为:
/**
* 请求参数示例
*/
@ApiModelProperty(value="请求参数示例")
private JSONArray requestParam;
数据库中字段如下:
`request_param` json NULL COMMENT '请求参数示例',
实现
首先需要在字段上添加注解:
/**
* 请求参数示例
*/
@ApiModelProperty(value="请求参数示例")
@TableField(typeHandler = JacksonTypeHandler.class)
private JSONArray requestParam;
接下来在mapper文件上
<result property="requestParam" column="request_param"
jdbcType="JAVA_OBJECT" javaType="cn.hutool.json.JSONArray"
typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler"/>
这样最后读取也不会报错,但读不出来一直为null,还需要在实体类上加上注解
@TableName(value = "model_release",autoResultMap = true)
这样就可以对数据库的json对象进行读取了,无需进行二次解析。