桥本香菜的“足”智多谋:解密非凡销售力背后的秘密

核心内容摘要

探索成人漫画的艺术边界:界限、表达与无限可能
法国空姐满天星:一段迷人的空中邂逅

探秘“小舞吃巴雷特”的虚拟世界:一场穿越次元的视觉盛宴

实体类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); } } }

污网址下载-污网址下载应用

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

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