mysql日期存储为int,mybatis做ORM映射与java.util.Date的转换问题
来源:互联网 发布:背四级单词软件 编辑:程序博客网 时间:2024/05/16 11:08
在mysql做数据库的应用中,日期类型经常回存储为int(10)类型。方便排序和计算。但是在java中用Date.getTime返回的是13位的Long。并且在实体中我们如果用long来存储会有诸多不便。所以涉及到了转换问题。在我的项目中,用的是mybatis做持久性框架。对于这个问题用了以下方法处理。
- 用mybatis generate时,配置实体中用date来覆盖数据库中的int类型。
<columnOverride column="birthday" javaType="java.util.Date" jdbcType="INTEGER" />
- 自定义TypeHandler实现TypeHandler接口
@MappedTypes({ Date.class }) @MappedJdbcTypes({ JdbcType.INTEGER }) public class DateIntTypeHandler implements TypeHandler<Date> { @Override public void setParameter(PreparedStatement ps, int i, Date parameter, JdbcType jdbcType) throws SQLException { if (parameter == null) { if (jdbcType == null) { throw new TypeException( "JDBC requires that the JdbcType must be specified for all nullable parameters."); } try { ps.setNull(i, jdbcType.TYPE_CODE); } catch (SQLException e) { throw new TypeException( "Error setting null for parameter #" + i + " with JdbcType " + jdbcType + " . " + "Try setting a different JdbcType for this parameter or a different jdbcTypeForNull configuration property. " + "Cause: " + e, e); } } else { int time = (int) (parameter.getTime() / 1000); ps.setInt(i, time); } } @Override public Date getResult(ResultSet rs, String columnName) throws SQLException { int res = rs.getInt(columnName); long time = res * 1000L; return new Date(time); } @Override public Date getResult(ResultSet rs, int columnIndex) throws SQLException { int res = rs.getInt(columnIndex); long time = res * 1000L; return new Date(time); } @Override public Date getResult(CallableStatement cs, int columnIndex) throws SQLException { int res = cs.getInt(columnIndex); long time = res * 1000L; return new Date(time); } }
- 在mybatis的配置中引用自定义的转换处理类
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <!-- 自动扫描mapping.xml文件 --> <property name="mapperLocations" value="classpath:sqlmap/mysql/module/*/*.xml"></property> <strong><property name="typeHandlers"> <array> <bean name="dateIntTypeHandler" class="*.utils.mybatis.DateIntTypeHandler" /> </array> </property></strong> </bean>
0 0
- mysql日期存储为int,mybatis做ORM映射与java.util.Date的转换问题
- java.util.Date 与 java.sql.Date互转 及 字符串转换为日期时间格式
- java.util.Date 与 java.sql.Date互转 及 字符串转换为日期时间格式
- java.util.Date 与 java.sql.Date互转 及 字符串转换为日期时间格式
- java.sql.Date数据库日期类型计算及与java.util.Date的转换
- mybatis时间类型映射:java.util.date到mysql的datetime
- myBatis之java.util.Date类型如何映射到mysql的datetime类型
- java.util.Date和mysql日期之间转换
- java.sql.Date,java.util.Date的区别与转换
- java.util.Date与java.sql.Date的相互转换
- java.sql.date 与 java.util.date的转换
- java.util.date 与 java.sql.date的转换
- java.util.Date与java.sql.Date的转换
- java.sql.Date 与 java.util.Date 的转换
- java.util.Date_与_java.sql.Date互转_及_字符串转换为日期时间格式
- java.util.Date_与_java.sql.Date互转_及_字符串转换为日期时间格式
- java.util.Date_与_java.sql.Date互转_及_字符串转换为日期时间格式
- java.util.Date_与_java.sql.Date互转_及_字符串转换为日期时间格式
- quick-cocos2dx中AssetsManagerEx的理解
- 在mybatis调用mysql的函数
- Nginx发布1.9.0版本,新增支持TCP代理和负载均衡的stream模块
- java抽象类和接口
- 开发者都应该使用的10个C++11特性
- mysql日期存储为int,mybatis做ORM映射与java.util.Date的转换问题
- 经典的数据结构——栈
- UE4示例项目学习:用Blueprint来创建一个可操作角色(二) 动画蒙太奇篇(Animation Montage)
- 【规则引擎连载3】 WebSphere ILOG JRules 开发——新建一个规则项目
- oracle日期字段只取日期不要时间
- ubuntu16.04下安装scrapy框架
- 打造靓白裸妆人像(修补工具和色相/饱和度)
- SPARK里的reduce(),fold(),以及aggregate()
- CC2530 zigbee RS485通讯