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

使用mybatisplus接收mysql字段為json類型的數(shù)據(jù)方式

 更新時間:2024年04月03日 09:37:23   作者:深藍(lán)格調(diào)_  
這篇文章主要介紹了使用mybatisplus接收mysql字段為json類型的數(shù)據(jù)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

一.數(shù)據(jù)庫設(shè)計

CREATE TABLE `inv_learning_examination_questions`  (
  `id` bigint(20) NOT NULL,
  `title` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '題目',
  `options` json NULL COMMENT '選項',
  `standard_answer` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '標(biāo)準(zhǔn)答案',
  `answer_analysis` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '答案解析',
  `open_range` tinyint(4) NULL DEFAULT NULL COMMENT '開放范圍',
  `business_area` tinyint(4) NULL DEFAULT NULL COMMENT '業(yè)務(wù)領(lǐng)域',
  `difficulty_level` tinyint(4) NULL DEFAULT NULL COMMENT '難度等級',
  `topic_type` tinyint(4) NULL DEFAULT NULL COMMENT '選題類型',
  `views` int(11) NULL DEFAULT NULL COMMENT '瀏覽量',
  `collect` int(11) NULL DEFAULT NULL COMMENT '收藏量',
  `status` tinyint(4) NULL DEFAULT NULL COMMENT '發(fā)布狀態(tài)',
  `release_time` datetime(0) NULL DEFAULT NULL COMMENT '發(fā)布時間'
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic;

二.實體類

(切記實體類@TableName一定要加上autoResultMap = true屬性,否則查不出來該屬性的值)

package com.innovation.desk.domain;
 
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.innovation.common.base.BaseLLEntity;
import com.innovation.common.utils.DateUtil;
import com.innovation.desk.handler.OptionHandler;
import lombok.Data;
import lombok.EqualsAndHashCode;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import org.springframework.format.annotation.DateTimeFormat;
 
import java.util.Date;
import java.util.List;
 
/**
 * LearningExaminationQuestions實體類
 *
 * @author admin
 * @since 2023/03/03
 */
@Data
@TableName(value = "inv_learning_examination_questions",autoResultMap = true)
@EqualsAndHashCode(callSuper = true)
@ApiModel(value = "LearningExaminationQuestions對象", description = "LearningExaminationQuestions對象")
public class LearningExaminationQuestions extends BaseLLEntity {
 
    private static final long serialVersionUID = 1L;
 
    @ApiModelProperty(value = "題目")
    private String title;
 
    @TableField(typeHandler = OptionHandler.class)
    @ApiModelProperty(value = "選項")
    private List<Option> options;
 
    @TableField(typeHandler = FastjsonTypeHandler.class)
    @ApiModelProperty(value = "標(biāo)準(zhǔn)答案")
    private List<String> standardAnswer;
 
    @ApiModelProperty(value = "答案解析")
    private String answerAnalysis;
 
    @ApiModelProperty(value = "開放范圍")
    private Integer openRange;
 
    @ApiModelProperty(value = "業(yè)務(wù)領(lǐng)域")
    private Integer businessArea;
 
    @ApiModelProperty(value = "難度等級")
    private Integer difficultyLevel;
 
    @ApiModelProperty(value = "選題類型")
    private Integer topicType;
 
    @ApiModelProperty(value = "瀏覽量")
    private Integer views;
 
    @ApiModelProperty(value = "收藏量")
    private Integer collect;
 
    @ApiModelProperty(value = "發(fā)布狀態(tài) 0.待發(fā)布 1.已發(fā)布")
    private Integer status;
 
    @ApiModelProperty(value = "發(fā)布狀態(tài) 0.待發(fā)布 1.已發(fā)布")
    @DateTimeFormat(pattern = DateUtil.PATTERN_DATETIME)
    @JsonFormat(pattern = DateUtil.PATTERN_DATETIME, timezone = "GMT+8")
    private Date releaseTime;
}

1.如果接收參數(shù)是實體類或List<String>

可以直接使用mybatisplus自帶的解析處理器即可

例如在屬性上添加

@TableField(typeHandler = FastjsonTypeHandler.class)

此處FastjsonTypeHandler有多個類型可供選擇:

比如AbstractJsonTypeHandler,AbstractSqlParserHandler,FastjsonTypeHandler,GsonTypeHandler,JacksonTypeHandler,MybatisEnumTypeHandler

2.如果接收參數(shù)是個List<實體類>

這里需要注意:

以上提供的解析器不能提供完全解析

這里你需要自定義解析器做定制化解析

以下是解析器的源碼

原因:

type屬性被注入進(jìn)來的只是List的字節(jié)碼文件,通過parse方法只能將json轉(zhuǎn)化為List<JsonObject>對象,而JsonObject不能強轉(zhuǎn)為相應(yīng)的實體類,所以在獲取到解析后的對象遍歷的時候會報類型轉(zhuǎn)換錯誤異常,這時可以重寫此handler的parse方法來實現(xiàn)自己的目的,以下是將json轉(zhuǎn)化為List<Option>的處理器

/**
 *  自定義CardContent轉(zhuǎn)換處理類
 * @author Administrator
 */
public class OptionHandler extends FastjsonTypeHandler {
 
    public OptionHandler(Class<?> type) {
        super(type);
    }
 
    @Override
    protected Object parse(String json) {
        return JSON.parseArray(json, Option.class);
    }
 
    @Override
    protected String toJson(Object obj) {
        return super.toJson(obj);
    }
}

添加完成后只需在實體類的對應(yīng)屬性上添加注解

@TableField(typeHandler = OptionHandler.class)即可實現(xiàn)解析

如果使用了xml文件可參考以下方式

<result column="options" property="options" jdbcType="VARCHAR"
                typeHandler="com.innovation.desk.handler.OptionHandler"/>

總結(jié)

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

相關(guān)文章

  • 偵聽消息隊列的Message Listener類示例詳解

    偵聽消息隊列的Message Listener類示例詳解

    Spring AMQP 是基于 Spring 框架的AMQP消息解決方案,提供模板化的發(fā)送和接收消息的抽象層,提供基于消息驅(qū)動的 POJO的消息監(jiān)聽等,簡化了我們對于RabbitMQ相關(guān)程序的開發(fā),本文給大家介紹偵聽消息隊列的Message Listener類,感興趣的朋友一起看看吧
    2023-12-12
  • jmeter添加自定義擴(kuò)展函數(shù)之圖片base64編碼示例詳解

    jmeter添加自定義擴(kuò)展函數(shù)之圖片base64編碼示例詳解

    這篇文章主要介紹了jmeter添加自定義擴(kuò)展函數(shù)之圖片base64編碼,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-01-01
  • 詳解Java中的線程池

    詳解Java中的線程池

    這篇文章主要介紹了Java中的線程池,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • MyBatis-Plus動態(tài)返回實體類示例詳解

    MyBatis-Plus動態(tài)返回實體類示例詳解

    這篇文章主要為大家介紹了MyBatis-Plus動態(tài)返回實體類示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • Java實現(xiàn)順序表的操作

    Java實現(xiàn)順序表的操作

    這篇文章主要為大家詳細(xì)介紹了Java實現(xiàn)順序表的基本操作,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • spring定時器@Scheduled異步調(diào)用方式

    spring定時器@Scheduled異步調(diào)用方式

    在Spring Boot中,@Schedule默認(rèn)使用單線程執(zhí)行定時任務(wù),多個定時器會按順序執(zhí)行,為實現(xiàn)異步執(zhí)行,可以通過自定義線程池或?qū)崿F(xiàn)SchedulingConfigurer接口,使用自定義線程池可以保證多個定時器并發(fā)執(zhí)行
    2024-11-11
  • 利用Socket.io 實現(xiàn)消息實時推送功能

    利用Socket.io 實現(xiàn)消息實時推送功能

    這篇文章主要介紹了利用Socket.io 實現(xiàn)消息實時推送功能,需要的朋友可以參考下
    2017-12-12
  • Java concurrency之LockSupport_動力節(jié)點Java學(xué)院整理

    Java concurrency之LockSupport_動力節(jié)點Java學(xué)院整理

    這篇文章主要為大家詳細(xì)介紹了Java concurrency之LockSupport的相關(guān)資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • IDEA mybatis-generator逆向工程生成代碼

    IDEA mybatis-generator逆向工程生成代碼

    這篇文章主要介紹了IDEA mybatis-generator逆向工程生成代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • 一個簡單的java學(xué)生寢室查詢系統(tǒng)

    一個簡單的java學(xué)生寢室查詢系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了一個簡單的java學(xué)生寢室查詢系統(tǒng),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10

最新評論

博爱县| 宁远县| 津市市| 樟树市| 平南县| 阳泉市| 东乌珠穆沁旗| 高台县| 石狮市| 马边| 德庆县| 高州市| 马边| 云龙县| 温州市| 南陵县| 鄂尔多斯市| 邹平县| 武强县| 襄汾县| 阳城县| 新巴尔虎左旗| 泰来县| 龙井市| 体育| 介休市| 绥宁县| 泰宁县| 普兰县| 伊宁县| 清涧县| 南澳县| 新建县| 文山县| 涿鹿县| 鄄城县| 永胜县| 志丹县| 丰顺县| 桃园县| 临猗县|