C++中的事件驱动编程

核心内容摘要

MedGemma快速上手:医学影像AI分析系统使用技巧
从C++11到C++27 constexpr演进全景图:12年技术债清零,你的代码还停留在哪一代?

Agent实习模拟面试之智能体架构:深度解析工作流设计、多智能体协同、记忆管理与业务系统联动

实体类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、DB

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 MapString,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 BaseTypeHandlerUserPaymentRecordBizJsonDto { 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); } } }

FreeHDXXⅩ-22-FreeHDXXⅩ-22最新版N.23.74.32-2285安卓网应用

百度百家号客服电话人工服务

123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123