国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Java】Mybatis查詢數(shù)據(jù)庫(kù)返回JSON格式的字段映射到實(shí)體類屬性

這篇具有很好參考價(jià)值的文章主要介紹了【Java】Mybatis查詢數(shù)據(jù)庫(kù)返回JSON格式的字段映射到實(shí)體類屬性。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

前言

今天遇到了一個(gè)bug,大概就是數(shù)據(jù)庫(kù)(Mysql)中有一個(gè)type類型字段,數(shù)據(jù)類型為json,大概是這樣的:[“蘋果”,“香蕉”,“葡萄”]的數(shù)據(jù)格式,這個(gè)bug的問題所在呢就是查詢后這個(gè)json格式的數(shù)據(jù)無(wú)法映射到我們實(shí)體類的屬性上,解決方案如下:

解決

實(shí)體類的配置:

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler;

@TableField(typeHandler = JacksonTypeHandler.class)
private JSONArray type;

@TableField(typeHandler = JacksonTypeHandler.class)是MyBatis-Plus的注解,它用于指定Java實(shí)體類中對(duì)應(yīng)的字段的類型處理器。在這個(gè)例子中,使用了JacksonTypeHandler來(lái)處理JSONArray類型的數(shù)據(jù)。

XML文件配置:

<resultMap id="defaultResultMap" type="xx.xx.model.User">
	<result property="type" column="type" typeHandler="com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler"/>
</resultMap>

在MyBatis-Plus中,typeHandler屬性用于設(shè)置字段映射時(shí)的類型處理器。com.baomidou.mybatisplus.extension.handlers.JacksonTypeHandler是MyBatis-Plus提供的一個(gè)針對(duì)Jackson庫(kù)的類型處理器,用于處理Java對(duì)象和JSON字符串的相互轉(zhuǎn)換。在代碼中,這個(gè)類型處理器被用于處理type字段,將JSON字符串轉(zhuǎn)換成Java對(duì)象。

查詢語(yǔ)句:

@Override
public User selectById(String id) {
	return userMapper.selectById(id);
}

注:如果你在上面的查詢語(yǔ)句中使用的是在Mybatis的查詢方式,并且返回的類型指定的是resultMap,那么下面的報(bào)錯(cuò)你就不用看了。

然后我們測(cè)試一下,你會(huì)發(fā)現(xiàn),它?還是返回的null,數(shù)據(jù)庫(kù)可以正常查出來(lái)數(shù)據(jù),但在代碼中字段就是映射不上,本以為是JacksonTypeHandler轉(zhuǎn)換的時(shí)候出了問題,我在這里深陷了兩個(gè)小時(shí)才找到問題原因。

解決方法

1 我們只需要在實(shí)體類中加上@TableName(value = "user", autoResultMap = true)后面的autoResultMap 即可。

2 或者可以使用@TableName(value = "user", resultMap= "xml文件中resultMap標(biāo)簽的id值")。
:配置了typeHandler屬性的映射字段需要在該標(biāo)簽里面

問題原因

@TableName 注解用于指定實(shí)體類對(duì)應(yīng)的數(shù)據(jù)庫(kù)表名,value 屬性表示表名,autoResultMap 屬性表示是否開啟自動(dòng)生成 resultMap,默認(rèn)為 false,表示不開啟。

當(dāng) autoResultMap 為 true 時(shí),MyBatis-Plus 會(huì)在啟動(dòng)時(shí)自動(dòng)根據(jù)表結(jié)構(gòu)生成對(duì)應(yīng)的 resultMap。如果沒有指定 resultMap 或 resultType 屬性,會(huì)使用自動(dòng)生成的 resultMap 進(jìn)行結(jié)果映射。

例如 ,使用 @TableName(value = “user”, autoResultMap = true) 注解標(biāo)記一個(gè)實(shí)體類,表示該類對(duì)應(yīng)的數(shù)據(jù)庫(kù)表名為 user,并開啟自動(dòng)生成 resultMap。那么在執(zhí)行查詢時(shí),如果該查詢的返回值是該實(shí)體類的列表,那么 MyBatis-Plus 會(huì)自動(dòng)使用自動(dòng)生成的 resultMap 進(jìn)行結(jié)果映射。

原因總結(jié)

總的問題原因就是,我們使用MP內(nèi)置的查詢方法返回是沒有指定resultMap標(biāo)簽里的typeHandler轉(zhuǎn)換的,所以在實(shí)體類中配置了轉(zhuǎn)換只會(huì)在添加的時(shí)候有效果,查詢的時(shí)候是映射不到的。

BUG總結(jié)

坑爹!再也不用plus了文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-616248.html

到了這里,關(guān)于【Java】Mybatis查詢數(shù)據(jù)庫(kù)返回JSON格式的字段映射到實(shí)體類屬性的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • MyBatis查詢數(shù)據(jù)庫(kù)

    MyBatis查詢數(shù)據(jù)庫(kù)

    1.定義 : ????????MyBatis是一款優(yōu)秀的持久層框架,它支持自定義SQL、存儲(chǔ)過程以及高級(jí)映射。 ????????MyBatis去除了幾乎所有的JDBC代碼以及設(shè)置參數(shù)和獲取結(jié)果集的工作。 ????????MyBatis可以通過簡(jiǎn)單的XML或注解來(lái)配置和映射原始類型、接口和Java POJO (Plain Old Java

    2024年02月04日
    瀏覽(24)
  • MyBatis查詢數(shù)據(jù)庫(kù)(3)

    MyBatis查詢數(shù)據(jù)庫(kù)(3)

    ??????SSM專欄更新中,各位大佬覺得寫得不錯(cuò),支持一下,感謝了!?????? Spring + Spring MVC + MyBatis_冷兮雪的博客-CSDN博客 前面我們講解了MyBatis增刪改查基本操作,下面我們來(lái)深入了解MyBatis其中不同和需要注意的地方。 下面我們來(lái)實(shí)現(xiàn)?下根據(jù)用戶 id 查詢用戶

    2024年02月14日
    瀏覽(26)
  • MyBatis查詢數(shù)據(jù)庫(kù)(1)

    MyBatis查詢數(shù)據(jù)庫(kù)(1)

    ??????SSM專欄更新中,各位大佬覺得寫得不錯(cuò),支持一下,感謝了!?????? Spring + Spring MVC + MyBatis_冷兮雪的博客-CSDN博客 經(jīng)過前?的學(xué)習(xí)咱們 Spring 系列的基本操作已經(jīng)實(shí)現(xiàn)的差不多了,接下來(lái),咱們來(lái)學(xué)習(xí)更重要的知識(shí),將前端傳遞的數(shù)據(jù)存儲(chǔ)起來(lái),或者查詢

    2024年02月15日
    瀏覽(23)
  • MyBatis查詢數(shù)據(jù)庫(kù)(4)

    MyBatis查詢數(shù)據(jù)庫(kù)(4)

    ??????SSM專欄更新中,各位大佬覺得寫得不錯(cuò),支持一下,感謝了!?????? Spring + Spring MVC + MyBatis_冷兮雪的博客-CSDN博客 終于到了MyBatis最后一篇,這篇講的是 動(dòng)態(tài)SQL的使用。 動(dòng)態(tài) SQL?是Mybatis的強(qiáng)大特性之?,能夠完成不同條件下不同的 SQL?拼接。 可以參考官

    2024年02月14日
    瀏覽(39)
  • MyBatis查詢數(shù)據(jù)庫(kù)(2)

    MyBatis查詢數(shù)據(jù)庫(kù)(2)

    目錄 前言?? 一、增刪查改操作?? 1、查?? Ⅰ、mapper接口:?? Ⅱ、UserMapper.xml 查詢所有用戶的具體實(shí)現(xiàn) SQL:?? Ⅲ、進(jìn)行單元測(cè)試?? 2、增、刪、改操作?? Ⅰ、增?? 添加用戶?? 添加用戶并且返回自增 id?? Ⅱ、改?? 根據(jù)id修改用戶名?? 開啟 MyBatis sql 日志打印?? Ⅲ、

    2024年02月16日
    瀏覽(19)
  • 關(guān)于數(shù)據(jù)庫(kù)json 字段的查詢

    1、查詢json字符串中是否包含某個(gè)節(jié)點(diǎn) 2、查詢json字符串中某個(gè)節(jié)點(diǎn)等于或者不等于某個(gè)值 需要注意的點(diǎn)json串和json數(shù)組匹配方式不同 json數(shù)組匹配? $[*].name? 或者?$[0].name json串 $.name 這里發(fā)現(xiàn)一個(gè)總結(jié)的很好的博主,推薦一下 mysql中json_extract的使用方法_-王尚可-的博客-CSDN博

    2024年02月16日
    瀏覽(24)
  • MyBatis 查詢數(shù)據(jù)庫(kù)、持久層框架簡(jiǎn)介

    MyBatis 查詢數(shù)據(jù)庫(kù)、持久層框架簡(jiǎn)介

    MyBatis是一款優(yōu)秀的持久層框架,支持自定義SQL、存儲(chǔ)過程以及高級(jí)映射。它通過簡(jiǎn)單的XML或注解來(lái)配置和映射原始類型、接口和Java POJO為數(shù)據(jù)庫(kù)中的記錄。

    2024年02月12日
    瀏覽(16)
  • MyBatis查詢數(shù)據(jù)庫(kù)之一(概念+創(chuàng)建項(xiàng)目+基礎(chǔ)交互)

    MyBatis查詢數(shù)據(jù)庫(kù)之一(概念+創(chuàng)建項(xiàng)目+基礎(chǔ)交互)

    目錄 1.MyBatis是什么? 2.為什么學(xué)習(xí)MyBatis? 3. 怎么學(xué) MyBatis 4.第?個(gè)MyBatis查詢 4.1 添加MyBatis框架支持 4.1.1老項(xiàng)目添加MyBatis 4.1.2 新項(xiàng)目添加MyBatis 4.2 配置連接字符串和MyBatis 4.2.1 配置連接字符串 4.2.2 配置 MyBatis 中的 XML 路徑 5. 使用 MyBatis 的操作模式操作數(shù)據(jù)庫(kù) 5.1 添加實(shí)體類

    2024年02月13日
    瀏覽(45)
  • MyBatis 查詢數(shù)據(jù)庫(kù)之二(增、刪、改、查操作)

    MyBatis 查詢數(shù)據(jù)庫(kù)之二(增、刪、改、查操作)

    目錄 1. 配置打印 MyBatis 執(zhí)行的SQL 2. 查詢操作 2.1 通過用戶 ID 查詢用戶信息、查詢所有用戶信息 (1) Mapper 接口 (2)UserMapper.xml 查詢所有用戶的具體實(shí)現(xiàn) SQL (3)進(jìn)行單元測(cè)試 3. 增加操作 3.1 在 mapper(interface)里面添加增加方法的聲明 3.2 在 XMl 中添加 標(biāo)簽和增加的 sql 代碼 3.3 生成

    2024年02月14日
    瀏覽(31)
  • mybatis plus 查詢數(shù)據(jù)庫(kù)字段名自動(dòng)添加下劃線問題解決

    實(shí)體類和數(shù)據(jù)庫(kù)中的字段名是一致的,但報(bào)錯(cuò)Unknown column \\\'dept_id\\\' in \\\'field list\\\',這是因?yàn)閜lus中的駝峰命名法,會(huì)自動(dòng)添加下劃線。 關(guān)閉駝峰式命名轉(zhuǎn)換為下劃線 在配置文件中加一個(gè): 重新運(yùn)行,就可以了! 報(bào)錯(cuò)信息如下: java.sql.SQLSyntaxErrorException: Unknown column \\\'dept_id\\\' in \\\'fi

    2024年02月07日
    瀏覽(96)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包