• MyBatis的类型自定义映射


    背景

    利用MyBatis将数据库的时间类型映射成Java8的时间类型,引申对不同类型的自定义映射

    实现方法

    1.实现MyBatis中TypeHandler接口

    @MappedTypes(value = DateTime.class)
    @MappedJdbcTypes(value = {JdbcType.DATE,JdbcType.TIME,JdbcType.TIMESTAMP})
    public class DateTimeTypeHandler extends BaseTypeHandler<DateTime> {
    
      //implement all methods
    }
    

    具体内容件参考[3]

    2.在MyBatis的配置文件中添加

    <typeHandlers>
      <typeHandler handler="your.package.LocalDateTypeHandler"/>
    </typeHandlers>
    

    或者

    <typeHandlers>
      <package name="org.mybatis.example"/>
    </typeHandlers>
    

    如果是在MyBatis-Spring集成的配置中

    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    // ... <property name="typeHandlersPackage" value="...."/> // or <property name="typeHandlers"> <array></array> </property> </bean>

    3. 使用TypeHandler

    手写可以在mapper.xml中选择TypeHandler

    <result column="use_date" property="useDate" javaType="java.time.LocalDate" jdbcType="DATE" typeHandler="org.apache.ibatis.type.LocalDateTypeHandler" />
    

    类型不是都必须的,会根据typeHandler寻找合适的类型

    生成可以使用MyBatisGenerator的columnOverride元素

    <table tableName="get_money_limit" domainObjectName="GetMoneyLimit">
        <columnOverride column="use_date" javaType="java.time.LocalDate"/>
    </table>
    <table tableName="get_money_history" domainObjectName="GetMoneyHistory">
        <columnOverride column="operate_date" javaType="java.time.LocalDate"/>
    </table>
    

    其他

    MyBatis已经官方增加了java8的一些类型的TypeHandler,需要Mybatis升级到3.4以上,引入:

    <dependency>
     <groupId>org.mybatis</groupId>
     <artifactId>mybatis-typehandlers-jsr310</artifactId>
     <version>1.0.1</version>
    </dependency>
    

    参考资料

    [1]Java 8 LocalDate mapping with mybatis
    [2]mybatis generator columnOverride 元素
    [3]typeHandlers 文档

  • 相关阅读:
    POJ 3258 (NOIP2015 D2T1跳石头)
    POJ 3122 二分
    POJ 3104 二分
    POJ 1995 快速幂
    409. Longest Palindrome
    389. Find the Difference
    381. Insert Delete GetRandom O(1)
    380. Insert Delete GetRandom O(1)
    355. Design Twitter
    347. Top K Frequent Elements (sort map)
  • 原文地址:https://www.cnblogs.com/imyijie/p/6087984.html
Copyright © 2020-2023  润新知