mybatis plus实体类中字段映射mysql中的json格式方式
作者:小明哥带你飞 发布时间:2024-01-22 16:11:37
标签:mybatisplus,实体类,字段映射,json
mybatis plus实体类中字段映射mysql中的json格式
1.实体类中有个属性是其他对象
或者是List;在数据库中存储时使用的是mysql的json格式,此时可以用mybatis plus的一个注解
@TableField(typeHandler = JacksonTypeHandler.class)
@TableField(typeHandler = JacksonTypeHandler.class)
这样在存入是就可以把对象自动转换为json格式,
2.那么取出时怎么进行映射呢,有分为两种情况
a:当没有使用到xml时:
@Data
@Accessors(chain = true)
@TableName(value = "wx_user",autoResultMap = true)
b:当使用了xml文件时:
mybatis-plus 实体 json 处理
本文总共三个步骤
1、在数据库表定义JSON字段;
2、在实体类加上@TableName(autoResultMap = true)、在JSON字段映射的属性加上@TableField(typeHandler = FastjsonTypeHandler.class);
3、建一些业务代码进行测试;
在数据库表定义JSON字段
CREATE TABLE `extra_info` (
`id` int(10) NOT NULL AUTO_INCREMENT PRIMARY KEY,
`extra_object` json NULL,
`extra_list` json NULL,
`extra_array` json NULL
);
INSERT INTO `extra_info` VALUES (1, '{\"id\": 1, \"name\": \"2\"}', '[{\"id\": 1, \"name\": \"2\"}]', '[{\"id\": 1, \"name\": \"2\"}]');
在实体类加上@TableName(autoResultMap = true)、在JSON字段映射的属性加上@TableField(typeHandler = FastjsonTypeHandler.class)
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
import java.io.Serializable;
import java.util.List;
@TableName(autoResultMap = true)
public class ExtraInfo implements Serializable {
@TableId(type = IdType.AUTO)
private Integer id;
@TableField(typeHandler = FastjsonTypeHandler.class)
private ExtraNode extraObject;
@TableField(typeHandler = FastjsonTypeHandler.class)
private List<ExtraNode> extraList;
@TableField(typeHandler = FastjsonTypeHandler.class)
private ExtraNode[] extraArray;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public ExtraNode getExtraObject() {
return extraObject;
}
public void setExtraObject(ExtraNode extraObject) {
this.extraObject = extraObject;
}
public List<ExtraNode> getExtraList() {
return extraList;
}
public void setExtraList(List<ExtraNode> extraList) {
this.extraList = extraList;
}
public ExtraNode[] getExtraArray() {
return extraArray;
}
public void setExtraArray(ExtraNode[] extraArray) {
this.extraArray = extraArray;
}
}
建一些业务代码进行测试
import java.io.Serializable;
public class ExtraNode implements Serializable {
private Integer id;
private String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.springframework.stereotype.Repository;
@Repository
public interface ExtraInfoMapper extends BaseMapper<ExtraInfo> {
}
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
@RequestMapping("/test")
public class TestController {
@Autowired
private ExtraInfoMapper extraInfoMapper;
@GetMapping
public List<ExtraInfo> listAll() {
return this.extraInfoMapper.selectList(new LambdaQueryWrapper<>());
}
}
运行结果:
[
{
"id": 1,
"extraObject": { "id": 1, "name": "2" },
"extraList": [
{ "name": "2", "id": 1 }
],
"extraArray": [
{ "id": 1, "name": "2" }
]
}
]
来源:https://blog.csdn.net/qq_25983579/article/details/109460592
0
投稿
猜你喜欢
- 本文实例讲述了python生成器用法。分享给大家供大家参考,具体如下:1. 生成器利用迭代器,我们可以在每次迭代获取数据(通过next()方
- MASK图像掩膜处理在图像操作中有时候会用到掩膜处理,如果使用遍历法掩膜图像ROI区域对于python来讲是很慢的,所以我们要找到一种比较好
- # coding:utf-8import urllibimport urllib2import cookielibfrom bs4 impo
- 现在只有山东、北京、上海等发达地区有考Python的这个举动,其他地区暂时还没有。首先,Python类似于c++,Python是一种面向对象
- 篇首语:原来改mdb为asp就能防下载是鬼话。 引子:昨天和animator试验了一下,把data.mdb文件改名为data.as
- 对numpy 矩阵进行通道间求均值给定一个3x2x2得矩阵,得到一个2x2的矩阵,其中对应元素是通道间的均值import numpy as
- 在数据预处理过程中可能会遇到这样的问题,如下图:数据中某一个key有多组数据,如何分别对每个key进行相同的运算?dataframe里面给出
- 本文主要给大家讲解了Apriori算法的基础知识以及Apriori算法python中的实现过程,以下是所有内容:1. Apriori算法简介
- 根据导师作业安排,在学习数字图像处理(刚萨雷斯版)第六章 彩 * 像处理 中的彩色模型后,导师安排了一个比较有趣的作业:融合原理为:1 注意:
- 不久前因业务需要,我在自己的笔记本中安装了搜霸。当时一个做平面的朋友过来和我做一些设计交流,我在笔记本前准备输入一个网址,他靠近我的电脑,大
- 本文实例讲述了Python基于二分查找实现求整数平方根的方法。分享给大家供大家参考,具体如下:x=int(raw_input('pl
- 一、背景实际工作中会有一些耗时的异步任务需要使用定时调度,比如发送邮件,拉取数据,执行定时脚本通过celery 实现调度主要思想是 通过引入
- 我就废话不多说了,大家还是直接看代码吧~# 用一行代码实现for循环初始化数组o = 10b = [ o + u for u in rang
- 开发动机:最近用手机QQ浏览器下载了一些视频,视频越来越多,占用了手机内存,于是想把下载的视频传到电脑上保存,可后来发现这些视频都是m3u8
- 无参数函数先解释一下时间戳,所谓时间戳,即自1970年1月1日00:00:00所经历的秒数,然后就可以理解下面的函数了。下面代码默认from
- froglt 的站点:http://www.go2here.net 欢迎转载,请注明出处,未经作者允许,禁止一切商业应用。这是即
- ConfigParser模块在Python3修改为configparser,这个模块定义了一个ConfigeParser类,该类的作用是让配
- 也许你刚刚来到一家公司,他们希望进行一些“可用性”工作。你可能是一名UI设计师,业务分析师,或前端开发人员,一名产品经理,或者负责用户体验部
- 一、CrawlSpider类介绍1.1 引入使用scrapy框架进行全站数据爬取可以基于Spider类,也可以使用接下来用到的CrawlSp
- 什么是结构体Go语言中没有“类”的概念,也不支持“类”的继承