广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Mybatis的类型转换接口TypeHandler
  • 797
分享到

Mybatis的类型转换接口TypeHandler

Mybatis类型转换接口Mybatis TypeHandler 2022-11-13 14:11:27 797人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

目录类型处理器接口TypeHandler类型处理器BaseTypeHandlerjdbc类型转为java类型java类型转为jdbc类型总结前言: mybatis可以实现jdbc类型

前言:

mybatis可以实现jdbc类型和java类型之间的转换,具体来说有一个类型转换器的接口

类型处理器接口TypeHandler

public interface TypeHandler<T> {

  void setParameter(PreparedStatement ps, int i, T parameter, JdbcType jdbcType) throws sqlException;

  
  T getResult(ResultSet rs, String columnName) throws SQLException;

  T getResult(ResultSet rs, int columnIndex) throws SQLException;

  T getResult(CallableStatement cs, int columnIndex) throws SQLException;

}

类型处理器BaseTypeHandler

jdbc类型转为java类型

BaseTypeHandler实现了TypeHandler接口,实现了setParameter()方法:

@Override
  public void setParameter(PreparedStatement ps, int i, T parameter, JdbcType jdbcType) throws SQLException {
    if (parameter == null) {
      if (jdbcType == null) {
        throw new TypeException("JDBC requires that the JdbcType must be specified for all nullable parameters.");
      }
      try {
        ps.setNull(i, jdbcType.TYPE_CODE);
      } catch (SQLException e) {
        throw new TypeException("Error setting null for parameter #" + i + " with JdbcType " + jdbcType + " . "
              + "Try setting a different JdbcType for this parameter or a different jdbcTypeForNull configuration property. "
              + "Cause: " + e, e);
      }
    } else {
      try {
        setNonNullParameter(ps, i, parameter, jdbcType);
      } catch (Exception e) {
        throw new TypeException("Error setting non null for parameter #" + i + " with JdbcType " + jdbcType + " . "
              + "Try setting a different JdbcType for this parameter or a different configuration property. "
              + "Cause: " + e, e);
      }
    }
  }

这个方法中就是设置PreparedStatement的参数,也是参数绑定,将jdbcType转为Java类型,setNonNullParameter是抽象方法,根据不同的参数类型有不同的类实现了这个方法,比如

LongTypeHandler实现的setNonNullParameter()方法:

@Override
  public void setNonNullParameter(PreparedStatement ps, int i, Long parameter, JdbcType jdbcType)
      throws SQLException {
    ps.setLong(i, parameter);
  }

java类型转为jdbc类型

BaseTypeHandler的getResult()方法:

@Override
  public T getResult(CallableStatement cs, int columnIndex) throws SQLException {
    try {
      return getNullableResult(cs, columnIndex);
    } catch (Exception e) {
      throw new ResultMapException("Error attempting to get column #" + columnIndex + " from callable statement.  Cause: " + e, e);
    }
  }

方法也比较简单,直接调用了getNullableResult抽象类,功能就是从ResultSet中获取数据,把Java类型转换为JdbcType类型,比如LongTypeHandler实现的getNullableResult():

@Override
  public Long getNullableResult(ResultSet rs, String columnName)
      throws SQLException {
    long result = rs.getLong(columnName);
    return result == 0 && rs.wasNull() ? null : result;
  }

通过源码分析我们知道了TypeHandler接口的作用就是用来实现类型转换的,mybatis在初始化的时候就获取TypeHandler,然后创建TypeHandler实例注册到TypeHandlerReGIStry中,由TypeHandlerRegistry来进行管理这些实例,下篇文章中我们介绍一下TypeHandlerRegistry这个类

总结

文章讲了Mybatis的类型转换接口TypeHandler和它的实现类BaseTypeHandler,类型转换接口显然就是实现jdbc类型和java类型之间的转换,同时分析了BaseTypeHandler的setParameter()方法和getResult()方法,getNullableResult是抽象类,具体方法由其他实现类进行实现。

到此这篇关于Mybatis的类型转换接口TypeHandler的文章就介绍到这了,更多相关Mybatis类型转换内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: Mybatis的类型转换接口TypeHandler

本文链接: https://www.lsjlt.com/news/172214.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Mybatis的类型转换接口TypeHandler
    目录类型处理器接口TypeHandler类型处理器BaseTypeHandlerjdbc类型转为java类型java类型转为jdbc类型总结前言: mybatis可以实现jdbc类型...
    99+
    2022-11-13
    Mybatis类型转换接口 Mybatis TypeHandler
  • Mybatis自定义typeHandler实现类型转化
     Mybatis类型转换介绍1.1     目录1.2     建立TypeHandler1.2.1&nb...
    99+
    2022-10-18
  • MyBatisPlus TypeHandler自定义字段类型转换Handler
    目录前言一、思考二、解决方式2.1、TypeHandler源码2.2、BaseTypeHandler 源码2.3、BigIntegerTypeHandler 源码中的实现类2.4、尝...
    99+
    2022-11-13
    MyBatisPlus字段类型转换 MyBatisPlus TypeHandler
  • go语言接口类型如何转换
    这篇文章主要介绍“go语言接口类型如何转换”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“go语言接口类型如何转换”文章能帮助大家解决问题。go语言可利用类型断言来进行接口类型。在Go中,无论是将一个...
    99+
    2023-07-05
  • Mybatis-plus 使用 typeHandler 将 String 拼接字符串转换为 List 列表
    一、需求描述 首先说明需求,有三张表: 学生表、角色表、以及一张关联的中间表。 学生可以有多个角色,但是这多个角色我是作为多条记录存储在另外一张表中的,现在想将这多条记录查询出来,注入到Stude...
    99+
    2023-09-05
    mybatis java mysql
  • mybatis-plus 分页类型转换工具类
    前言  用mybatis-plus 的分页对象的时候,因为用mybatis-puls 查询出来的分页对象的records里的泛型是实体,有时候需要将实体转换为前端展示的对象...
    99+
    2022-11-13
  • go 类型转换方式(interface 类型的转换)
    go 在做类型转换时,报错: cannot convert m (type interface {}) to type Msg: need type assertion 原...
    99+
    2022-06-07
    GO interface 类型转换
  • mybatis-plus分页类型转换工具类怎么用
    本文小编为大家详细介绍“mybatis-plus分页类型转换工具类怎么用”,内容详细,步骤清晰,细节处理妥当,希望这篇“mybatis-plus分页类型转换工具类怎么用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧...
    99+
    2023-06-29
  • Mybatis之类型处理器TypeHandler的作用与自定义方式
    目录一、什么是类型处理器1、类型处理器(TypeHandler)2、Mybatis内置了哪些类型处理器二、如何自定义类型处理器1、写个处理器2、配置处理器3、验证处理器总结一、什么是...
    99+
    2023-05-14
    Mybatis类型处理器 Mybatis TypeHandler作用 Mybatis TypeHandler自定义
  • go类型转换及与C的类型转换方式
    GO类型转换及与C的类型转换 类型转换 语法 dst := float32(src) 示例 var num int = 520 f32 := float32(num) i6...
    99+
    2022-06-07
    GO
  • PHP接口中如何处理重定向的数据类型转换?
    PHP是一种广泛使用的编程语言,它可以用来开发Web应用程序。在Web应用程序中,接口是非常常见的一种开发方式。接口可以让Web应用程序与其他系统进行交互,以便实现数据的共享和传输。在接口开发中,重定向是一个非常常见的问题,因为它涉及到数据...
    99+
    2023-10-21
    接口 重定向 数据类型
  • java的类型转换
    有关int与string的互转[@more@]如何将字串 String 转换成整数 int A. 有两个方法: 1). int i = Integer.parseInt([String]); 或 i = Integer.parseInt([...
    99+
    2023-06-03
  • Spring Boot中如何使用Convert接口实现类型转换器
    目录使用Convert接口实现类型转换器Converter接口添加依赖实体类1.User类2.Article类配置类型转化器1.定义全局日期转换器2.定义全局对象转换器3.定义全局L...
    99+
    2022-11-12
  • 关于泛型擦除问题的解决--Mybatis查询类型转换
    目录概念介绍问题案例原因分析解决方案总结概念介绍 Java语言的泛型采用的是擦除法实现的伪泛型,泛型信息(类型变量、参数化类型)编译之后通通被除掉了。使用擦除法的好处就是实现简单、非...
    99+
    2022-11-13
  • kotlin的数据类型和类型转换
    在 Kotlin 中,数据类型是变量或表达式的属性,确定了存储的数据类型以及可以在该数据上执行的操作。Kotlin 支持与 Java 类似的基本数据类型,但还引入了一些增强的数据类型和类型安全的特性。...
    99+
    2023-10-27
    后端 kotlin
  • mybatis类型转换器如何实现数据加解密
    目录mybatis类型转换器数据加解密背景需求mybatis 类型转换器数据加解密类型转换使用方法mybatis密码解密mybatis的配置properties的配置mybatis类...
    99+
    2022-11-12
  • 如何使用mybatis自定义日期类型转换器
    本篇内容主要讲解“如何使用mybatis自定义日期类型转换器”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用mybatis自定义日期类型转换器”吧!前言使用mybatis中的typeHan...
    99+
    2023-06-29
  • Python转换数据类型函数和转换数据类型的作用
    目录一、转换数据类型的作用(必要性)二、转换数据类型的函数三、快速体验数据类型转换前言: 学习Python的转换数据类型前期主要学习目标有两个,一是数据类型转换的必要性,二是数据类型...
    99+
    2022-11-13
  • Java下数字类型的转换 (转)
    Java下数字类型的转换 (转)[@more@]作者:家居猫 各种数字类型转换成字符串型: String s = String.valueOf( value); // 其中 value 为任意一种数字类型。 字符串型转换成各种数字类型: S...
    99+
    2023-06-03
  • JavaScript类型转换的应用
    这篇文章主要介绍“JavaScript类型转换的应用”,在日常操作中,相信很多人在JavaScript类型转换的应用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”JavaScript类型转换的应用”的疑惑有所...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作