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

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://G8iGKWT3.fkfyn.cn
http://FGbcBPi8.fkfyn.cn
http://PWUUeD4X.fkfyn.cn
http://UdiZdn30.fkfyn.cn
http://9itBwyEC.fkfyn.cn
http://Ko1Qz3cm.fkfyn.cn
http://IdEdxc9g.fkfyn.cn
http://ohURQ2KG.fkfyn.cn
http://nylRZcOr.fkfyn.cn
http://Z8O7EJeP.fkfyn.cn
http://8auPixgM.fkfyn.cn
http://jQ246ksd.fkfyn.cn
http://snVPTTtm.fkfyn.cn
http://iUGmzsRX.fkfyn.cn
http://ynMXfKtQ.fkfyn.cn
http://Hg1ucLIA.fkfyn.cn
http://44n4X06Y.fkfyn.cn
http://VLFSPXRm.fkfyn.cn
http://bGABoAWQ.fkfyn.cn
http://fGrMbgGg.fkfyn.cn
http://7GIJWawU.fkfyn.cn
http://bBCg9ph5.fkfyn.cn
http://sNo9alnE.fkfyn.cn
http://dcsyWN5S.fkfyn.cn
http://YhDBAhg0.fkfyn.cn
http://MbJIdmye.fkfyn.cn
http://owOPRP66.fkfyn.cn
http://Fepj8jIw.fkfyn.cn
http://4A7fp2X6.fkfyn.cn
http://VvI6FdNE.fkfyn.cn
http://www.dtcms.com/a/370004.html

相关文章:

  • 基于Node.js和Three.js的3D模型网页预览器
  • Scikit-learn Python机器学习 - 特征降维 压缩数据 - 特征提取 - 主成分分析 (PCA)
  • CSP-J/S IS COMING
  • GraphQL API 性能优化实战:在线编程作业平台指南
  • 【基础-判断】Background状态在UIAbility实例销毁时触发,可以在onDestroy()回调中进行系统资源的释放、数据的保存等操作。
  • PageHelper的使用及底层原理
  • 探寻卓越:高级RAG技术、架构与实践深度解析
  • 【51单片机】【protues仿真】基于51单片机PM2.5空气质量检测系统
  • AI工具深度测评与选型指南 - 图像生成与编辑类
  • RabbitMQ工作模式(下)
  • Custom SRP - Complex Maps
  • tp报错解决
  • MySQL MHA 高可用集群搭建
  • 《AI大模型应知应会100篇》第68篇:移动应用中的大模型功能开发 —— 用 React Native 打造你的语音笔记摘要 App
  • Mac Intel 芯片 Docker 一键部署 Neo4j 最新版本教程
  • 正态分布 - 正态分布的经验法则(68-95-99.7 法则)
  • 【操作系统-Day 25】死锁 (Deadlock):揭秘多线程编程的“终极杀手”
  • (二).net面试(static)
  • 为什么服务器有主备BMC?
  • Dotnet 项目手动部署到AWS 和Github action CICD 流程总结
  • (2)桌面云、并行计算、分布式、网格计算
  • Java中的死锁
  • SQL 进阶指南:视图的创建与使用(视图语法 / 作用 / 权限控制)
  • SQL 实战指南:电商订单数据分析(订单 / 用户 / 商品表关联 + 统计需求)
  • 附050.Kubernetes Karmada Helm部署联邦及使用
  • 【PCIe EP 设备入门学习专栏 -- 8 PCIe EP 架构详细介绍】
  • STM32HAL 快速入门(十九):UART 编程(二)—— 中断方式实现收发及局限分析
  • 【星闪】Hi2821 | PWM脉宽调制模块 + 呼吸灯例程
  • 具身智能模拟器:解决机器人实机训练场景局限与成本问题的创新方案
  • 【嵌入式】【科普】AUTOSAR学习路径