news 2026/4/28 15:55:53

mybatisplus json自动转实体类

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
mybatisplus json自动转实体类

实体类

package com.mmwzcloud.jszj.module.jszj.dal.dataobject.jszjmemberuserpaymentrecord; import com.mmwzcloud.jszj.framework.commonjszj.dto.UserPaymentRecordBizJsonDto; import com.mmwzcloud.jszj.framework.commonjszj.mybatisplustypehandler.UserPaymentRecordBizJsonTypeHandler; import lombok.*; import java.math.BigDecimal; import com.baomidou.mybatisplus.annotation.*; import com.mmwzcloud.jszj.framework.mybatis.core.dataobject.BaseDO; /** * 用户支付记录 DO * * @author 景春德 */ @TableName(value = "jszj_member_user_payment_record", autoResultMap = true) @KeySequence("jszj_member_user_payment_record_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库,可不写。 @Data @EqualsAndHashCode(callSuper = true) @ToString(callSuper = true) @Builder @NoArgsConstructor @AllArgsConstructor public class JszjMemberUserPaymentRecordDO extends BaseDO { /** * ID */ @TableId private Long id; /** * 用户ID */ private Long userId; /** * payment_type 支付类型 aliPayment:支付宝 weChatPayment:微信支付 */ private String paymentType; /** * 支付订单号 */ private String outTradeNo; /** * 状态 0:已生成未支付 1:已支付 2:退款中 3:退款成功 */ private Integer state; /** * 支付金额 */ private BigDecimal money; /** * 购买的业务表名 */ private String tableName; /** * 购买的业务表id */ private Long tableId; /** * 购买的业务表字段 */ private String tableField; /** * 支付的业务,如果支付的业务没有相关表,可以使用此字段记录支付业务的类型和数据 */ @TableField(value = "biz_json", typeHandler = UserPaymentRecordBizJsonTypeHandler.class) private UserPaymentRecordBizJsonDto bizJson; }

主要是 autoResultMap = true 和 @TableField(value = "biz_json", typeHandler = UserPaymentRecordBizJsonTypeHandler.class)

json对应的实体类

package com.mmwzcloud.jszj.framework.commonjszj.dto; import lombok.Data; import java.util.Map; @Data public class UserPaymentRecordBizJsonDto { //业务类型 private String bizType; //业务数据 private Map<String,String> bizData; }

转换的方法

package com.mmwzcloud.jszj.framework.commonjszj.mybatisplustypehandler; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.mmwzcloud.jszj.framework.commonjszj.dto.UserPaymentRecordBizJsonDto; import org.apache.ibatis.type.BaseTypeHandler; import org.apache.ibatis.type.JdbcType; import org.apache.ibatis.type.MappedTypes; import java.sql.CallableStatement; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; @MappedTypes(UserPaymentRecordBizJsonDto.class) public class UserPaymentRecordBizJsonTypeHandler extends BaseTypeHandler<UserPaymentRecordBizJsonDto> { private static final ObjectMapper objectMapper = new ObjectMapper(); @Override public void setNonNullParameter(PreparedStatement ps, int i, UserPaymentRecordBizJsonDto parameter, JdbcType jdbcType) throws SQLException { try { String json = objectMapper.writeValueAsString(parameter); ps.setString(i, json); } catch (JsonProcessingException e) { throw new SQLException("Failed to convert UserPaymentRecordBizJsonDto to JSON", e); } } @Override public UserPaymentRecordBizJsonDto getNullableResult(ResultSet rs, String columnName) throws SQLException { return parseJson(rs.getString(columnName)); } @Override public UserPaymentRecordBizJsonDto getNullableResult(ResultSet rs, int columnIndex) throws SQLException { return parseJson(rs.getString(columnIndex)); } @Override public UserPaymentRecordBizJsonDto getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { return parseJson(cs.getString(columnIndex)); } private UserPaymentRecordBizJsonDto parseJson(String json) { if (json == null || json.trim().isEmpty()) { return null; } try { return objectMapper.readValue(json, UserPaymentRecordBizJsonDto.class); } catch (JsonProcessingException e) { throw new RuntimeException("Failed to parse JSON to UserPaymentRecordBizJsonDto: " + json, e); } } }
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/28 15:55:16

SMB与WebDAV:你家NAS开的到底是“内网直通车”还是“全球快递”?

刚玩NAS的朋友肯定都见过这两个字母组合&#xff1a;SMB和WebDAV。它们看起来都像某种神秘的接头暗号&#xff0c;但实际用起来&#xff0c;一个像在家里穿睡衣般自在&#xff0c;另一个则像出门必须套上的正装。今天咱们就来聊聊&#xff0c;你这台NAS开的到底是“小区内部班车…

作者头像 李华
网站建设 2026/4/22 3:54:19

计算机毕业设计springboot高校毕业生就业岗位推荐系统 基于SpringBoot的高校毕业生就业智能匹配与双向选择平台 高校毕业生就业信息数字化管理与职业推荐服务系统

计算机毕业设计springboot高校毕业生就业岗位推荐系统&#xff08;配套有源码 程序 mysql数据库 论文&#xff09; 本套源码可以在文本联xi,先看具体系统功能演示视频领取&#xff0c;可分享源码参考。 随着高等教育普及化程度不断提高&#xff0c;每年高校毕业生数量持续攀升&…

作者头像 李华
网站建设 2026/4/23 17:17:54

Anthropic发布Claude AI全新宪法文件强化安全伦理框架

Anthropic公司在达沃斯世界经济论坛上全面更新了"Claude宪法"文件&#xff0c;这份文档为其AI模型的推理和行为设定了伦理参数标准。新宪法确立核心原则新版宪法确立了四项核心原则&#xff1a;Claude应当"广义安全"&#xff08;不破坏人类监督&#xff09…

作者头像 李华
网站建设 2026/4/28 11:32:06

DeepSeek 刚刚开源 OCR 2,视觉理解再进化!附稳定 API 渠道推荐

刚刚&#xff0c;DeepSeek 上新&#xff0c;V4 的模样更清晰了。 临近春节&#xff0c;DeepSeek 又有新动作。就在刚刚&#xff0c;DeepSeek 在 HuggingFace 和 GitHub 上开源了新模型 OCR 2&#xff0c;并附上了完整的论文。 这不仅仅是一次简单的 OCR 更新。和初代主打视觉…

作者头像 李华
网站建设 2026/4/21 19:55:06

MATLAB许可证管理与IT服务管理集成

MATLAB许可证管理与IT服务管理集成&#xff1a;企业如何优化资源与成本&#xff1f;一、用户痛点&#xff1a;企业如何高效管理MATLAB许可证&#xff1f;在企业级应用中&#xff0c;MATLAB作为一种强大的科学计算工具&#xff0c;被广泛用于工程仿真、数据建模和人工智能开发等…

作者头像 李华