欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MyBatis-Plus?中?typeHandler?的使用實(shí)例詳解

 更新時(shí)間:2024年10月09日 10:32:05   作者:小裕哥略帥  
本文介紹了在MyBatis-Plus中如何使用typeHandler處理json格式字段和自定義typeHandler,通過(guò)使用JacksonTypeHandler,可以簡(jiǎn)單實(shí)現(xiàn)將實(shí)體類(lèi)字段轉(zhuǎn)換為json格式存儲(chǔ),感興趣的朋友跟隨小編一起看看吧

一、typeHandler 的使用

 1、存儲(chǔ)json格式字段

        如果字段需要存儲(chǔ)為json格式,可以使用JacksonTypeHandler處理器。使用方式非常簡(jiǎn)單,如下所示:

在domain實(shí)體類(lèi)里面要加上,兩個(gè)注解

  @TableName(autoResultMap = true) 表示自動(dòng)映射resultMap

@TableField(typeHandler = JacksonTypeHandler.class)表示將UserInfo對(duì)象轉(zhuǎn)為json對(duì)象入庫(kù)

    /**
     * 物料分類(lèi)
     */
    @TableField(typeHandler = SupplierMaterialCategoryTypeHandler.class)
    private List<MaterialCategory> materialCategory;

2、自定義 typeHandler 實(shí)現(xiàn)類(lèi)

        例如當(dāng)我們 某個(gè)字段存儲(chǔ)的類(lèi)型為L(zhǎng)ist或者M(jìn)ap時(shí),我們可以自定義一個(gè)TypeHandler,以 list 為例,我們想存儲(chǔ)一個(gè)字段類(lèi)型為 list ,在數(shù)據(jù)庫(kù)中的存儲(chǔ)的格式是 多條數(shù)據(jù)以逗號(hào)分割,當(dāng)查詢(xún)時(shí)會(huì)自動(dòng)根據(jù)逗號(hào)分割成列表格式。

        需要實(shí)現(xiàn)BaseTypeHandler抽象類(lèi):

package com.mdgyl.hussar.basic.handler;
import com.mdgyl.common.util.vo.ChangeInfoVO;
import com.mdgyl.data.mybatis.plus.typehandler.ListTypeHandler;
import com.mdgyl.hussar.basic.supplier.masterdata.domain.SupplierDO;
/**
 * @author shuquanlin
 */
public class SupplierMaterialCategoryTypeHandler extends ListTypeHandler<SupplierDO.MaterialCategory> {
    @Override
    protected SupplierDO.MaterialCategory specificType() {
        return new SupplierDO.MaterialCategory();
    }
}

在mybaits中的xml文件中

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mdgyl.hussar.basic.supplier.changeorder.dao.ChangeOrderMapper">
    <resultMap id="BaseResultMap" type="com.mdgyl.hussar.basic.supplier.changeorder.domain.SupplierChangeOrderDo">
        <id column="id" property="id" jdbcType="BIGINT" />
        <result column="tenant_id" property="tenantId" jdbcType="BIGINT" />
        <result column="supplier_id" property="supplierId" jdbcType="BIGINT" />
        <result column="code" property="code" jdbcType="BIGINT" />
        <result column="els_account" property="elsAccount" jdbcType="VARCHAR" />
        <result column="name" property="name" jdbcType="VARCHAR" />
        <result column="external_code" property="externalCode" jdbcType="VARCHAR" />
        <result column="material_category" property="materialCategory" typeHandler="com.mdgyl.hussar.basic.handler.ChangeOrderMaterialCategoryTypeHandler" />
        <result column="status" property="status" jdbcType="VARCHAR" />
        <result column="audit_status" property="auditStatus" jdbcType="VARCHAR" />
        <result column="source_scene" property="sourceScene" jdbcType="VARCHAR" />
        <result column="score" property="score" jdbcType="DECIMAL" />
        <result column="contact_information" property="contactInformation" jdbcType="VARCHAR" />
        <result column="inquiry_type" property="inquiryType" jdbcType="VARCHAR" />
        <result column="route" property="route" jdbcType="VARCHAR" />
        <result column="transaction_currency" property="transactionCurrency" jdbcType="VARCHAR" />
        <result column="payment_currency" property="paymentCurrency" jdbcType="VARCHAR" />
        <result column="payment_condition" property="paymentCondition" jdbcType="VARCHAR" />
        <result column="open_account_condition" property="openAccountCondition" jdbcType="VARCHAR" />
        <result column="operating_start_time" property="operatingStartTime" jdbcType="DATE" />
        <result column="taxpayer_identity_number" property="taxpayerIdentityNumber" jdbcType="VARCHAR" />
        <result column="unified_social_credit_code" property="unifiedSocialCreditCode" jdbcType="VARCHAR" />
        <result column="belong_company_id" property="belongCompanyId" jdbcType="BIGINT" />
        <result column="purchaser_head_id" property="purchaserHeadId" jdbcType="BIGINT" />
        <result column="create_user_id" property="createUserId" jdbcType="BIGINT" />
        <result column="create_user_name" property="createUserName" jdbcType="VARCHAR" />
        <result column="update_user_id" property="updateUserId" jdbcType="BIGINT" />
        <result column="update_user_name" property="updateUserName" jdbcType="VARCHAR" />
        <result column="update_time" property="updateTime" jdbcType="TIMESTAMP" />
        <result column="create_time" property="createTime" jdbcType="TIMESTAMP" />
        <result column="delete_flag" property="deleteFlag" jdbcType="VARCHAR" />
        <result column="legal_representative" property="legalRepresentative" jdbcType="VARCHAR" />
        <result column="supplier_data_id" property="supplierDataId" jdbcType="BIGINT" />
    </resultMap>
    <select id="groupByStatus" parameterType="com.mdgyl.hussar.basic.param.changeOrder.SupplierChangeOrderPageQueryParam" resultType="com.mdgyl.hussar.basic.model.common.StatusGroupModel">
        SELECT status AS status,
        count(id) AS count
        FROM `t_supplier_change_order`
        WHERE tenant_id = #{tenantId} AND delete_flag = '0'
        <if test="code != null and code != ''">
            AND code = #[code]
        </if>
        <if test="elsAccount != null and elsAccount != ''">
            AND els_account = #{elsAccount}
        </if>
        <if test="name != null and name != ''">
            AND name = #{name}
        </if>
        <if test="supplierId != null and supplierId != ''">
            AND supplier_id = #{supplierId}
        </if>
        GROUP BY status
    </select>
</mapper>

如果要查找json中的字段,可以在domain類(lèi)里面加上虛擬字段

    @TableField(exist = false)
    public static final String materialCategoryUserIdQuery = "JSON_CONTAINS(material_category, JSON_OBJECT('materialCategoryUserId', {0}))";

在xml文件中加上

       <if test="name != null and name != ''">
            AND JSON_CONTAINS(material_category, JSON_OBJECT('materialCategoryName', #{name}))
        </if>

到此這篇關(guān)于MyBatis-Plus 之 typeHandler 的使用的文章就介紹到這了,更多相關(guān)MyBatis-Plus typeHandler 使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringData?Redis的具體使用

    SpringData?Redis的具體使用

    本文主要介紹了SpringData?Redis的具體使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-04-04
  • Java中的原生post請(qǐng)求方式

    Java中的原生post請(qǐng)求方式

    這篇文章主要介紹了Java中的原生post請(qǐng)求方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • java線(xiàn)程并發(fā)countdownlatch類(lèi)使用示例

    java線(xiàn)程并發(fā)countdownlatch類(lèi)使用示例

    javar的CountDownLatch是個(gè)計(jì)數(shù)器,它有一個(gè)初始數(shù),等待這個(gè)計(jì)數(shù)器的線(xiàn)程必須等到計(jì)數(shù)器倒數(shù)到零時(shí)才可繼續(xù)。
    2014-01-01
  • idea打包java可執(zhí)行jar包的實(shí)現(xiàn)步驟

    idea打包java可執(zhí)行jar包的實(shí)現(xiàn)步驟

    這篇文章主要介紹了idea打包java可執(zhí)行jar包的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • Java內(nèi)部類(lèi)深入解析

    Java內(nèi)部類(lèi)深入解析

    這篇文章主要介紹了Java內(nèi)部類(lèi)深入解析,在java中,我們被允許在編寫(xiě)一個(gè)類(lèi)(外部類(lèi)OuterClass)時(shí),在其內(nèi)部再嵌套一個(gè)類(lèi)(嵌套類(lèi)NestedClass),java將嵌套類(lèi)分為兩種,非靜態(tài)內(nèi)部類(lèi)(簡(jiǎn)稱(chēng)內(nèi)部類(lèi))和 靜態(tài)內(nèi)部,需要的朋友可以參考下
    2023-12-12
  • Spring Cloud Zuul自定義過(guò)濾器的實(shí)現(xiàn)

    Spring Cloud Zuul自定義過(guò)濾器的實(shí)現(xiàn)

    這篇文章主要介紹了自定義Spring Cloud Zuul過(guò)濾器的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • springboot @ComponentScan注解原理解析

    springboot @ComponentScan注解原理解析

    這篇文章主要介紹了springboot @ComponentScan注解原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Java 實(shí)現(xiàn)麥克風(fēng)自動(dòng)錄音

    Java 實(shí)現(xiàn)麥克風(fēng)自動(dòng)錄音

    這篇文章主要介紹了Java 實(shí)現(xiàn)麥克風(fēng)自動(dòng)錄音的示例代碼,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2020-12-12
  • SpringBoot使用Validation校驗(yàn)參數(shù)的詳細(xì)過(guò)程

    SpringBoot使用Validation校驗(yàn)參數(shù)的詳細(xì)過(guò)程

    這篇文章主要介紹了SpringBoot使用Validation校驗(yàn)參數(shù),本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-09-09
  • java線(xiàn)程之線(xiàn)程的生命周期的使用

    java線(xiàn)程之線(xiàn)程的生命周期的使用

    本篇文章介紹了,java線(xiàn)程之線(xiàn)程的生命周期的使用。需要的朋友參考下
    2013-05-05

最新評(píng)論