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 <!-- 开头 --> ...
随机推荐
- 同时屏蔽ios和android下点击元素时出现的阴影
在ios4+和android2+系统,当手指触摸屏幕a标签链接或按钮时,会产生不同的效果,对于ios点击元素的时候,就会出现一个半透明的灰色背景:对于android则出现红色的边框.对这2个系统自带的 ...
- Mongodb 主从复制与副本集实验
1.实验主从复制,并验证复制成功,抓图实验过程 Step1:创建相应的目录 Mkdir -p ./dbs/master Mkdir -p ./dbs/slave Step2:开启主服务 ./bin/ ...
- 边工作边刷题:70天一遍leetcode: day 71
Longest Substring with At Most Two Distinct Characters # Given a string, find the length of the long ...
- Java开发和运行环境的搭建
Java开发需要准备的东西? JDK+Eclipse 其中JDK的意思是Java开发工具包,Eclipse是进行用于做Java程序开发的工具(当然你也可以用记事本什么的去做). 其他开发工具:JCre ...
- 使用Unity3D引擎开发赛车游戏
Car Tutorial 在Unity3D的Asset Store有一个赛车的Demo —— Car Tutorial,看起来特别酷的赛车游戏Demo,不过我还没有下载下来,因为在公司下载Assets ...
- 关于软件测试人员能力模型的建立(from知乎)
转自: http://www.zhihu.com/question/20254092 测试思维方面:1.测试基础理论(测试流程.测试的基础知识)2.测试用例设计方法论(黑盒.白盒)3.软件质量体系(建 ...
- 开坑,Unix环境高级编程,转行之路又得缓缓了
不要问我基础,我用了近6年的Linux系统,最早的版本可以追溯到Ubuntu 8.04,常用的命令 VIM基本上是没压力,遇到问题google 配置环境变量 网络环境也不在话下, C语法基本熟练,过去 ...
- WPF数据绑定Binding(二)
WPF数据绑定Binding(二) 1.UI控件直接的数据绑定 UI对象间的绑定,也是最基本的形式,通常是将源对象Source的某个属性值绑定 (拷贝) 到目标对象Destination的某个属性上. ...
- 双绞线线序+POE供电网线
0 重点 一般情况下会用1236(橙白.橙.绿白.绿)传输数据,1.2用于发送,3.6用于接收,45(蓝.蓝白)电源正极 78(棕白.棕)电源负极. 一 网线线序 12发 36收 二 poe网线供电 ...
- MySQL基础 - 内置函数
Concat() 用于连接字段,一般DBMS使用+或者||. ex: 注意:上图中新检索出来的列名为'CONCAT(id, '->', name)'(实际上没有列名),这样虽然不影响在MySQL ...