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中设置的格式。
Ibatis对日期的处理的更多相关文章
- iBATIS代码生成分析
1.分析目录结构"tools"(或者说模板) 2.首先分析ibatorConfig.xml文件 <?xml version="1.0" encoding= ...
- iBatis.net入门指南
iBatis.net入门指南 - 1 - 什么是iBatis.net ? - 3 - iBatis.net的原理 - 3 - 新人指路 - 3 - iBatis.net的优缺点 ...
- iBatis.Net(C#)数据库查询
引用请注明http://www.cnblogs.com/13590/archive/2013/03/14/2958735.html 摘要:查询是数据库SQL语言的核心,本文介绍了通过iBatis.N ...
- Ibatis学习总结3--SQL Map XML 映射文件
在前面的例子中,只使用了 SQL Map 最简单的形式.SQL Map 的结构中还有其他更多 的选项.这里是一个 mapped statement 较复杂的例子,使用了更多的特性. <sqlMa ...
- iBatis基础知识
iBatis简介: 特点:结构性好,小巧,容易上手 搭建环境: 1.创建java 项目 2.导入(3个)jar包:ibatis-2.3.0.667.jar,mysql驱动包,Junit测试包 3.配置 ...
- iBATIS 调试
在写完sql语句以后,如果参数有问题.还真不知道该如何看参数.原来Ibatis 是通过日志输出,看到参数的.IBatis 内置的日志输出是log4net,所以可以参考ibatis的api.照着复制其配 ...
- mybatis No enum const class org.apache.ibatis.type.JdbcType.Date 坑爹的配置
转自:https://lihaiming.iteye.com/blog/2248059 在ibatis中不需要关注这些参数 而转到mybatis后 如果字段值为空 必须设置jdbcType如inser ...
- JDBC和Ibatis中的Date,Time,Timestamp处理
在此前,遇到过使用Ibatis操作Oracle时时间精度丢失的问题,昨天又遇到JDBC操作MySQL时间字段的问题,从网上看到各种式样的解释这些问题的博文/帖子,但多是雾里看花,不得要领. 理解JDB ...
- IBATIS+ORACLE(一)
迁移时间:2017年6月1日15:55:17 Author:Marydon (四)IBATIS + ORACLE 第一部分:基础篇 1.4.1.1 分页SQL <!-- 开头 --> ...
随机推荐
- HADOOP cluster some issue for installation
给namenode搭建了HA,然后根据网上的配置也配置了secondary namenode, 但是一直没有从日志中看到启动secondnary namenode,当然进程也没有. 找了很多资料,按照 ...
- js制作倒计时效果
该程序可以计算任意指定的两个日期中间的差值. 本例子的指定日期是2017年1月1日,当前时间是2016年10月21日:计算它们之间的差值,在网页上显示如图所示: 关键部分代码: var nowtime ...
- hdu 5802 Windows 10 贪贪贪
传送门:hdu 5802 Windows 10 题意:把p变成q:升的时候每次只能升1,降的时候如果前一次是升或者停,那么下一次降从1开始,否则为前一次的两倍 官方题解: 您可能是正版Windows ...
- spring,hibernate,struts的面试笔试题
1 Action是不是线程安全的?如果不是 有什么方式可以保证Action的线程安全?如果是,说明原因不是声明局部变量,或者扩展RequestProcessor,让每次都创建一个Action,或者在s ...
- javascript编程习惯总结
总结一下javascript需要注意的一些细节的地方: 1:声明一个对象:var a={ }; 2:另一个对象继承一个对象:Var b=Object.create(a);如果父类的属性和方法发生改变, ...
- 2D Skeletal Animation Ready
骨骼动画 Cool 昨天研究了一天的2D骨骼动画,自己动手做了骨骼动画,感觉比用序列帧做动画方便多了,非常Cool ! 刚开始做骨骼动画用的是一整张图,做动画时在分配完权重之后,拉伸顶点上连接着的其它 ...
- Sublime Text2 新建文件快速生成Html头部信息和炫酷的代码补全
预备:安装emmet插件(previously known as Zen Coding) 方法一 package control法: 上一篇博客已经介绍了如何安装package control.打开 ...
- JS 浮点数运算丢失精度解决方案
除法 function accDiv(arg1,arg2){ var t1=0,t2=0,r1,r2; try{t1=arg1.toString().split(".")[1].l ...
- js中的垃圾回收机制
代码回收规则如下: 1.全局变量不会被回收. 2.局部变量会被回收,也就是函数一旦运行完以后,函数内部的东西都会被销毁. 3.只要被另外一个作用域所引用就不会被回收 (闭包)
- 一、IOS运行原理
1.首先执行main函数 2.执行UIPaalicationMain函数 3.UIApplication函数内部 1>创建一个UIApplication实例.这个UIApplication对象是 ...