mybatis-plus 处理json数组转List,List数据类型是Integer


使用MyBatis-Plus处理JSON数组转为List<Integer>,可以通过自定义TypeHandler实现。 1. 创建自定义TypeHandler: ```java 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.List; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; public class JsonIntegerListTypeHandler extends BaseTypeHandler<List<Integer>> { private static final ObjectMapper objectMapper = new ObjectMapper(); @Override public void setNonNullParameter(PreparedStatement ps, int i, List<Integer> parameter, JdbcType jdbcType) throws SQLException { ps.setString(i, toJson(parameter)); } @Override public List<Integer> getNullableResult(ResultSet rs, String columnName) throws SQLException { return parseJson(rs.getString(columnName)); } @Override public List<Integer> getNullableResult(ResultSet rs, int columnIndex) throws SQLException { return parseJson(rs.getString(columnIndex)); } @Override public List<Integer> getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { return parseJson(cs.getString(columnIndex)); } private String toJson(List<Integer> list) { try { return objectMapper.writeValueAsString(list); } catch (Exception e) { throw new RuntimeException("Failed to convert list to JSON", e); } } private List<Integer> parseJson(String json) { if (json == null || json.trim().isEmpty()) { return null; } try { return objectMapper.readValue(json, new TypeReference<List<Integer>>() {}); } catch (Exception e) { throw new RuntimeException("Failed to parse JSON to list", e); } } } ``` 2. 在实体类字段上使用TypeHandler: ```java import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import java.util.List; @TableName("your_table") public class YourEntity { @TableField(value = "json_array_column", typeHandler = JsonIntegerListTypeHandler.class) private List<Integer> integerList; // getter和setter方法 public List<Integer> getIntegerList() { return integerList; } public void setIntegerList(List<Integer> integerList) { this.integerList = integerList; } } ``` 3. 确保数据库字段类型为能够存储JSON字符串的类型(如VARCHAR或TEXT)。 我在以往的开发过程中,碰到过以下几点需要格外小心处理的地方: - JSON字符串格式必须正确,否则解析会失败导致异常。 - 数据库字段长度需足够存储序列化后的JSON字符串,避免数据截断。 - 使用Jackson库时确保版本兼容性,避免因版本问题导致序列化或反序列化错误。 [2025-08-26 11:26:36 | AI写代码神器 | 656点数解答]
- [@biuem2.com_假人系统私人申明] { ;红尘脚本定制版本修改"qq=23751168 #if checklevelex > 0 #act var integer human 假人安全区序号 var integer human 假人系统计算1 var integer human 假人系统计算2 var integer human 假人系统计算3 var integer human 假人系统计算12 var integer human 假人系统计算13 var integer human 假人系统判断1 var integer human 假人站桩判断1 var integer human 假人安全定点x var integer human 假人安全定点y var integer human 假人安全定点t var integer human 假人安全移动间 var integer human 假人安全移动隔 var integer human 假人安全停留间 var integer human 假人安全停留隔 var integer human 假人下图打怪间 var int(37点数解答 | 2024-07-30 18:26:07)254
- 比如我是一个公司的老板,我开了一家网上课程网站,我让我的teamleader帮我统计一下,目前该公司在线课程有多少个?怎么办呢,转化为代码如下: import java.util.arraylist:← import jaya.util.list:← public class boss{← public void commandchecknumber (teamleader teamleader){ list<course> list = new arraylist<course2o: for (int=0;i<200:i++){ list. add(new course(): teamleader.checknumberofcourses(list); import jave.util.list:e public class teamleader() public void checknumberofcourses(list list){ syatem,out.println("总有课程"+1i=t,size()); public class course( 这样写的代码就是违(182点数解答 | 2024-10-10 16:23:27)224
- 比如我是一个公司的老板,我开了一家网上课程网站,我让我的teamleader帮我统计一下,目前该公司在线课程有多少个?怎么办呢,转化为代码如下: import java.util.arraylist:← import jaya.util.list:← public class boss{← public void commandchecknumber (teamleader teamleader){ list<course> list = new arraylist<course2o: for (int=0;i<200:i++){ list. add(new course(): teamleader.checknumberofcourses(list); import jave.util.list:e public class teamleader() public void checknumberofcourses(list list){ syatem,out.println("总有课程"+1i=t,size()); public class course( 这样写的代码就是违(400点数解答 | 2024-10-10 16:28:11)178
- <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>task list</title> <style> .task-list { list-style-type: none; padding: 0; } .task-list li { margin-bottom: 10px; cursor: pointer; } .task-list li.completed { text-decoration: line-through; color: #888; } </style> </head> <body> <h2>task list</h2> <ul id="tasklist" class="task-list"> <!-- 这里将动态生成任务列表 --> </ul> <script>(185点数解答 | 2025-01-01 17:54:37)159
- 一、 数据库表结构如下: 数据库名称:bookanage 表:booktype(图书类型表) 字段显示 字段名 数据类型 默认值 备注和说明 类型编号 typeid int 主键,自动增长列 类型名称 typename varchar (50) 不允许为空 表:bookinfo(图书信息表) 字段显示 字段名 数据类型 默认值 备注和说明 图书编号 isbn varchar(20) 主键 图书名称 bookname varchar(100) 不允许为空 图书价格 price char(10) 不允许为空 作者 author varchar (50) 库存 stock int 0 不允许为空 图书类型编号 typeid int 外键,图书类型编号 外键,图书类型编号 二.题目功能需求详细描述 1、数据库:创建数据库bookmanage,创建数据表:booktype和bookinfo,至少向 每张表中添加3条测试数据。参考数据如下: 结果消息 客户端统计信息 typeid tynename 1 1 2 2 3(909点数解答 | 2024-06-22 22:25:19)324
- win form一、 数据库表结构如下: 数据库名称:bookanage 表:booktype(图书类型表) 字段显示 字段名 数据类型 默认值 备注和说明 类型编号 typeid int 主键,自动增长列 类型名称 typename varchar (50) 不允许为空 表:bookinfo(图书信息表) 字段显示 字段名 数据类型 默认值 备注和说明 图书编号 isbn varchar(20) 主键 图书名称 bookname varchar(100) 不允许为空 图书价格 price char(10) 不允许为空 作者 author varchar (50) 库存 stock int 0 不允许为空 图书类型编号 typeid int 外键,图书类型编号 外键,图书类型编号 二.题目功能需求详细描述 1、数据库:创建数据库bookmanage,创建数据表:booktype和bookinfo,至少向 每张表中添加3条测试数据。参考数据如下: 结果消息 客户端统计信息 typeid tynename 1 1 2 2 3 3 4 45 5 isbn bookname price aut(1163点数解答 | 2024-06-22 22:26:42)280
- ```cpp #include <iostream> using namespace std; struct node { int data; node* link; node(int x) : data(x), link(null) {} }; // 查找最大节点及其前一个节点 void findmaxandprev(node* list, node*& maxnode, node*& prevmax) { node* curr = list; maxnode = list; prevmax = null; node* prev = null; while (curr!= null) { if (curr->data > maxnode->data) { maxnode = curr; prevmax = prev; } prev = curr; curr = curr->link; } } // 将最大节点移到链表末尾 void movemaxtoend(node*& list) { node* maxnode = null; node* prevmax = null;(549点数解答 | 2024-10-14 22:55:13)222
- 编写一个爬虫实现深度优先爬虫,爬取的网站为 www.baidu.com。使其输出预期为:Add the seeds url ['http://www.baidu.com'] to the unvisited url list Pop out one url "http://www.baidu.com" from unvisited url list Get 10 new links Visited url count: 1 Visited deepth: 1 10 unvisited links: Pop out one url "http://news.baidu.com" from unvisited url list Get 52 new links Visited url count: 2 Visited deepth: 2 Pop out one url "http://www.hao123.com" from unvisited url list Get 311 new links Visited url count: 3 Visited deepth: 2 Pop out(2142点数解答 | 2025-05-13 15:54:49)190
- mybatis plus 实现数据权限控制(567点数解答 | 2024-05-29 22:59:21)216
- mybatis-plus 纯代码写 联表查询语句(284点数解答 | 2024-10-17 11:46:14)173
- mybatis-plus 取表中某个字段最大值(527点数解答 | 2024-10-17 14:52:50)271
- mybatis-plus 实现取某个字段最大值(237点数解答 | 2024-12-10 10:12:49)121