数据库json格式对应的实体类参数

数据库5.7版本之后支持json类型的参数,但实体类参数定义不知道怎么做。

如果需要对json的内容进行校验规定,可以封装一个实体类接收,然后转为json存入

如果不需要校验,仅仅是为了存入然后查询使用

@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. jdbcTypetypeHandler如果不配合@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. 定义在insertupdatesql的#{property}里的property后面(例:#{property,typehandler=xxx.xxx.xxx}),只作用于设置值 而除了这两种直接指定typeHandler,mybatis有一个全局的扫描你自己的typeHandler包的配置,这是根据你的property的类型去找typeHandler并使用.

另外: JacksonTypeHandler.class还有一个FastjsonTypeHandler.class。

这二者的区别百度说:FastjsonTypeHandler不支持 MySQL JSON 解析,而JacksonTypeHandler支持。

姑且理解为:JacksonTypeHandler功能更强大。


目前仅仅知道实现,不明白原理。姑且记载,待后研究。

  • 5
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
可以通过以下步骤将JSON数据转换成实体类: 1. 创建一个与JSON数据结构相匹配的Java类,该类应该包含与JSON键相对应的属性。 2. 使用JSON库(例如Jackson、Gson等)将JSON数据转换为Java对象。 3. 使用getter和setter方法访问Java对象的属性。 以下是一个示例代码,以说明如何将JSON数据转换为Java对象: 假设我们有以下JSON数据: { "name": "John", "age": 30, "address": { "street": "123 Main St", "city": "New York", "state": "NY", "zip": "10001" } } 并且我们已经创建了一个名为Person的Java类,该类包含name、age和address属性。 Address类也已经创建,其中包含street、city、state和zip属性。 我们可以使用Jackson库将JSON数据转换为Person对象: ``` ObjectMapper objectMapper = new ObjectMapper(); String json = "{\"name\":\"John\",\"age\":30,\"address\":{\"street\":\"123 Main St\",\"city\":\"New York\",\"state\":\"NY\",\"zip\":\"10001\"}}"; Person person = objectMapper.readValue(json, Person.class); ``` 在此示例中,我们首先创建了一个ObjectMapper对象,该对象用于将JSON数据转换为Java对象。然后,我们将JSON数据作为字符串传递给readValue()方法,并指定要将其转换为的Java类(Person类)。最后,我们将返回的Person对象存储在person变量中。 现在,我们可以使用getter和setter方法访问person对象的属性: ``` String name = person.getName(); int age = person.getAge(); String street = person.getAddress().getStreet(); String city = person.getAddress().getCity(); String state = person.getAddress().getState(); String zip = person.getAddress().getZip(); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值