当前位置: 首页 > ops >正文

Date、BigDecimal类型值转换

Date、BigDecimal类型值转换

前端输入:

{"dueDate": "2025-12-21 12:32:44",		"name": "艾伦","payMethod": "1","price": 120.235,"rate": 0.043453,"time1": "2025/09/01"
}
@Data
public class ConvertRequest {private String name;@JsonFormat(pattern = "yyyy/MM/dd")private Date time1;@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")private Date dueDate;private BigDecimal price;private BigDecimal rate;private String payMethod;
}

后端输出:

{"code": 1,"msg": null,"data": {"name": "艾伦","time1": 1756684800000,"dueDate": "2025-12-21 12:32:44","price": "120.24","rate": "4.35%","payMethod": "一次性还清"}
}
@Data
public class ConvertResponse {private String name;private Date time1;@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")private Date dueDate;private String price;private String rate;private String payMethod;
}

数据库表:

CREATE TABLE `t_convert_test` (`id` bigint(20) NOT NULL AUTO_INCREMENT,`name` varchar(32) DEFAULT NULL,`due_date` datetime DEFAULT NULL,`price` decimal(18,4) DEFAULT NULL,`rate` decimal(18,7) DEFAULT NULL,`pay_method` varchar(2) DEFAULT NULL,`create_time` datetime DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4
@Data
public class ConvertBO {private int id;private String name;private Date dueDate;private BigDecimal price;private BigDecimal rate;private String payMethod;private Date createTime;/*** 格式化价格为两位小数(四舍五入)* @param price 价格值* @return 格式化后的价格字符串*/public static String formatPrice(BigDecimal price) {if (price == null) {return "0.00";}return price.setScale(2, RoundingMode.HALF_UP).toString();}/*** 格式化利率为百分比格式,保留两位小数(四舍五入)* @param rate 利率值(例如:0.1256 表示 12.56%)* @return 格式化后的百分比字符串*/public static String formatRate(BigDecimal rate) {if (rate == null) {return "0.00%";}// 将利率乘以100转换为百分比BigDecimal percentage = rate.multiply(new BigDecimal("100"));// 保留两位小数并四舍五入percentage = percentage.setScale(2, RoundingMode.HALF_UP);return percentage.toString() + "%";}
}

表数据:

"id"	"name"	  "due_date"	         "price"	 "rate"	      "pay_method"	"create_time"
"1"		"沃德"	 "2025-09-04 21:47:13"	"19.9900"	"3.3200000"	  "1"	       "2025-09-02 21:47:31"
"2"		"沃克"	 "2025-09-11 20:32:44"	"20.0400"	"0.4300000"   "2"	       "2025-09-06 22:00:29"
"3"		"哈楼"	 "2025-09-11 20:32:44"	"20.0300"	"0.4300000"   "2"	       "2025-09-06 22:07:06"
"4"		"尼格"	 "2025-09-21 20:32:44"	"20.2300"	"0.0400000"	  "1"	       "2025-09-06 22:24:26"
"5"		"吹杨"	 "2025-12-21 20:32:44"	"120.2340"	"0.0434430"	  "1"	       "2025-09-06 22:28:28"
"6"		"艾伦"	 "2025-12-21 20:32:44"	"120.2350"	"0.0434530"	  "1"	       "2025-09-06 22:30:05"

处理流程:

@RestController
@RequestMapping("/inoutput")
@Api(tags = "输入输出类型转换")
public class ConvertController {@Autowiredprivate ConvertDao convertDao;@PostMapping("/convert")@ApiOperation("输入输出转换")public Result<ConvertResponse> convert(@RequestBody ConvertRequest request) {// 输入int age = request.getAge();                 // 30Date time1 = request.getTime1();            // Mon Sep 01 08:00:00 CST 2025  Date time2 = request.getDueDate();          // Sun Dec 21 20:32:44 CST 2025    BigDecimal price1 = request.getPrice1();    // 220        BigDecimal price2 = request.getPrice();     // 120.235        BigDecimal price3 = request.getRate();      // 0.043453            // 落库ConvertBO convertBO = BeanUtil.copyProperties(request, ConvertBO.class);convertBO.setCreateTime(new Date());convertDao.insert(convertBO);// 查库ConvertBO res = convertDao.selectById(convertBO.getId());// 值转换,价格保留两位小数,四舍五入,利率加%保留两位小数,四舍五入ConvertResponse response = BeanUtil.copyProperties(res, ConvertResponse.class);BigDecimal price = res.getPrice();response.setPrice(ConvertBO.formatPrice(price));BigDecimal rate = res.getRate();response.setRate(ConvertBO.formatRate(rate));response.setPayMethod(PayMethodEnum.getDescByCode(response.getPayMethod()));// 输出response.setTime1(time1);return Result.success(response);}
}
@Mapper
public interface ConvertDao {ConvertBO selectById(Integer id);int insert(ConvertBO convertBO);
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.sky.ext.inoutput.dao.ConvertDao"><select id="selectById" resultType="com.sky.ext.inoutput.bo.ConvertBO">select * from t_convert_test where id = #{id}</select><insert id="insert" parameterType="com.sky.ext.inoutput.bo.ConvertBO" keyProperty="id" useGeneratedKeys="true">insert into t_convert_test (name, due_date, price, rate, pay_method, create_time)values (#{name}, #{dueDate}, #{price}, #{rate}, #{payMethod}, #{createTime});</insert>
</mapper>
@Getter
@AllArgsConstructor
public enum PayMethodEnum {YCXHQ("1", "一次性还清"),XBHX("2", "先本后息");private String code;private String desc;public static String getDescByCode(String code){for (PayMethodEnum value : PayMethodEnum.values()) {if(value.getCode().equals(code)){return value.getDesc();}}return null;}
}
http://www.xdnf.cn/news/20195.html

相关文章:

  • 残差去噪扩散模型
  • 字节跳动OmniHuman-1.5发布:单图+音频秒变超真实视频,AI数字人技术再升级
  • HOT100--Day13--104. 二叉树的最大深度,226. 翻转二叉树,101. 对称二叉树
  • Docker入门到精通:从零基础到生产部署
  • 如何在路由器上配置DHCP服务器?
  • 本体论中的公理与规则——从经典逻辑到神经符号融合的演进
  • Hive on Tez/Spark 执行引擎对比与优化
  • AI浪潮下,人类创造力的“危”与“机”
  • 2026届大数据毕业设计选题推荐-基于大数据旅游数据分析与推荐系统 爬虫数据可视化分析
  • JAVA基本文件操作
  • 【74页PPT】MES简介(附下载方式)
  • TensorFlow 面试题及详细答案 120道(101-110)-- 底层原理与扩展
  • C++笔记之软件设计原则总结
  • Lua > Mac Mini M4安装openresty
  • 基于Transformer 实现车辆检测与车牌识别(一)
  • disable CASCADE主键失败 ORA-2297 And ORA-2433
  • MCAP :机器人数据容器的全面实践指南
  • 区块链是什么
  • UE5 图表、函数与宏的区别与选择(蓝图折叠功能详解)
  • 【iOS】push 和 present
  • 什么时候用no,什么时候用non,什么时候用not?
  • 京东商品属性API数据解析:颜色、尺寸与材质
  • 【代码随想录算法训练营——Day4】链表——24.两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题02.07.链表相交、142.环形链表II
  • 操作系统基本概念.1
  • Day 47 注意力热图可视化
  • 工作后的总结和反思4
  • SQL 入门指南:排序与分页查询(ORDER BY 多字段排序、LIMIT 分页实战)
  • 使用Shell脚本实现Linux系统资源监控邮件告警
  • 永磁同步电机 FOC 控制中 d、q 轴杂谈与角度偏移影响
  • 使用Ansible自动化部署Hadoop集群(含源码)--环境准备