最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mybatis plus實(shí)體類中字段映射mysql中的json格式方式

 更新時(shí)間:2021年08月31日 11:16:37   作者:小明哥帶你飛  
這篇文章主要介紹了mybatis plus實(shí)體類中字段映射mysql中的json格式方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

mybatis plus實(shí)體類中字段映射mysql中的json格式

1.實(shí)體類中有個(gè)屬性是其他對(duì)象

或者是List;在數(shù)據(jù)庫(kù)中存儲(chǔ)時(shí)使用的是mysql的json格式,此時(shí)可以用mybatis plus的一個(gè)注解

@TableField(typeHandler = JacksonTypeHandler.class) 

在這里插入圖片描述

@TableField(typeHandler = JacksonTypeHandler.class)

這樣在存入是就可以把對(duì)象自動(dòng)轉(zhuǎn)換為json格式,

2.那么取出時(shí)怎么進(jìn)行映射呢,有分為兩種情況

  • a:當(dāng)沒(méi)有使用到xml時(shí):

在這里插入圖片描述

@Data
@Accessors(chain = true)
@TableName(value = "wx_user",autoResultMap = true)
  • b:當(dāng)使用了xml文件時(shí):

mybatis-plus 實(shí)體 json 處理

本文總共三個(gè)步驟

  • 1、在數(shù)據(jù)庫(kù)表定義JSON字段;
  • 2、在實(shí)體類加上@TableName(autoResultMap = true)、在JSON字段映射的屬性加上@TableField(typeHandler = FastjsonTypeHandler.class);
  • 3、建一些業(yè)務(wù)代碼進(jìn)行測(cè)試;

在數(shù)據(jù)庫(kù)表定義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\"}]');

在實(shí)體類加上@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;
    }
}

建一些業(yè)務(wù)代碼進(jìn)行測(cè)試

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<>());
    }
}

運(yùn)行結(jié)果:

[
  {
    "id": 1,
    "extraObject": { "id": 1, "name": "2" },
    "extraList": [
      { "name": "2", "id": 1 }
    ],
    "extraArray": [
      { "id": 1, "name": "2" }
    ]
  }
]

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Springboot下載excel文件中文名亂碼問(wèn)題及解決

    Springboot下載excel文件中文名亂碼問(wèn)題及解決

    這篇文章主要介紹了Springboot下載excel文件中文名亂碼問(wèn)題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Java中Arraylist的最大長(zhǎng)度

    Java中Arraylist的最大長(zhǎng)度

    這篇文章主要介紹了Java中Arraylist的最大長(zhǎng)度,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • Springboot接口項(xiàng)目如何使用AOP記錄日志

    Springboot接口項(xiàng)目如何使用AOP記錄日志

    這篇文章主要介紹了Springboot接口項(xiàng)目如何使用AOP記錄日志,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Java中5種輸出換行方式小結(jié)

    Java中5種輸出換行方式小結(jié)

    在Java中,輸出換行符是一項(xiàng)非常基本的操作,它在控制臺(tái)中輸出文本時(shí)非常常見(jiàn),本文主要介紹了Java中5種輸出換行方式小結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-02-02
  • SpringCloud Gateway自定義filter獲取body中的數(shù)據(jù)為空的問(wèn)題

    SpringCloud Gateway自定義filter獲取body中的數(shù)據(jù)為空的問(wèn)題

    這篇文章主要介紹了SpringCloud Gateway自定義filter獲取body中的數(shù)據(jù)為空,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-10-10
  • Java直接內(nèi)存和堆內(nèi)存的關(guān)系

    Java直接內(nèi)存和堆內(nèi)存的關(guān)系

    在Java編程中,內(nèi)存管理是一個(gè)重要的話題,本文介紹了Java中兩種主要內(nèi)存類型:堆內(nèi)存和直接內(nèi)存,堆內(nèi)存是JVM管理的主要內(nèi)存區(qū)域,感興趣的朋友跟隨小編一起看看吧
    2024-09-09
  • 最新評(píng)論

    株洲市| 瓦房店市| 宁强县| 兴化市| 铜鼓县| 高唐县| 封开县| 汉沽区| 叶城县| 玉环县| 涪陵区| 武平县| 亚东县| 合肥市| 西城区| 上林县| 天津市| 台东市| 固始县| 精河县| 淮南市| 平山县| 柞水县| 西畴县| 拉萨市| 襄樊市| 上栗县| 邹城市| 屏南县| 永昌县| 汤阴县| 高邑县| 武汉市| 呼图壁县| 卢湾区| 林芝县| 绍兴市| 大丰市| 平凉市| 广安市| 巴楚县|