Ibatis对日期的处理

  最近在项目中出现两种情况(因为项目比较早,经历各个版本的改动,所有设计不一致),第一种:数据库中某一字段为Date类型,对应的bean中的类型为java.util.Date,所有在对应的映射中会出现字段和属性类型不匹配为题;第二种情况为数据库中为Date类型,对应的字符串为String类型,这样在映射时也会出现字符类型不匹配的问题。

  后来查看了相关资料,对于第一种解决办法是:在对于的属性后面加:Date,使其可以映射为数据库的Date类型。如:#last_date:Date#;第二种的解决办法是在第一种的基础上自己考虑得出应用数据库的转换函数,将String类型转为Date类型;如:to_date(#last_date#,"yyyy-mm-dd")。试想一下,如果出现数据库中为字符类型而 bean为Date类型,也可以用to_char()进行转换,不过这种情况应该比较少。

  下面对ibatis中日期和字符串之间的映射做一下总结:

  1. bean中定义为String,数据库字段类型为String,直接查询字段

  此时在ibatis在对结果进行封装时,相当于直接把值转化成了字符串,就像在java中调用了toString方法一样。

  2.bean定义为Date,数据库字段类型为Date,查询使用#last_date:Date#。
  此时在对结果进行封装时得到的是一个DATE对象,注意此时将输出时,它的日期格式是java里面的日期格式,而不是它存放在数据库里面的格式。所有要在字段后面加:Date,如:#last_date:Date#。

  3.bean定义为Date,数据库字段类型为String,查询使用to_char(#last_date#,’yyyy-mm-dd’)
  此时封装的时候就相当于从字符串映射到字符串,输出last_date的格式取决于我们在to_char中设置的格式。

  4.bean定义为String,数据库字段类型为Date,查询使用to_date(#last_date#,’yyyy-mm-dd’)

  此时封装的时候就相当于日期映射到日期,输出last_date的格式取决于我们在to_date中设置的格式。

时间: 2024-08-10 23:15:48

Ibatis对日期的处理的相关文章

jdbc执行Oracle数据库(oracle10g)Insert操作时 日期类型时间部分丢失的问题.

用ibatis执行一个Insert语句时,日期类型时间部分丢失,对应的java类型是java.util.Date.数据库对应的类型是DATE 解决办法:把java.util.Date转换成java.sql.TimeStamp 时间戳类型..

iBatis.net入门指南

iBatis.net入门指南    - 1 - 什么是iBatis.net ?    - 3 - iBatis.net的原理    - 3 - 新人指路    - 3 - iBatis.net的优缺点    - 4 - SQL Mapping金典案例    - 5 - 情景一 基本标签(insert,update ,select)及属性(parameterClass,resultClass)    - 5 - 情景二 子标签(<sql /><include />)及转义处理    

iBatis.Net(C#)数据库查询

引用请注明http://www.cnblogs.com/13590/archive/2013/03/14/2958735.html  摘要:查询是数据库SQL语言的核心,本文介绍了通过iBatis.Net对数据库的简单查询.条件查询.动态查询和多表查询. 关键词:iBatis.Net:动态查询:多表查询:数据映射 查询是数据库SQL语言的核心,SQL语言只提供唯一一个用于数据库查询的语句,即SELECT语句.用于表达SQL查询的SELECT语句是功能最强也是最复杂的SQL语句.而在实际的项目开发

iBATIS 调试

在写完sql语句以后,如果参数有问题.还真不知道该如何看参数.原来Ibatis 是通过日志输出,看到参数的.IBatis 内置的日志输出是log4net,所以可以参考ibatis的api.照着复制其配置文件.其内容是 <configSections> <sectionGroup name="iBATIS"> <section name="logging" type="IBatisNet.Common.Logging.Confi

通用财经数据传输与监控平台1.0(泛型,接口与基类,Sql,Ibatis,Awt,Swing)

导言 本系统通过访问url接口,实现财经数据的获取以及实时的更新到用户本地数据库的功能,并且配备了实时的数据传输的监控平台.通过本系统,用户可以的得到并保存所需的财经数据(超过200张表),并能实时的查看数据传输是否正常以及传输中的过程. 目录结构 一.相关技术总结 1.通用DAO.Service.Action的设计与实现:(VERY IMPORTMANT) 面向对象设计:接口.基类.继承:泛型 (如通用类BaseObject.接口BaseDao与实现类BaseDaoImp的设计) 2.树Tre

ibatis经验

1.insert,update,delete 返回值(1).insert 返回的为插入的主键值,但必须在配置文件中加入<selectKey/>   如果主键值为String<selectKey resultClass="string" keyProperty="id">   SELECT @@IDENTITY AS ID</selectKey> 如果主键值为Int型<selectKey resultClass="j

iBatis 使用总结

http://blog.csdn.net/caihaijiang/article/details/6438633 --日期格式化 date_format(createtime,'%Y-%m-%d') = '2011-10-17' 得到指定年份.月份.日期 date_format(STR_TO_DATE(birthday,'%Y年%m月%d日'),'%Y') --模糊查询 错误 1.ibatis中定义 appname like '%#keyword#%' 2.参数中放入传给ibatis param

JDBC和Ibatis中的Date,Time,Timestamp处理

在此前,遇到过使用Ibatis操作Oracle时时间精度丢失的问题,昨天又遇到JDBC操作MySQL时间字段的问题,从网上看到各种式样的解释这些问题的博文/帖子,但多是雾里看花,不得要领. 理解JDBC中的时间类型 MySQL与JDBC之间的类型映射 Oracle与JDBC之间的类型映射 Ibatis是怎么处理日期时间类型的 注释 参考资料 理解JDBC中的时间类型 java.sql包中包括三个类,Date, Time, 和 Timestamp,分别用来表示日期(无时间信息,eg: YYYY-M

iBatis基础知识

iBatis简介: 特点:结构性好,小巧,容易上手 搭建环境: 1.创建java 项目 2.导入(3个)jar包:ibatis-2.3.0.667.jar,mysql驱动包,Junit测试包 3.配置iBatis的主配置文件 SqlMapConfig.xml 配置由jdbc管理事务 配置数据源 SIMPLE 配置编写sql语句的xml文件  <sqlMap resource="cn/Stu.xml"/> 4.编写Jdbc 连接的属性文件  SqlMap.properties