当前位置: 首页 > wzjs >正文

刷单类网站开发用DW做的网站怎么弄成链接

刷单类网站开发,用DW做的网站怎么弄成链接,给你一个网站怎么做,wordpress文章写好看1.BaseTypeHandler简介 org.apache.ibatis.type.BaseTypeHandler 是 MyBatis 提供的一个抽象类,通过继承该类并实现关键方法,可用于实现 Java 类型 与 JDBC 类型 之间的双向转换。当数据库字段类型与 Java 对象属性类型不一致时(如&#xff…

1.BaseTypeHandler简介

org.apache.ibatis.type.BaseTypeHandler 是 MyBatis 提供的一个抽象类,通过继承该类并实现关键方法,可用于实现 Java 类型 与 JDBC 类型 之间的双向转换。当数据库字段类型与 Java 对象属性类型不一致时(如:枚举类型、自定义对象、JSON 字段等),可以通过自定义 BaseTypeHandler 实现灵活的数据类型映射。


1.1 核心方法

BaseTypeHandler<T> 是泛型类,其中 T 表示 Java 类型。需要实现以下 4 个核心方法:

方法作用
void setNonNullParameter(PreparedStatement ps, int i, T parameter, JdbcType jdbcType)将 Java 类型转换为 JDBC 类型,设置到 SQL 语句中
T getNullableResult(ResultSet rs, String columnName)从 ResultSet 中通过列名获取 Java 类型值
T getNullableResult(ResultSet rs, int columnIndex)从 ResultSet 中通过列索引获取 Java 类型值
T getNullableResult(CallableStatement cs, int columnIndex)从存储过程结果中通过列索引获取 Java 类型值

1.2 典型使用场景

  1. 枚举类型映射:将数据库中的字符串或整数映射为 Java 枚举。
  2. 复杂对象映射:将 JSON 字符串转换为 Java 对象(如 List<T> 或自定义类)。
  3. 特殊类型转换:将数据库中的 DATE/TIMESTAMP 映射为 LocalDateTime 等。

2. 使用示例

2.1 枚举类型转换

将自定义的枚举类型与数据库里的String类型做自动转换。

step1.定义枚举类

public enum Status {ACTIVE("active"),INACTIVE("inactive");private final String code;Status(String code) {this.code = code;}public String getCode() {return code;}public static Status fromCode(String code) {for (Status status : values()) {if (status.code.equals(code)) {return status;}}throw new IllegalArgumentException("Invalid code: " + code);}
}

step2.自定义 TypeHandler,用于将枚举 Status 类和数据库中的String类做转换

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;public class StatusTypeHandler extends BaseTypeHandler<Status> {@Overridepublic void setNonNullParameter(PreparedStatement ps, int i, Status parameter, JdbcType jdbcType) throws SQLException {ps.setString(i, parameter.getCode());}@Overridepublic Status getNullableResult(ResultSet rs, String columnName) throws SQLException {String code = rs.getString(columnName);return code == null ? null : Status.fromCode(code);}@Overridepublic Status getNullableResult(ResultSet rs, int columnIndex) throws SQLException {String code = rs.getString(columnIndex);return code == null ? null : Status.fromCode(code);}@Overridepublic Status getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {String code = cs.getString(columnIndex);return code == null ? null : Status.fromCode(code);}
}

step3. 在XML映射文件中使用

  • status在数据库users表里是一个String类型字符串;在 User类里是一个 Status 枚举类型对象
  • 经过StatusTypeHandler处理后,可以将数据库的String类型映射为User里的Status枚举类型
<!-- UserMapper.xml -->
<resultMap id="userResultMap" type="User"><result column="status" property="status" typeHandler="com.example.StatusTypeHandler"/>
</resultMap><select id="selectUser" resultMap="userResultMap">SELECT * FROM users WHERE id = #{id}
</select>

2.2 JSON类型转换

将JSONObject类型与数据库里的String类型做转换:

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 org.apache.commons.lang3.StringUtils;
import com.alibaba.fastjson.JSONObject;public class JSONObjectTypeHandler extends BaseTypeHandler<JSONObject> {@Overridepublic void setNonNullParameter(PreparedStatement ps, int i, JSONObject parameter, JdbcType jdbcType)throws SQLException {ps.setString(i, parameter == null ? "{}" : parameter.toJSONString());}@Overridepublic JSONObject getNullableResult(ResultSet rs, String columnName) throws SQLException {String json = rs.getString(columnName);return StringUtils.isBlank(json) ? new JSONObject() : JSONObject.parseObject(json);}@Overridepublic JSONObject getNullableResult(ResultSet rs, int columnIndex) throws SQLException {String json = rs.getString(columnIndex);return StringUtils.isBlank(json) ? new JSONObject() : JSONObject.parseObject(json);}@Overridepublic JSONObject getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {String json = cs.getString(columnIndex);return StringUtils.isBlank(json) ? new JSONObject() : JSONObject.parseObject(json);}
}

2.3 注意事项

  1. 空值处理:在 getNullableResult 中需判断 null,避免 NPE。
  2. 线程安全:避免在 TypeHandler 中使用可变成员变量。
  3. 性能优化:避免在转换过程中频繁创建对象(如 JSON 序列化器)。

文章转载自:

http://KyKl8h55.wfspn.cn
http://BYTcnZ0L.wfspn.cn
http://WyH8HsTn.wfspn.cn
http://Wh5gqxgv.wfspn.cn
http://ejU0PojS.wfspn.cn
http://aoGF0iEj.wfspn.cn
http://u9PFprgr.wfspn.cn
http://cjicVN16.wfspn.cn
http://I2zt1aUs.wfspn.cn
http://SIqixEsh.wfspn.cn
http://bs19GTAB.wfspn.cn
http://ENlful6E.wfspn.cn
http://UivXMrP8.wfspn.cn
http://cJz5Aiy0.wfspn.cn
http://Pwmh1bNW.wfspn.cn
http://1GFqlogv.wfspn.cn
http://cgt8I2mA.wfspn.cn
http://ea6mVfMk.wfspn.cn
http://XqnuPUR8.wfspn.cn
http://Vx5bfnU6.wfspn.cn
http://8bAgFziJ.wfspn.cn
http://RukC2CAt.wfspn.cn
http://4mJOID7g.wfspn.cn
http://Oj8UFIP5.wfspn.cn
http://DTVJ4p9O.wfspn.cn
http://fI2DBisw.wfspn.cn
http://OIeLsBWi.wfspn.cn
http://C33RjdIf.wfspn.cn
http://6A2m7Cid.wfspn.cn
http://Cxz8p0Nv.wfspn.cn
http://www.dtcms.com/wzjs/671719.html

相关文章:

  • 知道网站域名怎么联系开发公司前期部门自查自纠报告
  • 焦作维科网站建设公司手机网站最小宽度
  • wordpress搭建的网站备案网站负责人必须为法人吗
  • 北京好的网站建设公司英文网站怎么做外贸推广
  • 京东网站建设现状分析在那些网站上做企业宣传好
  • 湖北网站定制开发价格表深圳龙岗网站建设公司
  • 企业网站建设报告微信公众号可以自动导入wordpress
  • 做网站用什么ui美观如何跳过网站会员
  • 上海设计网站建设返利网站做淘宝
  • 网站建设服务合同样本郑州郑州网站建设河南做网站公司哪家好
  • 什么网站做推广比较好网站建设维护面试题
  • 东营外贸型网站设计微商城网站建设合同下载
  • 网站建设仟首选金手指北京房地产开发商排名
  • 宁国网站设计公司淘客做自己的网站
  • 教育网站制作企业教育机构加盟
  • 温州的网站建设公司郑州个人网站建设
  • 厦门建设银行网站如何建设电子商务网站
  • 网站footer模板开发一款手机app软件需要多少钱
  • 飞鸿网架公司优化大师官方免费下载
  • 凡科网网站建设一个空间做2个网站
  • 哪里有服务好的网站建设公司济宁建网站公司
  • 中原郑州网站建设wordpress如何安装模板
  • 阿里云搭建企业网站网站怎么分工做
  • 深圳高端网站建设价格wordpress加上特效
  • 网站开发技术大学教材惠州网站建设 鑫
  • 学校网站的建设目标是什么学编程先学什么
  • 《php网站开发》课程资料网站的ns记录
  • 自己做网站能否赚钱红花岗区住房和城乡建设局网站
  • 制作小程序网站源码破解php网站后台账号密码
  • 网站建设结束语asp做网站步骤