无论是MyBatis 在预处理语句中设置一个参数,还是从结果集中取出一个值时,类型处
理器被用来将获取的值以合适的方式转换成Java 类型。下面这个表格描述了默认的类型处
理器。
类型处理器 Java 类型 JDBC 类型
BooleanTypeHandler Boolean,boolean 任何兼容的布尔值
ByteTypeHandler Byte,byte 任何兼容的数字或字节类型
ShortTypeHandler Short,short 任何兼容的数字或短整型
IntegerTypeHandler Integer,int 任何兼容的数字和整型
LongTypeHandler Long,long 任何兼容的数字或长整型
FloatTypeHandler Float,float 任何兼容的数字或单精度浮点型
DoubleTypeHandler Double,double 任何兼容的数字或双精度浮点型
BigDecimalTypeHandler BigDecimal 任何兼容的数字或十进制小数类型
StringTypeHandler String CHAR 和VARCHAR 类型
ClobTypeHandler String CLOB 和LONGVARCHAR 类型
NStringTypeHandler String NVARCHAR 和NCHAR 类型
NClobTypeHandler String NCLOB 类型
ByteArrayTypeHandler byte[] 任何兼容的字节流类型
BlobTypeHandler byte[] BLOB 和LONGVARBINARY 类型
DateTypeHandler Date (java.util ) TIMESTAMP 类型
DateOnlyTypeHandler Date (java.util ) DATE 类型
TimeOnlyTypeHandler Date (java.util ) TIME 类型
SqlTimestampTypeHandler Timestamp (java.sql ) TIMESTAMP 类型
SqlDateTypeHandler Date (java.sql ) DATE 类型
SqlTimeTypeHandler Time (java.sql ) TIME 类型
ObjectTypeHandler Any 其他或未指定类型
EnumTypeHandler Enumeration 类型 VARCHAR-任何兼容的字符串类型,作为代码存储(而不是索引)。
但是,有时候我们自定义java类型,需要入库,比如 java类型为:java.util.UUID,数据库类型为:varchar2。
对java.util.UUID了解的话,java.util.UUID是没有提供属性,使用#{uuid.properties}是不可行的。
这是时候我们需要使用mybatis提供typeHandle扩展来完成。
举例:
import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.UUID;
import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType;
public class UUIDTypeHandler extends BaseTypeHandler {
@Override
public Object getNullableResult(ResultSet rs, String columnName)
throws SQLException {
return UUID.fromString(rs.getString(columnName));
}
@Override
public Object getNullableResult(CallableStatement cs, int columnIndex)
throws SQLException {
return UUID.fromString((cs.getString(columnIndex)));
}
@Override
public void setNonNullParameter(PreparedStatement ps, int i,
Object parameter, JdbcType jdbcType) throws SQLException {
ps.setString(i, ((UUID) parameter).toString());
}
}
<typeHandlers>
<typeHandler handler="com.mapper.UUIDTypeHandler"
javaType="UUID" jdbcType="VARCHAR" />
</typeHandlers>
<id property="uuid" column="P_ID" typeHandler="com.mapper.UUIDTypeHandler"/>
或者
#{pack.uuid,typeHandler=com.mapper.UUIDTypeHandler}
分享到:
相关推荐
mybatis中文离线文档
mybatis简单使用mybatis简单使用demomybatis简单使用demomybatis简单使用demomybatis简单使用demomybatis简单使用demomybatis简单使用demomybatis简单使用demomybatis简单使用demomybatis简单使用demomybatis简单...
此资源为MyBatis连接数据库所需扩展包,配合MyBatis连接数据库的相关文章使用。如发现异常,请及时告知我,以至于能够及时排除,致谢。
MyBatis 中文注释源码,直接导入eclipse工程即可,源码中加了中文注释,可以学习研究底层,成就自我成长!
mybatis中mapper文件resultMap中collection和association的使用,参考地址:https://blog.csdn.net/zhizhuodewo6/article/details/82863452
mybatis_3.5.9官方中文文档pdf
NULL 博文链接:https://zw7534313.iteye.com/blog/2404288
Mybatis中执行String类型的自己拼写的sql,不执行配置文件中的sql mybatis sql connection mybatis中使用sql,不实用配置文件中的sql实例
本文档主要讲解Spring与mybatis与jdbc结合使用的方法和例子。
MyBatis 的 Beetl 脚本语言扩展,支持使用 Beetl 作为 mapper 的动态脚本语言,用以编写动态 SQL。 标签:MyBatis
mybatis的中文学习文档,如果你学过hibernate。看这个文档半个小时入门一下应该没问题。
在本学习教程中,全方位介绍了mybatis中的各种特性,里面的实例都是采用比较简单的实例来实现,对于有些没有介绍到的特性,大家可以参考官方文档。本教程采用的是mybatis最新的版本mybatis3.1,并结合了maven来写这...
mybatis的各种使用与MP各种使用,源码和笔记
springboot集成redis、mybatis 1、集成redis 2、集成mybatis 3、自定义redis KEY生成器/...6、二级缓存联合使用 方式一:redis原生方法工具类(RedisService)+redis+mybatis 方式二:CacheManager+redis+mybatis
Mybatis API中文帮助文档 Mybatis API中文帮助文档 Mybatis API中文帮助文档 Mybatis API中文帮助文档 Mybatis API中文帮助文档 Mybatis API中文帮助文档 Mybatis API中文帮助文档 Mybatis API中文帮助文档 Mybatis ...
mybatis中,sqlserver分页
mybatis-3.0.5.jar mybatis-generator-core-1.3.1.jar mybatis-spring-1.0.1.jar
mybatis中文帮助文档和应用jar包.
springboot整合mybatis整合jpa使用entityManger整合readis以及微信支付和支付宝支付
MyBatis基本使用总结 Mybatis 的核心配置文件于实体类的映射文件,mapper 代理动态代理的调用方法。