一、数据库中的数据

时间格式为dateTime类型

SSM格式化导出报表时间的格式_时间格式

 

二、对应Moddel实体类

private Date goOutTicketTime;
private Date returnOutTicketTime;
private Date depositPayTime;
private Date orderInvalidTime;

三、导出报表的action

对应的导出要显示的字段是Model中的属性。

如果现在就导出:

SSM格式化导出报表时间的格式_自动生成_02

四、解决方案

1.在Model下新建ext包(扩展类包)

2.在此包下新建Model实体的扩展类,此扩展类要继承原来的实体类。

将要格式化的时间新增为扩展类的属性并改名(后面添加changed),设置对应的get以及set方法。

SSM格式化导出报表时间的格式_SSM_03

public class BusNotcompleteorderReportExt extends BusNotcompleteorderReport {
//账单导出时间格式
private String ReturnOutTicketTimeChanged;
private String GoOutTicketTimeChanged;
private String DepositPayTimeChanged;
private String OrderInvalidTimeChanged;


public String getReturnOutTicketTimeChanged() {
if(getReturnOutTicketTime()!=null) {
ReturnOutTicketTimeChanged=DateUtils.formatDate(getReturnOutTicketTime(), "yyyy-MM-dd HH:mm:ss");
}
return ReturnOutTicketTimeChanged;
}
public void setReturnOutTicketTimeChanged(String returnOutTicketTimeChanged) {
ReturnOutTicketTimeChanged = returnOutTicketTimeChanged;
}

其他省略,同理。

3.修改mapper文件

找到对应查询报表数据的mapper文件,修改添加的对应的
扩展的mapper文件,其中BaseResultMap是使用代码生成工具自动生成的。

下面是扩展的自己写的mapper文件。对应的type要修改为扩展后的实体Model。并且要继承自动生成的resultMap。

<!-- 结果集 -->
<resultMap id="BaseExtResultMap" type="**.model.ext.BusNotcompleteorderReportExt" extends="BaseResultMap">


</resultMap>

<!-- 查询未完成报表 -->
<select id="getBusNotcompleteorderReportByParam" parameterType="java.util.Map" resultMap="BaseExtResultMap">
select
*
from
bus_notcompleteorder_report bnr
where 1 = 1

......

4.修改对应的action、service、serviceImpl、dao层对应方法的返回类型为扩展的实体Model。

5.在导出报表的action中修改要导出的Excel的属性为扩展类的属性,要对于名字相同。

其他属性省略。

fieldNames.add(new String[] {

"GoOutTicketTimeChanged",


"ReturnOutTicketTimeChanged",

"DepositPayTimeChanged",

"OrderInvalidTimeChanged"


});

 

6.此时对应的导出为

SSM格式化导出报表时间的格式_时间格式_04

有问题请留言。