首页 > 数据库技术 > 详细

Json关于java.sql.Date的处理

时间:2016-05-22 02:13:51      阅读:336      评论:0      收藏:0      [点我收藏+]

步骤一 、 VO类

import java.sql.Date;

?

public class User {

? ? //实体类的属性和表的字段名称一一对应

? ? private int id;

? ? private String name;

? ? private int age;

? ? private Date hire_date;

}

?

?

步骤二 、数据库表:

/*

Navicat MySQL Data Transfer

Source Server ? ? ? ? : localhost

Source Server Version : 50051

Source Host ? ? ? ? ? : localhost:3306

Source Database ? ? ? : test

?

Target Server Type ? ?: MYSQL

Target Server Version : 50051

File Encoding ? ? ? ? : 65001

Date: 2016-05-17 20:46:04

*/

?

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------

-- Table structure for `user`

-- ----------------------------

DROP TABLE IF EXISTS `user`;

CREATE TABLE `user` (

? `id` int(11) NOT NULL auto_increment,

? `name` varchar(30) default NULL,

? `age` int(11) default NULL,

? `hire_date` datetime default NULL,

? PRIMARY KEY ?(`id`)

) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;

?

-- ----------------------------

-- Records of user

-- ----------------------------

INSERT INTO `user` VALUES (‘1‘, ‘zhangsan‘, ‘12‘, ‘2016-05-17 20:06:38‘);

?

步骤三、开始转换

Exception in thread "main" net.sf.json.JSONException: java.lang.reflect.InvocationTargetException

at net.sf.json.JSONObject.defaultBeanProcessing(JSONObject.java:818)

at net.sf.json.JSONObject._fromBean(JSONObject.java:699)

at net.sf.json.JSONObject.fromObject(JSONObject.java:172)

at net.sf.json.AbstractJSON._processValue(AbstractJSON.java:274)

at net.sf.json.JSONObject._processValue(JSONObject.java:2655)

at net.sf.json.JSONObject.processValue(JSONObject.java:2721)

at net.sf.json.JSONObject.setInternal(JSONObject.java:2736)

at net.sf.json.JSONObject.setValue(JSONObject.java:1424)

at net.sf.json.JSONObject.defaultBeanProcessing(JSONObject.java:765)

at net.sf.json.JSONObject._fromBean(JSONObject.java:699)

at net.sf.json.JSONObject.fromObject(JSONObject.java:172)

at net.sf.json.JSONObject.fromObject(JSONObject.java:134)

at mybatistest.mybatisdemo.MultiDataSource.main(MultiDataSource.java:50)


bubuko.com,布布扣
?

解决方案一:datetime? -->String

? ?select id,name ,age,CONCAT(hire_date,‘‘) from user

?

解决方案二:增加函数转为util.Date进行处理

? ? ? /**?

* 将java.util.Date日期转化为java.sql.Date?

* @param udate?

* @return?

*/ ?

public static java.sql.Date converUtilToSql(java.util.Date udate) { ?

? ?return new java.sql.Date(udate.getTime()); ?

} ?

?

/**?

* 将java.sql.Date日期转化为java.util.Date?

* @param udate?

* @return?

*/ ?

public static java.util.Date converSqlToUtil(java.sql.Date udate) { ?

? ?return new java.util.Date(udate.getTime()); ?

}?

?
bubuko.com,布布扣
?

处理结果如下:

{"age":12,"hire_date":{"date":17,"day":2,"hours":0,"minutes":0,"month":4,"seconds":0,"time":1463414400000,"timez

oneOffset":-480,"year":116},"id":1,"name":"zhangsan"}

?

解决方案三:自定义转换器

核心代码如下:

? ? ? ? ? ? ? ?JsonConfig jsonConfig = new JsonConfig();

jsonConfig.registerJsonValueProcessor(java.sql.Date.class, new JsonDateValueProcessor());

JSONObject json = JSONObject.fromObject(user,jsonConfig);

System.out.println("=====total count getUser====" + json);

?

? ? ? ? public class JsonDateValueProcessor implements JsonValueProcessor {

? ? ??private String format = "yyyy-MM-dd";

? ? ?public Object processArrayValue(Object arg0, JsonConfig arg1) {

System.out.println("====processArrayValue======== "+arg0);

return null;

? ? ??}?

?

? ??public Object processObjectValue(String arg0, Object arg1, JsonConfig arg2) {

System.out.println("====processObjectValue======== "+arg0 +",arg1="+arg1);

return processJsonDateValue(arg1);

? ?}

?

private Object processJsonDateValue(Object arg0) {

SimpleDateFormat sdf=new SimpleDateFormat(format);

return sdf.format(arg0);

}

?

}

处理结果如下:

=====total count getUser====User [id=1, name=zhangsan, age=12,hire_date=2016-05-17]

====processObjectValue======== hire_date,arg1=2016-05-17

=====total count getUser===={"age":12,"hire_date":"2016-05-17","id":1,"name":"zhangsan"}

?
bubuko.com,布布扣
?

Json关于java.sql.Date的处理

原文:http://gaojingsong.iteye.com/blog/2298860

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!