实现步骤
一、 准备工作
1. model层的金额字段,使用Long类型数据
2. 相关的增删改查功能已经实现
二、 实现逻辑
1. Bean中增加string字符串
例如,model中如果有
@Column(name = "CONTRACT_MONEY_ONE_")
protected Long contractMoneyOne; //合同总金额-1(第一次)
则,在对应的bean中,创建如下字段
private String contractMoneyOneStr; //合同总金额-1(第一次)
2. impl层中增加两个转换方法
//将字符串数值转换为以分为单位的Long型
private Long convertStrToLong(String num) {
if(!StringUtils.isNotEmpty(num)){
return 0L;
}
Double f = Double.valueOf(num);
f = f * 1000000;//万元转分
Long l = f.longValue();
return l;
}
//将Long型的以分为单位的数据,转换成万元的字符串
private String convertLongToStr(Long num) {
if(num == null || num == 0L){
return "0";
}
Double f = Double.valueOf(num);
f = f/1000000;//万元转分
return f.toString();
}
3. impl层中的model和bean转换方法中增加数据转换过程
convertBeanToModel方法
//合同金额1
entity.setContractMoneyOne(convertStrToLong(bean.getContractMoneyOneStr()));
convertModelToBean方法
//合同金额1
if (entity.getContractMoneyOne() != null) {
bean.setContractMoneyOne(entity.getContractMoneyOne());
bean.setContractMoneyOneStr(convertLongToStr(entity.getContractMoneyOne()));
}
4. list页面,显示时,显示处理后的结果
此处,使用处理后的Str显示数据,而不是使用model中的金额字段。
{
field: 'contractMoneyOneStr',
title: '预计出货额',
width: 100,
align: 'center',
rowspan: 1
}
5. toEditJsp方法中增加对entity进行转换
convertMoney方法中,直接调用前面写好的convertModelToBean方法即可
//将实体中的金额字段转为以万元为单位的字段
@Override
public ForecastBean convertMoney(Forecast entity) {
return convertModelToBean(entity);
}
6. edit页面,通过EL表达式填充的数据使用处理后的数据
7. 实现结果
页面填入的数据,是以万元为单位的数据,前台无论是列表显示,还是编辑数据时,均以万元为单位显示数据,后台数据库中,存储的是以分为单位的数据。