java8之前的日期处理有多恶心,相信很多人都深有体会。与mabatis集成查询数据库中的日期字段映射为java日期类型或者字符型的时候,会多出一个".0"。固然能够自行处理。可是显得太不优雅。能够经过自定义一个数据类型转换器,来格式化。java
import java.sql.CallableStatement; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Timestamp; import org.apache.commons.lang.time.DateFormatUtils; import org.apache.ibatis.type.BaseTypeHandler; import org.apache.ibatis.type.JdbcType; import org.apache.ibatis.type.MappedJdbcTypes; import org.apache.ibatis.type.MappedTypes; @MappedJdbcTypes(JdbcType.TIMESTAMP) @MappedTypes(String.class) public class TimeTypeHandler extends BaseTypeHandler<String>{ @Override public String getNullableResult(ResultSet arg0, String arg1) throws SQLException { Timestamp timestamp = arg0.getTimestamp(arg1); return DateFormatUtils.format(timestamp, "yyyy-MM-dd HH:mm:ss"); } @Override public String getNullableResult(ResultSet arg0, int arg1) throws SQLException { return arg0.getString(arg1); } @Override public String getNullableResult(CallableStatement arg0, int arg1) throws SQLException { return arg0.getString(arg1); } @Override public void setNonNullParameter(PreparedStatement arg0, int arg1, String arg2, JdbcType arg3) throws SQLException { arg0.setString(arg1, arg2); } }
若是是单独使用mybatis,在配置文件里加入spring
<typeHandlers> <typeHandler handler="your.package.TimeTypeHandler"/> </typeHandlers>
若是是和spring集成sql
先建立一个自定义转换器的bean数据库
<bean id="typeHandler" class="yourpackage.TimeTypeHandler" />
而后在注入apache
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="mapperLocations" value="classpath*:mybatis/xxx/*Mapper.xml"/>
<property name="typeHandlers" ref="typeHandler"/>
</bean>
可是,因为java中的时间格式实在太恶心了。因此想把Date类型所有转换为LocatDate,LocalTime,LocalDateTime。对于LocalDateTime类型的数据,一样须要专门的转换器来处理。你固然能够本身实现一个。不过mybatis官方已经实现了。经过maven的方式引进项目中mybatis
<dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-typehandlers-jsr310</artifactId> <version>1.0.0</version> </dependency>
若是mybatis是3.4以上的版本,就能够直接使用了。若是是3.4如下的版本,那么还须要参照刚才上面的作法,将转换器注入mybatis中。app
获得转换器的beanmaven
<bean id="typeHandler" class="org.apache.ibatis.type.LocalDateTimeTypeHandler" />
而后注入ide
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="mapperLocations" value="classpath*:mybatis/xxx/*Mapper.xml"/>
<property name="typeHandlers" ref="typeHandler"/>
</bean>