Mybatis 类的转换器
想一个事情 ,例:
我数据库的表 定义了一个表student 里面有一个字段 stu_sex int类型 可是我对应的实体类是 String 类型或者其他类型
这个时候 实体类与数据库表肯定对应不上 我该怎么办呢?怎么解决这个问题? 《针对于极端类型》《一般没人这么写》
我现在有一个表:student表 1表示男 0 表示女

对应的实体类 Student类:“男” --“女”

1. 这个使用就需要用到mybatis提供的类转换器了:
首先我们需要创建一个转换器 转换器就是一个java类 这个类实现了TypeHandler 接口 或者继承了BaseTypeHandler类 他就是一个转换器了!一般都继承BaseHandler类 因为方便些!
package org.bin.test;
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; /**
* 类的转换器 现在要把 数据库中的 Int 转换成String类型
* 需要继承 BaseTypeHandler 这类
*/ /*
* preparedStatement:PreparedStatement对象
* i:PreparedStatement对象操作参数的位置
* s:java值
* jdbcType:jdbc操作的数据库类型
*/
public class TypeHandlerAndString extends BaseTypeHandler<String> {
@Override
public void setNonNullParameter(PreparedStatement preparedStatement, int i, String s, JdbcType jdbcType) throws SQLException {
//判断如果是男的 向数据库插入1 如果不是 插入 0
if (s.equals("男")){
preparedStatement.setInt(i,1);
}else {
preparedStatement.setInt(i,0);
}
} @Override
public String getNullableResult(ResultSet resultSet, String s) throws SQLException {
int sex = resultSet.getInt(s);
return sex == 1 ? "男":"女";
} @Override
public String getNullableResult(ResultSet resultSet, int i) throws SQLException {
int sex = resultSet.getInt(i);
return sex == 1 ? "男":"女";
} @Override
public String getNullableResult(CallableStatement callableStatement, int i) throws SQLException {
int sex = callableStatement.getInt(i);
return sex == 1 ? "男":"女";
}
}

重写类的方法:
set 就是java 向数据库存取
get就是数据库读到java
2.配置mybatis的核心配置文件

现在我们可以看到 handler:转换器的全路径 jdbctype:数据库字段 的类型 javatype :实体类中的类型
3.我们现在编写Mapper.xml文件配置

注意:现在数据库的字段类型 与 实体类的类型不一样了 返回值就不是 resultType了 而是变成了 resultMap!!
我们现在创建一个 resultMap标签
注意我圈出来的 地方 这些都是主要注意的地方!
测试:


好了测试成功了!数据库存的是0 获取到的是女 测试成功!
Mybatis 类的转换器的更多相关文章
- mybatis typeHandler类型转换器
typeHandler类型转换器 在JDBC中,需要在PreparedStatement对象中设置那些已经预编译过的SQL语句的参数.执行SQL后,会通过ResultSet对象获取得到数据库的数据,而 ...
- Mybatis 类属性和字段映射小小分析
在上一篇 [Mybatis 点点滴滴]博客中,写到了 Mybatis 能够将类属性和表字段自动对应起来,在 parameterType属性值直接填写 POJO 类的名称即可(首字母不区分大小写),在 ...
- mybatis 自定义类型转换器 (后台日期类型插入数据库)
后台日期类型插入数据库 有以下几种发法: 1 调用数据库 日期字符串转日期函数 str_to_date("日期","yyyy-MM-dd HH:mm:ss") ...
- mybatis 类创建流程
Configuration ---> XmlConfigBuilder ---> SqlSessionFactoryBuilder ---> SqlSessionFactory(Co ...
- Struts2 请求数据的自动封装 及 自定义转换器类
请求数据自动封装: 实现原理:使用了参数拦截器.struts-default.xml中 <interceptor name="params" class="com. ...
- mybatis与hibernate常用的持久化类,及sqlsession和sqlsessionTemplate区别
首先, 通过翻阅源码,我们来整理一下mybatis进行持久化操作时重要的几个类:SqlSessionFactoryBuilder:build方法创建SqlSessionFactory实例.SqlSes ...
- Mybatis总结之如何自动生成数据库表结构
一般情况下,用Mybatis的时候是先设计表结构再进行实体类以及映射文件编写的,特别是用代码生成器的时候. 但有时候不想用代码生成器,也不想定义表结构,那怎么办? 这个时候就会想到Hibernate, ...
- mybatis 枚举typeHandler
枚举typeHandler 在绝大多数情况下,typeHandler因为枚举而使用,MyBatis已经定义了两个类作为枚举类型的支持,这两个类分别是: •EnumOrdinalTypeHandler. ...
- Struts2第五篇【类型转换器、全局、局部类型转换器】
前言 上篇博文已经讲解了,Struts2为我们实现了数据自动封装-由上篇的例子我们可以看出,表单提交过去的数据全都是String类型的,但是经过Struts自动封装,就改成是JavaBean对应成员变 ...
随机推荐
- ThreadLocal<T> 类
using System; using System.Threading; using System.Threading.Tasks; class ThreadLocalDemo { // Demon ...
- 119. Pascal's Triangle II (Graph; WFS)
Given an index k, return the kth row of the Pascal's triangle. For example, given k = 3, Return [1,3 ...
- git的基本命令
在当前目录新建一个git代码库$ git init 设置提交代码时的用户信息:$ git config [--global] user.name "[name]"$ git con ...
- mybatis使用foreach进行批量插入和删除操作
一.批量插入 1.mapper层 int insertBatchRoleUser(@Param("lists") List<RoleUser> lists);//@Pa ...
- lombok 介绍及基本使用方法
Lomboz是一个基于LGPL的开源J2EE综合开发环境的Eclipse插件,对编码,发布,测试,以及debug等各个软件开发的生命周期提供支持,支持JSP,EJB等.Lomboz是Eclipse的一 ...
- exe怎么找main函数
先说DEBUG版本的命令行EXE main函数有两种,第一种是int main(),第二种是int main(int argc,char* argv[]) 不管哪种只要查找j___p___argc就能 ...
- [OS] 远程启动计划任务时以管理员身份运行
在Jenkins建了一个task自动启动Selenium的Grid,命令行是这样写的: schtasks /end /tn RestartGrid /s SZTEST201606 /u szdomai ...
- 本周MySQL官方verified/open的bug列表(11月8日至11月14日)
本周MySQL verified的bug列表(11月8日至11月14日) 1. Bug #70859-DWITH_EXAMPLE_STORAGE_ENGINE=1 is ignored URL ...
- WAMP不能启动, 一直处于红色图标或者橙色图标的解决办法
WAMP不能启动, 一直处于红色图标(正常启动为绿色吧) 考虑是端口的问题,我找到wamp文件夹中的wamp\bin\apache\apache2.2.22\conf路径下的httpd.conf文件, ...
- 同时安装2个版本的python
使用pip 当Python2和Python3同时存在于windows上时,它们对应的pip都叫pip.exe,所以不能够直接使用 pip install 命令来安装软件包.而是要使用启动器py.exe ...