mybatis-plus json字段使用typeHandler自動轉換為List

mybatis-plus json字段使用typeHandler自動轉換為List

mybatis-plus json字段使用typeHandler自動轉換為List
一、實現思路
1.配置mybatis配置,注入handlermybatis-plus:typeHandlersPackage: com.power.common.core.handler
2.字段頂部增加注解@TableField(typeHandler = ListTypeHandler.class)二、案例
@TableField(typeHandler = ListTypeHandler.class)
private List<Integer> payMode;@TableField(typeHandler = ListTypeHandler.class)
private List<PowerCoeffVO> powerCoeff;三、ListTypeHandler.java 源碼
package com.power.common.core.handler;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType;import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
@Slf4j
public class ListTypeHandler extends BaseTypeHandler<List> {@Overridepublic void setNonNullParameter(PreparedStatement ps, int i, List parameter, JdbcType jdbcType) throws SQLException {String content = CollUtil.isEmpty(parameter) ? null : JSONUtil.toJsonStr(parameter);ps.setString(i, content);}@Overridepublic List getNullableResult(ResultSet rs, String columnName)throws SQLException {return parseValue(rs.getString(columnName));}@Overridepublic List getNullableResult(ResultSet rs, int columnIndex)throws SQLException {return parseValue(rs.getString(columnIndex));}@Overridepublic List getNullableResult(CallableStatement cs, int columnIndex)throws SQLException {return parseValue(cs.getString(columnIndex));}private List parseValue(String value) {if (StrUtil.isEmpty(value)) return new ArrayList<>();return JSONUtil.parseArray(value);}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/89725.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/89725.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/89725.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

(C++)學生管理系統(測試2版)(map數組的應用)(string應用)(引用)(C++教學)(C++項目)

1. 頭文件與命名空間 #include <iostream> // 輸入輸出流庫&#xff0c;提供cin/cout等基本I/O功能 #include <map> // 映射容器庫&#xff0c;提供map數據結構&#xff08;鍵值對集合&#xff09; #include <string> // 字符串庫&#xff0c;…

使用assembly解決jar包超大,實現依賴包、前端資源外置部署

成果物需要部署到用戶內網的童鞋應該都遇到過該問題&#xff1a;引入的maven依賴越來越多&#xff0c;jar包越來越大&#xff0c;我之間甚至見過一兩個G的依賴&#xff0c;想改個代碼換到現場測試&#xff0c;包傳到現場要一二十分鐘&#xff0c;真正實現了改代碼兩分鐘分鐘&am…

基于PHP+MySQL實現(Web)英語學習與測試平臺

數據庫課設&#xff1a;英語學習與測試平臺 運行環境要求 PHP7.1 基于 thinkPHP6.0、Layui、Xadmin 開發 主要功能 公共模塊 登錄注冊個人信息修改密碼修改 教師模塊 文章查看發布班級管理測試查看發布批改歷史成績查看 學生模塊 文章查看參與測試查看成績 管理員模塊…

WinForm中Settings.settings和app.config修改后信息不同步到exe.config問題

在 WinForms 項目中&#xff0c;Settings.settings 和 app.config/exe.config 的關系確實容易讓人困惑。以下是問題的根本原因和解決方案&#xff1a; 問題本質 設計時文件&#xff1a;app.config&#xff08;源碼中的配置文件&#xff09;運行時文件&#xff1a;bin/Debug/Yo…

【公司環境下發布個人NPM包完整教程】

&#x1f3e2; 公司環境下發布個人NPM包完整教程 創建時間: 2025年7月2日 適用場景: 公司電腦&#xff0c;需要臨時切換個人賬戶發布npm包 &#x1f3af; 教程概述 場景說明 環境: 公司電腦&#xff0c;已配置公司npm賬戶目標: 臨時使用個人賬戶發布npm包&#xff0c;發布后恢復…

滲透測試中 phpinfo() 的信息利用分析

在滲透測試中&#xff0c;phpinfo() 是一個非常常見卻極具價值的信息泄露點。這個函數的本意是向開發者展示當前 PHP 環境的詳細配置情況&#xff0c;包括編譯選項、擴展模塊、環境變量、系統信息、目錄路徑等。然而一旦該頁面被暴露到互聯網上&#xff0c;攻擊者便可以借此收集…

《如何在 Spring 中實現 MQ 消息的自動重連:監聽與發送雙通道策略》

大家好&#xff0c;我是G探險者&#xff01;&#x1f4cc; 背景場景在高可用分布式系統中&#xff0c;我們經常面臨&#xff1a;MQ 集群重啟 → 消息監聽中斷MQ 網絡短暫抖動 → 發送端連接失敗一端恢復正常&#xff0c;另一端仍處于掛死狀態如果你只配置了“連接工廠層”的重連…

OpenCV 安裝使用教程

一、OpenCV 簡介 OpenCV&#xff08;Open Source Computer Vision Library&#xff09;是一個開源計算機視覺和機器學習軟件庫&#xff0c;提供了超過 2500 個優化的算法&#xff0c;用于實時圖像處理、視頻分析、對象識別、人臉檢測、機器學習等任務。 Python 提供了對 Open…

【SNN脈沖神經網絡3】HH神經元軟件仿真

本篇文章主要核心目的在于研究明白HH神經元的數學模型&#xff0c;并且驗證其正確性。因此&#xff0c;在本篇文章中只會使用numpy函數庫用于構建神經元&#xff0c;以及matplotlib用于繪圖。1.導入對應的庫import numpy as np import matplotlib.pyplot as plt import re impo…

「日拱一碼」014 Python常用庫——Pandas

目錄 數據結構 pandas.Series &#xff1a;一維數組&#xff0c;類似于數組&#xff0c;但索引可以是任意類型&#xff0c;而不僅僅是整數 pandas.DataFrame &#xff1a;二維表格型數據結構&#xff0c;類似于 Excel 表格&#xff0c;每列可以是不同的數據類型 數據讀取與寫…

狂命爆肝21天,共51K字的JAVA學習筆記奉上,JAVA從入門到精通一文搞定,一文在手JAVA無憂

背景知識 Java 相關概念 JavaSE (Java Standard Edition): 基礎版&#xff0c;用于開發桌面應用程序。JavaEE (Java Enterprise Edition): 企業版&#xff0c;用于開發企業級應用程序。JavaME (Java Micro Edition): 微型版&#xff0c;用于開發嵌入式系統和移動設備應用程序…

Dijkstra 算法#圖論

Dijkstra 算法 算法前提&#xff1a;在沒有負邊的情況下使用。算法思路&#xff1a;將結點分成已確定最短路長度的點集 S 和未確定最短路長度的點集 T&#xff0c;每次從 T 集合中選取最短路長度最小的結點移到 S 集合中&#xff0c;并對其出邊執行更新操作 從T集合中&#x…

開源與閉源大模型的生態與技術對比:以百度文心4.5開源為視角

技術對比&#xff1a;開源與閉源大模型的優劣勢 性能對比&#xff1a;算力效率與場景適配的博弈 在模型性能的競技場上&#xff0c;開源與閉源大模型呈現出明顯的差異化特征。以百度文心4.5開源系列為例&#xff0c;其47B參數的混合專家&#xff08;MoE&#xff09;模型在飛槳…

企業電商解決方案哪家好?ZKmall模塊商城全渠道支持 + 定制化服務更省心

在數字化浪潮席卷各行各業的當下&#xff0c;企業要想拓展市場、提升競爭力&#xff0c;搭建專屬電商平臺已經成了繞不開的選擇。但市場上的電商解決方案五花八門&#xff0c;怎么才能挑到真正適合自己的&#xff1f;其實道理很簡單&#xff1a;能同時搞定全渠道支持和定制化服…

使用哪種語言的人更容易通過面試?

Ruby 和 Swift&#xff01;似乎語言越大眾面試通過率越低&#xff0c;畢竟崗位數量有限&#xff0c;Java 和 C 程序員所面對的競爭也會更加激烈。使用 Ruby 和 Swift 的程序員比例到底怎么樣&#xff1f;我們可以從 Google Trends 中發現一些蛛絲馬跡。最火熱的 Java 的熱度平均…

Axios 二次封裝高級教程(含請求取消等功能)

Axios 二次封裝高級教程&#xff08;含請求取消等功能&#xff09; 整理不易&#xff0c;收藏、點贊、關注哦&#xff01; 一、總體架構設計 目的&#xff1a;構建一套功能完善、易用且健壯的 HTTP 請求封裝層 核心功能&#xff1a; 請求攔截、響應攔截請求取消&#xff08;防…

MobileNet V1的Pytorch實現并加載預訓練模型進行驗證

一. 環境 windonws 11RTX5060CUDA 12.8Pytorch 2.9.0dev20250630cu128torchvision 0.23.0dev20250701cu128 二. 代碼 基于Mobilenet-CustomData 的Mobilenet_Pretrain.ipynb 1. 定義Mobile Net V1 import os import time import torch import torch.nn as nn import torch…

HTTP協議利用TCP的特性來實現長連接

在討論網絡協議時,經常會有人提出這樣一個問題:“既然HTTP是基于TCP的,而TCP本身支持長連接,為什么HTTP不支持長連接?”這種說法其實是一種誤解。實際上,HTTP確實可以并且經常使用長連接(也稱為持久連接)。 什么是長連接? 首先,我們需要明確什么是“長連接”。在網…

整流電路Multisim電路仿真實驗匯總——硬件工程師筆記

目錄 1 整流電路基礎 1.1 整流電路基本原理 1.2 整流電路的類型 1.2.1 單相整流電路 1.2.2 三相整流電路 1.3 整流電路的應用 1.3.1 直流電源 1.3.2 電池充電器 1.3.3 變頻調速系統 1.34 電解和電鍍 1.4 整流電路的優缺點 1.4.1 優點 1.4.2 缺點 2 二極管整流電路…

LangChain 全面入門

什么是 LangChain&#xff1f; LangChain 是一個專門為 大語言模型 (LLM) 應用開發設計的開源框架&#xff0c;幫你快速實現&#xff1a; ? 多輪對話 ? 知識庫問答 (RAG) ? 多工具協同調用 (function calling / tool) ? 智能體 Agent 自動決策任務鏈 解耦 LLM 接口、Prom…