美文网首页
使用JDK8日期API过程

使用JDK8日期API过程

作者: 大唐雷恋 | 来源:发表于2019-06-10 18:06 被阅读0次

添加依赖包

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

注:如果使用的mybatis版本低于3.4.0,则还需要配置如下

找到mybatis配置节点

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!--数据库连接池 -->
        <property name="dataSource" ref="main_dataSource"/>
        <!--加载mybatis的全局配置文件 -->
        <!-- <property name="configLocation" value="classpath:mybatis/sqlMapConfig.xml"/> -->
        <property name="mapperLocations" value="classpath*:mapper/**/*Mapper.xml"/>
        <property name="configLocation" value="classpath:spring/mybatis-config.xml"></property>
    </bean>

mybatis-config.xml配置文件的内容如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <typeHandlers>
        <typeHandler handler="org.apache.ibatis.type.InstantTypeHandler"/>
        <typeHandler handler="org.apache.ibatis.type.LocalDateTimeTypeHandler"/>
        <typeHandler handler="org.apache.ibatis.type.LocalDateTypeHandler"/>
        <typeHandler handler="org.apache.ibatis.type.LocalTimeTypeHandler"/>
        <typeHandler handler="org.apache.ibatis.type.OffsetDateTimeTypeHandler"/>
        <typeHandler handler="org.apache.ibatis.type.OffsetTimeTypeHandler"/>
        <typeHandler handler="org.apache.ibatis.type.ZonedDateTimeTypeHandler"/>
    </typeHandlers>
</configuration>

以上步骤以后基本就可以正操在代码中使用jdk8的LocalDate,LocalDateTime等api,也可以正常的结合mybatis使用了,有时候,复杂sql还是会报找不到对应的typeHandler,这时候配置如下:

<resultMap type="com.****.mrpprocess.mrp.MRPTimeFence" id="mrpTimeFenceMapper">
        <id column="id" property="id"/>
        <result column="code" property="code"/>
        <result column="description" property="description"/>
        <result column="create_date" property="createDate" typeHandler="org.apache.ibatis.type.LocalDateTypeHandler"/>
        <result column="create_user" property="createUser"/>
        <result column="modify_date" property="modifyDate" typeHandler="org.apache.ibatis.type.LocalDateTypeHandler"/>
        <result column="modify_user" property="modifyUser"/>
        <result column="create_time" property="createTime" typeHandler="org.apache.ibatis.type.LocalDateTimeTypeHandler"/>
        <result column="modify_time" property="modifyTime" typeHandler="org.apache.ibatis.type.LocalDateTimeTypeHandler"/>
        <collection property="timeFenceDetails" column="id" javaType="ArrayList" ofType="com.yonyoucloud.mrpprocess.mrp.MRPTimeFenceDetail"
                    select="getTimeFenceDetail">
            <id column="id" property="Id"/>
            <result column="timeFenceId" property="timeFenceId"/>
            <result column="sortseq" property="sortSeq"/>
            <result column="days" property="days"/>
            <result column="demandSourceTypeInt" property="demandSourceTypeInt"/>
        </collection>
    </resultMap>

如果还需要考虑之前有代码使用Date或者DateTime的类型,需要做转换的可以使用下边的方法:

public static Date localDateTime2Date(LocalDateTime localDateTime) {
        return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant());
    }

    public static LocalDateTime date2LocalDateTime(Date date) {
        return LocalDateTime.ofInstant(date.toInstant(), ZoneId.systemDefault());
    }

或者之前修改之前的类别,使用jdk8的最新api。对于元数据中生成代码使用到Date或者DateTime类型的问题,就需要修改生成代码的模板文件了。

相关文章

网友评论

      本文标题:使用JDK8日期API过程

      本文链接:https://www.haomeiwen.com/subject/wfdtfctx.html