无论是从预处理语句中设置一个值,还是从结果集里取出一个值,都会用类型处理器将获取的值以合适的方式转换成 Java 类型

可以重写类型处理器或创建你自己的类型处理器来处理不支持的或非标准的类型

实现 org.apache.ibatis.type.TypeHandler 接口, 或继承一个很便利的类 org.apache.ibatis.type.BaseTypeHandler, 然后可以选择性地将它映射到一个 JDBC 类型

public class MyDemoTypeHandler extends BaseTypeHandler<String> {@Overridepublic void setNonNullParameter(PreparedStatement ps, int i, String parameter, JdbcType jdbcType)throws SQLException {String ssex=(String)parameter;if("男".equals(ssex)){ps.setInt(i, 0);}else if("女".equals(ssex)){ps.setInt(i, 1);}else{ps.setInt(i, 2);}}@Overridepublic String getNullableResult(ResultSet rs, String columnName) throws SQLException {int ssex=rs.getInt(columnName);if(ssex==0){return "男";}else if(ssex==1){return "女";}else{return "not know";}}@Overridepublic String getNullableResult(ResultSet rs, int columnIndex) throws SQLException {int ssex=rs.getInt(columnIndex);if(ssex==0){return "男";}else if(ssex==1){return "女";}else{return "not know";}}@Overridepublic String getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {int ssex=cs.getInt(columnIndex);if(ssex==0){return "男";}else if(ssex==1){return "女";}else{return "not know";}}}

  

1 <!-- mybatis-config.xml -->
2 <typeHandlers>
3         <typeHandler handler="cn.cgq.demo.mybatis.typeHandler.MyDemoTypeHandler" javaType="String" jdbcType="INTEGER"/>
4     </typeHandlers>

MyBatis 不会窥探数据库元信息来决定使用哪种类型,所以你必须在参数和结果映射中指明那是 VARCHAR 类型的字段, 以使其能够绑定到正确的类型处理器上。

在StudentMapper.xml中

1 <resultMap id="StudentResult" type="Student">
2        <id column="sid" property="sid"/>
3        <result column="sname" property="sname"/>
4        <result column="ssex" property="ssex" javaType="String" jdbcType="INTEGER"/>
5        <result column="saddress" property="saddress"/>
6     </resultMap>
7 <select id="selectStudentBySsex" parameterType="String" resultType="Student">
8         select * from Student where ssex=#{ssex,javaType=String,jdbcType=INTEGER}
9     </select>

javaType="String"java对应的数据类型

jdbcType="INTEGER"数据路对应的数据类型

表为4个字段,在数据库中ssex用int存储,而在java中用“男”,“女”来表示数据库中的0,1

1 Student student = session.selectOne("cn.cgq.demo.mybatis.mapper.StudentMapper.selectStudentBySsex", "女");
2                 System.out.println(student.toString());

这样就可以完成数据类型的转换

转载于:https://www.cnblogs.com/tademeng/p/6539155.html

mybatis基础,mybatis配置文件核心组件typeHandler元素相关推荐

  1. . mybatis指定配置文件的根元素_MyBatis框架

    1. MyBatis 环境搭建 jar 包详解 1.1 创建项目 java project 1.2 导入 jar 包 1.2.1 MyBatis 核心 jar mybatis-3.2.7.jar 1. ...

  2. MyBatis基础知识汇总

    文章目录 MyBatis简介 简介 MyBatis历史 为什么要用MyBatis? MyBatis入门 安装 从XML中构建SqlSessionFactory 不使用 XML 构建 SqlSessio ...

  3. 玩转Mybatis中的类型转换器TypeHandler

    点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! 抛开使用场景谈技术都是耍流氓 1. 场景 日常java开发中经常有这种需求,用0或者1这些代 ...

  4. mybatis基础总结02 -配置详解

    二 mybatis配置详解 MyBatis最关键的组成部分是SqlSessionFactory,我们可以从中获取SqlSession, 并执行映射的SQL语句.SqlSessionFactory对象可 ...

  5. mybatis中常用配置文件

    mybatis中的配置文件 1.全局配置文件 1.1 properties:读取外部资源 properties文件,以key-value形式读取,以=为分隔符 例如: resources下创建db.p ...

  6. java mybatis基础

    java mybatis基础 1.1 什么是mybatis? mybatis是一个优秀的持久层框架. 避免几乎所有的JDBC代码和手动设置参数以及获取结果集的过程. 可以使用简单的xml或者注解来配置 ...

  7. java学mybatis还用学jdbc吗,mybatis系统学习(二)——使用基础mybatis代替原始jdbc

    mybatis系统学习(二)--使用基础mybatis代替原始jdbc 前言 这一篇笔记的内容应当是建立在上一篇的基础之上,不论是使用的数据表,还是对应的实体类,都在上一篇有过说明. 有兴趣的或者对相 ...

  8. Mybatis基础:增删改查、模糊查询、多条件查询

    Mybatis基础:增删改查.模糊查询.多条件查询http://www.bieryun.com/3132.html 1.新建测试数据库,根据实体类属性创建 2.实体类 [java] view plai ...

  9. MyBatis基础知识概述

    一.依赖配置 添加依赖即可,jar包或pom依赖: <dependency><groupId>org.mybatis</groupId><artifactId ...

最新文章

  1. 百度Q3财报里的“大生意”
  2. 移动安全问题不可掉以轻心,Check Point剖析近日移动安全问题
  3. python的用途实例-Python基础之函数原理与应用实例详解
  4. 根据RTL图编写Verilog程序
  5. 【Linux进程、线程、任务调度】一 Linux进程生命周期 僵尸进程的含义 停止状态与作业控制 内存泄漏的真实含义 task_struct以及task_struct之间的关系
  6. php mysql 地理位置_MySQL版中国省市区地址地区信息数据表
  7. 在Ubuntu下安装qq
  8. idea 部署 web tomcat
  9. Java集合——TreeMap源码详解
  10. FISCO BCOS 确定性多合约并行(DMC)
  11. [4G5G专题-45]:物理层-基带子载波数字调制解调(星座图, 相位调制PSK, 正交幅度相位调制QAM)
  12. Vue+MDUI+Muse-UI的使用与安装
  13. windows10用户密码获取
  14. SpringBoot的嵌入式servlet容器
  15. 2017年Android恶意软件专题报告
  16. 色彩专题(PS的颜色理论)
  17. 易语言 文件捆绑机的原理【转载】
  18. 2020数学建模国赛A题解题思路
  19. 使用Ajax传用户信息数据到后端
  20. java毕业设计车牌信息管理系统Mybatis+系统+数据库+调试部署

热门文章

  1. 设计模式总结篇系列:原型模式(Prototype)
  2. C#面向对象(四)虚方法实现多态
  3. 队列加锁无锁栈实现一例
  4. list字母排序 java_通过Java排序List集合的元素的几种方法
  5. 精妙的单片机非阻塞延时程序设计
  6. C51位运算应用技巧
  7. Linux redhat 9.0 中挂载U盘的方法!
  8. plt.xlabel 'str' object is not callable
  9. 语音识别可以直接编码吗
  10. 基于hi-nginx的web开发(python篇)——路由装饰器