数据库json格式对应的实体类参数
数据库5.7版本之后⽀持json类型的参数,但实体类参数定义不知道怎么做。
如果需要对json的内容进⾏校验规定,可以封装⼀个实体类接收,然后转为json存⼊
如果不需要校验,仅仅是为了存⼊然后查询使⽤:
parameter数据类型@TableField(typeHandler = JacksonTypeHandler.class)
private JSONObject des;
可以使⽤fastjson的JSONobject接收,然后加上@TableField(typeHandler = JacksonTypeHandler.class)注解。
还必须在实体类上⾯加上注解:
@TableName(autoResultMap = true)
到这⾥就OK了,可以正常的接收json字段的参数。例如这样传参:
{
"name":"liubei",
"age":12,
"des":{"name1":"liubei"}
}
如果不加这个注解,可以正常添加json字段,但是查询为null。
MybatisPlus官⽅定义:
关于`jdbcType`和`typeHandler`以及`numericScale`的说明:
numericScale只⽣效于 update 的sql. jdbcType和typeHandler如果不配合@TableName#autoResultMap = true⼀起使⽤,也只⽣效于update 的sql. 对于typeHandler如果你的字段类型和set进去的类型为equals关系,则只需要让你的typeHandler让Mybatis加载到即可,不需要使⽤注解
MybatisPlus官⽅定义这个注解:
关于`autoResultMap`的说明:
mp会⾃动构建⼀个ResultMap并注⼊到mybatis⾥(⼀般⽤不上).下⾯讲两句: 因为mp底层是mybatis,所以⼀些mybatis的常识你要知道,mp只是帮你注⼊了常⽤crud到mybatis⾥ 注⼊之前可以说是动态的(根据你entity的字段以及注解变化⽽变化),但是注⼊之后是静态的(等于你写在xml的东西) ⽽对于直接指定typeHandler,mybatis只⽀持你写在2个地⽅:
1. 定义在resultMap⾥,只作⽤于select查询的返回结果封装
2. 定义在insert和update sql的#{property}⾥的property后⾯(例:#{property,x}),只作⽤于设置值 ⽽除了这两种
直接指定typeHandler,mybatis有⼀个全局的扫描你⾃⼰的typeHandler包的配置,这是根据你的property的类型去
typeHandler并使⽤.
另外: JacksonTypeHandler.class还有⼀个FastjsonTypeHandler.class。
这⼆者的区别百度说:FastjsonTypeHandler不⽀持 MySQL JSON 解析,⽽JacksonTypeHandler⽀持。
姑且理解为:JacksonTypeHandler功能更强⼤。
⽬前仅仅知道实现,不明⽩原理。姑且记载,待后研究。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。