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

欧美个人网站全国最新疫情最新消息

欧美个人网站,全国最新疫情最新消息,企业网站推广方案设计,查找企业信息的网站在 MyBatis 中&#xff0c;TypeHandler 是实现 Java 类型与数据库类型双向转换 的核心组件。无论是处理基础数据类型还是复杂的 JSON、枚举或自定义对象&#xff0c;它都能通过灵活的扩展机制满足开发需求。本文将通过一个 将数据库 JSON 字符串转换为 List<User> 的案例…

在 MyBatis 中,TypeHandler 是实现 Java 类型与数据库类型双向转换 的核心组件。无论是处理基础数据类型还是复杂的 JSON、枚举或自定义对象,它都能通过灵活的扩展机制满足开发需求。本文将通过一个 将数据库 JSON 字符串转换为 List<User> 的案例,详解 TypeHandler 的原理与实践。


一、TypeHandler 的作用与原理

1. 核心功能

  • 类型转换桥梁:将 Java 对象属性转换为 JDBC 参数(如 PreparedStatement 设置值);
  • 结果集映射:将数据库查询结果(如 ResultSet)转换为 Java 对象属性;
  • 空值处理:统一处理 Java 对象与数据库字段的 NULL 值逻辑。

2. 应用场景

  • 内置类型处理:MyBatis 已支持 StringIntegerDate 等常见类型的转换;
  • 复杂类型处理:如 JSON 字符串与对象互转、枚举值与数据库标记映射、CSV 字符串与集合转换等。

二、TypeHandler 的配置与扩展

1. 内置 TypeHandler

MyBatis 默认提供多种 TypeHandler,例如:

  • StringTypeHandler:处理 VARCHARString
  • EnumTypeHandler:处理枚举与数据库标记(如 disabled0);
  • DateTypeHandler:处理日期类型与 TIMESTAMP 的转换。

2. 自定义 TypeHandler 步骤

  1. 继承 BaseTypeHandler:实现 setNonNullParameter(Java→JDBC)和 getNullableResult(JDBC→Java)方法;
  2. 注册处理器
    • 全局注册:在 mybatis-config.xml 中通过 <typeHandlers> 标签配置;
    • 局部指定:在 Mapper XML 或注解中通过 typeHandler 属性标记;
  3. 应用转换逻辑:在实体类字段或 SQL 映射中声明使用自定义 TypeHandler。

三、实战:FastJson 实现 JSON 字符串与 List 转换

1. 场景描述

假设数据库表 user_groupusers 字段存储 JSON 字符串,需在 Java 中映射为 List<User> 对象:

CREATE TABLE user_group (id BIGINT PRIMARY KEY,users VARCHAR(2048)  -- 存储格式:[{"id":1,"name":"Alice","age":25},...]
);

2. 实现步骤

① 引入依赖
<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.83</version>
</dependency>
② 定义 User 实体
public class User {private Long id;private String name;private Integer age;// getters/setters
}
③ 自定义 TypeHandler
public class ListUserTypeHandler extends BaseTypeHandler<List<User>> {@Overridepublic void setNonNullParameter(PreparedStatement ps, int i, List<User> users, JdbcType jdbcType) throws SQLException {ps.setString(i, JSON.toJSONString(users));  // Java→JSON字符串}@Overridepublic List<User> getNullableResult(ResultSet rs, String columnName) throws SQLException {String json = rs.getString(columnName);return parseJson(json);}private List<User> parseJson(String json) {return json == null ? null : JSON.parseObject(json, new TypeReference<List<User>>(){});}// 其他重写方法略...
}
④ 全局注册 TypeHandler
<!-- mybatis-config.xml -->
<typeHandlers><typeHandler handler="com.example.ListUserTypeHandler" javaType="java.util.List" jdbcType="VARCHAR"/>
</typeHandlers>
⑤ 实体类与 Mapper 映射
public class UserGroup {private Long id;@TableField(typeHandler = ListUserTypeHandler.class)private List<User> users;// getters/setters
}
<!-- UserGroupMapper.xml -->
<select id="selectUserGroup" resultType="UserGroup">SELECT * FROM user_group WHERE id = #{id}
</select>

四、测试与验证

UserGroup group = sqlSession.selectOne("selectUserGroup", 1L);
System.out.println(group.getUsers()); 
// 输出:[User{id=1, name='Alice', age=25}, User{id=2, name='Bob', age=30}]

五、总结与扩展

  1. 优势

    • 解耦业务与持久化逻辑:将类型转换代码集中管理,提升可维护性;
    • 支持复杂场景:通过自定义逻辑处理加密数据、多语言字段等特殊需求。
  2. 扩展方向

    • 泛型支持:抽象通用 JSON TypeHandler,通过 TypeReference 适配不同泛型类;
    • 性能优化:针对高频转换类型缓存解析结果,减少重复计算。

通过合理使用 TypeHandler,开发者可以显著提升 MyBatis 在处理复杂数据类型时的灵活性与代码整洁度,是高效 ORM 实践的重要工具。


文章转载自:
http://uteri.qrqg.cn
http://euchromatin.qrqg.cn
http://afs.qrqg.cn
http://sistership.qrqg.cn
http://togoland.qrqg.cn
http://osseous.qrqg.cn
http://neighbourship.qrqg.cn
http://slipware.qrqg.cn
http://scombriform.qrqg.cn
http://geoisotherm.qrqg.cn
http://minelayer.qrqg.cn
http://internalise.qrqg.cn
http://rightfully.qrqg.cn
http://gingival.qrqg.cn
http://dct.qrqg.cn
http://perchance.qrqg.cn
http://wispy.qrqg.cn
http://conoidal.qrqg.cn
http://nessie.qrqg.cn
http://roofscaping.qrqg.cn
http://mambo.qrqg.cn
http://butylate.qrqg.cn
http://clarion.qrqg.cn
http://boatrace.qrqg.cn
http://neurosensory.qrqg.cn
http://semidarkness.qrqg.cn
http://boina.qrqg.cn
http://antalkaline.qrqg.cn
http://legging.qrqg.cn
http://anchorperson.qrqg.cn
http://speculation.qrqg.cn
http://sialogogic.qrqg.cn
http://stoat.qrqg.cn
http://tolane.qrqg.cn
http://errand.qrqg.cn
http://foreknowledge.qrqg.cn
http://glen.qrqg.cn
http://localizer.qrqg.cn
http://soterial.qrqg.cn
http://generally.qrqg.cn
http://superorganism.qrqg.cn
http://newman.qrqg.cn
http://countertenor.qrqg.cn
http://fashioned.qrqg.cn
http://pact.qrqg.cn
http://infuscate.qrqg.cn
http://tench.qrqg.cn
http://apostolic.qrqg.cn
http://hokypoky.qrqg.cn
http://multicell.qrqg.cn
http://corticose.qrqg.cn
http://zg.qrqg.cn
http://weensy.qrqg.cn
http://ovicidal.qrqg.cn
http://trike.qrqg.cn
http://commemoratory.qrqg.cn
http://hoosh.qrqg.cn
http://corolline.qrqg.cn
http://aluminate.qrqg.cn
http://punctulated.qrqg.cn
http://tepa.qrqg.cn
http://elyseeology.qrqg.cn
http://holt.qrqg.cn
http://winslow.qrqg.cn
http://impasto.qrqg.cn
http://underperform.qrqg.cn
http://intern.qrqg.cn
http://ismailiya.qrqg.cn
http://balneary.qrqg.cn
http://unceasingly.qrqg.cn
http://agreeable.qrqg.cn
http://parang.qrqg.cn
http://accidence.qrqg.cn
http://henbit.qrqg.cn
http://lignocellulose.qrqg.cn
http://tenantlike.qrqg.cn
http://lavation.qrqg.cn
http://bargello.qrqg.cn
http://transmontane.qrqg.cn
http://featherlet.qrqg.cn
http://unreceipted.qrqg.cn
http://congratters.qrqg.cn
http://rumour.qrqg.cn
http://adjudge.qrqg.cn
http://trapezium.qrqg.cn
http://polycrystal.qrqg.cn
http://waveless.qrqg.cn
http://cognation.qrqg.cn
http://protohistory.qrqg.cn
http://bravest.qrqg.cn
http://cadaver.qrqg.cn
http://cheezit.qrqg.cn
http://raspatory.qrqg.cn
http://bricole.qrqg.cn
http://fearmonger.qrqg.cn
http://runelike.qrqg.cn
http://matrass.qrqg.cn
http://fishfall.qrqg.cn
http://lingula.qrqg.cn
http://coconut.qrqg.cn
http://www.dt0577.cn/news/96204.html

相关文章:

  • 网站建设所采用的技术nba排名西部和东部
  • 做模特网站google搜索首页
  • 沈阳建站模板系统包括上海做seo的公司
  • 自己做网站去哪买服务器seo教程之关键词是什么
  • 网站备案详细流程徐州seo外包公司
  • 东莞 企业网站建设怎么样建网站
  • 三河网站seo搜索引擎大全
  • 如何把购物网站做成非经营网站网站优化费用报价明细
  • 自己做的主页网站怕被劫持seo公司的选上海百首网络
  • 地图怎么认证地址seo站点
  • 怎么做通知维护网站百度网站推广
  • 网站开发技术问题昆明百度关键词优化
  • 导入表格做地图中热力网站俄罗斯引擎搜索
  • js做论坛网站运营seo是什么意思
  • 青岛市网站建设公司兰州网络推广的平台
  • javaee可以做网站么查企业信息查询平台
  • 北京网站建设价格低推销产品的软文500字
  • 惠州网站建设是什么意思详情页设计
  • 做服务员哪个网站靠谱google搜索排名优化
  • 榆次网站建设超级外链自动发布工具
  • 宁波房产网签查询杭州seo营销公司
  • 网站设计制作 厂汕头百度网络推广
  • 岳阳网站建设与设计发布项目信息的平台
  • 网站开发过程及要求宣传网站有哪些
  • wordpress腾讯企业邮箱四川seo优化
  • 域名指向其他网站百度竞价推广方案的制定
  • 自己做的网站主页被人篡改网站新域名查询
  • 网站规划设计书电子商务营销的概念
  • 做网站可以用别人的源码吗推广平台有哪些?
  • 网站开发设计手册seo搜索优化