无论是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}
分享到:
相关推荐
11. **MyBatis与Spring的整合**:在实际项目中,MyBatis通常与Spring框架结合使用,通过Spring的事务管理、依赖注入等功能,可以使MyBatis的使用更加简便。 以上只是MyBatis框架的一部分关键知识点,完整的中文离线...
MyBatis是一款强大的Java持久层框架,它简化了与数据库之间的交互,允许开发者将SQL语句直接编写在映射文件中,提供了灵活的数据访问层。本资源提供的"MyBatis连接数据库所需扩展包"是为了帮助开发者顺利配置和使用...
标题“hibernate与mybatis一起使用取长补短”暗示了在一个项目中同时采用这两种框架,旨在充分利用它们各自的优点,以提升项目的性能和灵活性。 Hibernate是一款强大的ORM框架,它提供了完整的对象模型支持,包括...
本文将深入探讨如何对MyBatis的二级缓存进行扩展,并将其与Redis集成,以充分利用分布式缓存的优势。 MyBatis的二级缓存是基于全局的,它允许不同的SqlSession共享相同的缓存数据。默认情况下,MyBatis的二级缓存是...
Mybatis的扩展插件可以与ShardingSphere进行集成,以充分利用其强大功能。 总之,Mybatis分库分表扩展插件是解决大数据量、高并发场景下数据库性能瓶颈的有效手段。通过自定义拦截器、路由算法和配置管理,我们可以...
mybatis简单使用mybatis简单使用demomybatis简单使用demomybatis简单使用demomybatis简单使用demomybatis简单使用demomybatis简单使用demomybatis简单使用demomybatis简单使用demomybatis简单使用demomybatis简单...
11. **插件机制**:阐述Interceptor插件的工作原理,以及如何编写和使用插件来扩展MyBatis的功能,如PageHelper分页插件。 12. **异常处理**:列出MyBatis中常见的异常类型,以及如何处理这些异常。 13. **附录与...
总结起来,通过在Mybatis逆向生成的基础上使用扩展类,我们可以更好地管理和维护代码,同时保持业务逻辑的独立性。这种方法提高了代码的可读性和可维护性,降低了开发成本,是Mybatis项目中的一个实用技巧。
MyBatis 的安装和使用非常简单,只需要将 mybatis-x.x.x.jar 文件置于类路径(classpath)中即可。如果使用 Maven 来构建项目,则需将下面的依赖代码置于 pom.xml 文件中: ``` <groupId>org.mybatis ...
- Spring中使用MyBatis的配置,如SqlSessionFactoryBean的配置,以及事务管理的整合。 12. **MyBatis的最佳实践**: - 如何设计Mapper接口和实体类,以保持代码的整洁和高效。 - 何时使用Mapper XML文件,何时...
5. **MyBatis-Spring**:`mybatis-spring-1.0.1.jar` 是 MyBatis 与 Spring 集成的库,它使得 MyBatis 可以无缝地融入到 Spring 应用中,例如通过 Spring 的事务管理控制 MyBatis 的事务,将 Mapper 接口自动注入到 ...
MyBatis 是一款深受开发者喜爱的持久层框架,它简化了Java应用与数据库之间的交互,提供了灵活的SQL映射框架,使得开发人员可以避免编写大量的JDBC代码。这份"MyBatis 中文官方文档"是学习和理解MyBatis的重要资源,...
MyBatis可以对配置和原生Map使用简单的XML或注解,将接口和Java的POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。MyBatis的其他语言版本包括英语、西班牙语、日语和韩语,以及简体中文。 ...
为了实现接口方法与映射文件中定义的SQL的关联,MyBatis使用了动态代理机制。在运行时,MyBatis会为每个Mapper接口生成一个实现了该接口的代理类,当调用接口方法时,实际上执行的是代理类中的方法,这个方法会解析...
首先,MyBatis的入门安装很简单,对于使用Maven构建项目的用户来说,只需在pom.xml文件中加入指定版本的mybatis依赖即可。而对于不使用Maven的用户,则需要将mybatis的jar包放置在项目的classpath中。这个过程是...
在本示例中,我们将不使用Mapper接口来演示如何通过MyBatis进行基本的数据库查询,这对于理解MyBatis的核心工作原理是非常有帮助的。 首先,MyBatis的核心组件包括XML配置文件、SqlSessionFactory和SqlSession。XML...
本部分主要关注如何单独使用MyBatis,不涉及与其他框架的集成。 1. **MyBatis简介** MyBatis消除了几乎所有的JDBC代码和手动设置参数以及获取结果集。它将SQL语句与Java代码分离,提供了一个更简洁、更易于维护的...
mybatis中mapper文件resultMap中collection和association的使用,参考地址:https://blog.csdn.net/zhizhuodewo6/article/details/82863452
MyBatis Generator 使用手册 MyBatis Generator 是 MyBatis 的代码生成工具,旨在通过反射数据库表结构生成对应的Java代码,简化开发过程,提高开发效率。本手册将指导用户如何使用 MyBatis Generator 生成代码,...