方法一:实体类中加日期格式化注解
[java] view plaincopy
@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date receiveAppTime;
如上,在对应的属性上,加上指定日期格式的注解,本人亲自测试过,轻松解决问题!
需要 import orgspringframeworkformatannotationDateTimeFormat;
转换函数位于spring-contextjar包中
方法二:控制器Action中加入一段数据绑定代码
[java] view plaincopy
@InitBinder
public void initBinder(WebDataBinder binder) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
dateFormatsetLenient(false);
binderregisterCustomEditor(Dateclass, new CustomDateEditor(dateFormat, true)); //true:允许输入空值,false:不能为空值
……values(#{username, jdbcType=VARCHAR}, #{age, jdbcType=NUMBER}) 在所有可能为空的字段后面加jdbcType=XXX, XXX是这个值的数据类型,比如我上面插入的username是字符串,可能为空,所以加入jdbcType= VARCHAR, 至于jdbcType有哪些类型你可以查看myBatis API 官方文档,上面写的很清楚
不是mybatis不能插入日期,而是你书写的日期格式不对,例如sql server中日期格式可以是字符串'2012-2-2'这种用‘-’分隔的,而oracle的格式却是(我忘了,我也不用啊,一般都是用函数转换,比如to_date('2012-2-2','yyyy-MM-dd') ),所以如果你使用的是拼接式,即$符号,建议使用函数转换后插入,如果你使用的是#{}预编译方式,那么你完全可以传输一个javautilDate的参数对于那个?号即可,mybatis会自动将javautilDate转换成javasqlDate,对于javasqlDate,预编译的statement是可以识别的!所以才能够正确插入!
以spring+mybatis为例
1配置datasource时指定如下信息
2读取properties下的所有配置文件
3jdbcproperties文件内容如下:
因为时间列的值一般选择性较高(即重复值较少),这样查询优化器会先考虑用索引进行检索
除非索引碎片达到一定等级,查询优化器认为表扫描比索引查询快时就不用了
还有,纠正你一点小问题,结束时间不要加00:00:00,这样会将第二天的0点数据也包括在内
虽然概率很低,但情况存在
-------------------
你把列进行转换就用不到索引了,因为转换后的列值无论与数据页还是缓存上存储的都不一致
优化器需要重新扫描表并进行计算,所以一般对列进行函数 *** 作再会慢
以上就是关于springmvc mybatis怎么把mysql的时间格式化全部的内容,包括:springmvc mybatis怎么把mysql的时间格式化、mybatis怎么实现时间段查询、mybatis怎么插入java的时间等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)