mybatis plus实体类中字段映射mysql中的json格式方式

 更新时间:2021年08月31日 11:16:37   作者:小明哥带你飞  
这篇文章主要介绍了mybatis plus实体类中字段映射mysql中的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" }
    ]
  }
]

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • JavaEE开发基于Eclipse的环境搭建以及Maven Web App的创建

    JavaEE开发基于Eclipse的环境搭建以及Maven Web App的创建

    本文主要介绍了如何在Eclipse中创建的Maven Project,本文是JavaEE开发的开篇,也是基础。下面内容主要包括了JDK1.8的安装、JavaEE版本的Eclipse的安装、Maven的安装、Tomcat 9.0的配置、Eclipse上的M2Eclipse插件以及STS插件的安装。
    2017-03-03
  • Java实现文件上传的方法总结

    Java实现文件上传的方法总结

    这篇文章主要为大家介绍了三种Java实现文件上传的方法,文中的示例代码讲解详细,对我们的学习或工作有一定的借鉴价值,感兴趣的可以了解一下
    2023-04-04
  • Java调用Python代码的几种方法小结

    Java调用Python代码的几种方法小结

    Python语言有丰富的系统管理、数据处理、统计类软件包,因此从java应用中调用Python代码的需求很常见、实用,本文介绍几种方法从java调用Python代码,从而最大化利用两个语言的优势,需要的朋友可以参考下
    2025-01-01
  • Cors实现java后端完全跨域实例

    Cors实现java后端完全跨域实例

    本篇文章主要介绍了Cors实现java后端完全跨域实例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • Springboot下载excel文件中文名乱码问题及解决

    Springboot下载excel文件中文名乱码问题及解决

    这篇文章主要介绍了Springboot下载excel文件中文名乱码问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-05-05
  • Java中Arraylist的最大长度

    Java中Arraylist的最大长度

    这篇文章主要介绍了Java中Arraylist的最大长度,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02
  • Springboot接口项目如何使用AOP记录日志

    Springboot接口项目如何使用AOP记录日志

    这篇文章主要介绍了Springboot接口项目如何使用AOP记录日志,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • Java中5种输出换行方式小结

    Java中5种输出换行方式小结

    在Java中,输出换行符是一项非常基本的操作,它在控制台中输出文本时非常常见,本文主要介绍了Java中5种输出换行方式小结,具有一定的参考价值,感兴趣的可以了解一下
    2024-02-02
  • SpringCloud Gateway自定义filter获取body中的数据为空的问题

    SpringCloud Gateway自定义filter获取body中的数据为空的问题

    这篇文章主要介绍了SpringCloud Gateway自定义filter获取body中的数据为空,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • Java直接内存和堆内存的关系

    Java直接内存和堆内存的关系

    在Java编程中,内存管理是一个重要的话题,本文介绍了Java中两种主要内存类型:堆内存和直接内存,堆内存是JVM管理的主要内存区域,感兴趣的朋友跟随小编一起看看吧
    2024-09-09

最新评论