添加依赖包
<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类型的问题,就需要修改生成代码的模板文件了。
网友评论