news 2026/4/16 9:09:18

Java基本快捷方法

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java基本快捷方法

Java基本快捷方法

1、SQL默认建表3要素

ALTER TABLE test ADD COLUMN is_delete tinyint(1) NOT NULL DEFAULT '0' COMMENT '删除状态 0:未删除 1:已删除', ADD COLUMN create_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', ADD COLUMN update_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间', ADD COLUMN `create_user_id` bigint(20) unsigned NOT NULL DEFAULT 0 COMMENT '创建者', ADD COLUMN `update_user_id` bigint(20) unsigned NOT NULL DEFAULT 0 COMMENT '更新者';

1.1:DDL增加语句

ALTER TABLE test ADD COLUMN is_delete tinyint(1) NOT NULL DEFAULT '0' COMMENT '删除状态 0:未删除 1:已删除', ADD COLUMN create_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', ADD COLUMN update_time datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间';

1.2:DDL增加语句+修改字段顺序

ALTER TABLE `tem_hot_sales` MODIFY COLUMN `org_id` bigint UNSIGNED NOT NULL DEFAULT 10002 COMMENT '组织id' AFTER `id`;
解析
  • ALTER TABLE tem_hot_sales
    表示修改名为tem_hot_sales的表结构。
  • MODIFY COLUMN org_id bigint UNSIGNED NOT NULL DEFAULT 10002 COMMENT '组织id'
    表示修改表中org_id列的定义:
    • 数据类型修改为bigint UNSIGNED(无符号的 64 位整数)
    • 该字段不允许为 NULL (NOT NULL)
    • 默认值为10002(DEFAULT 10002)
    • 添加字段注释为'组织id'
  • AFTER id
    表示把org_id这个列放到表中id列的后面,调整字段顺序。

1.3:DDL重置主键自增长值

TRUNCATE TABLE `tem_order_spider`; ALTER TABLE `tem_order_spider` AUTO_INCREMENT = 1;
ALTER TABLE tem_replenishment MODIFY COLUMN suggest_quantity INT DEFAULT0COMMENT'建议量';
解析
  1. ALTER TABLE tem_replenishment
    说明需要修改名为tem_replenishment的表。
  2. MODIFY COLUMN suggest_quantity
    说明对表中的suggest_quantity列进行修改。
  3. INT DEFAULT 0
    suggest_quantity字段的数据类型设置为INT(整数),并且默认值为0
    ——也就是说,如果插入数据时没有为suggest_quantity指定值,系统会自动填入0
  4. COMMENT ‘建议量’
    为该字段添加注释说明,内容为“建议量”。

2、出参格式化时间

@ApiModelProperty(value = "创建时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date createTime ; @ApiModelProperty(value = "修改时间") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date updateTime ;

3、添加索引

ALTER TABLE `org_organize_application` ADD INDEX `idx_app_id` (`app_id`);

4、非空判断

List<OrganizeApplicationBaseRes> applicationBaseAll = this.getApplicationBaseAll(); return Optional.ofNullable(applicationBaseAll) .orElseGet(Collections::emptyList) .stream() .filter(ObjectUtil::isNotEmpty) .filter(item -> type.equals(item.getType())) .collect(Collectors.toList());

5、重试

//接单排除网络影响 进行3次重试 int retry = 0; while (true) { boolean eleConfirmed = eleConfirmed(platformOrderId, orderCreateDto, appInfo); if (eleConfirmed) { log.info("饿了么成功确认订单,platFormOrderId: {}", platformOrderId); //修改订单状态 --> 订单正在确认中 orderRepo.changeInStatus(platformOrderId, OrderStatus.CONFIRMING); orderUtil.saveOrderLog(ThirdType.ELE.getType(), orderId, "order.confirm", JSON.toJSONString(true)); return; } else { log.error("饿了么确认订单失败 platFormOrderId: {}; retry: {}", platformOrderId, ++retry); if (retry > 3) { return; } ThreadUtil.sleep(1000); } }
//最大等待时间(秒) long maxWaitTime = 120; //等待间隔(毫秒) int retryInterval = 100; long startTime = System.currentTimeMillis(); boolean eleConfirmed = false; while (true) { try { eleConfirmed = eleConfirmed(platformOrderId, orderCreateDto, appInfo); if (eleConfirmed) { log.info("饿了么成功确认订单,platFormOrderId:{},orderId:{}", platformOrderId, orderId); // 修改订单状态 --> 订单正在确认中 orderRepo.changeInStatus(platformOrderId, OrderStatus.CONFIRMING); orderUtil.saveOrderLog(ThirdType.ELE.getType(), orderId, "order.confirm", JSON.toJSONString(true)); return; } } catch (Exception e) { log.error("饿了么确认订单过程中发生异常,platFormOrderId:{},错误信息:{}", platformOrderId, e.getMessage(), e); } //检查是否超过最大等待时间 if (System.currentTimeMillis() - startTime >= TimeUnit.SECONDS.toMillis(maxWaitTime)) { log.error("饿了么确认订单失败,超过最大等待时间未确认订单,platFormOrderId:{}, orderId:{}", platformOrderId, orderId); return; } ThreadUtil.sleep(retryInterval); }

6、redis锁

String lockKey = Constants.ORDER_PUSH_KEY; RLock lockStock = redissonClient.getLock(lockKey); boolean hasLock = false; try { hasLock = lockStock.tryLock(5, 30, TimeUnit.SECONDS); if (!hasLock) { throw new ServiceException("系统繁忙,请稍后重试"); } } catch (Exception e) { log.error("--, 异常信息: {}", e.getMessage(), e); } finally { if (hasLock && lockStock.isHeldByCurrentThread()) { lockStock.unlock(); } }

7、默认填充

@TableField(fill = FieldFill.INSERT) private Date createTime; @TableField(fill = FieldFill.INSERT_UPDATE) private Date updateTime;

8、getOne删除多余

public TemOrder getByChannelOrderId(String channelOrderId) { List<TemOrder> list = this.list(Wrappers.<TemOrder>lambdaQuery().eq(TemOrder::getChannelOrderId, channelOrderId)); if (ObjectUtil.isNotEmpty(list)) { if (list.size() > 1) { TemOrder maxIdRecord = list.stream().max(Comparator.comparing(TemOrder::getId)).orElse(null); Long maxId = maxIdRecord.getId(); List<Long> idsToDelete = list.stream().filter(record -> !record.getId().equals(maxId)).map(TemOrder::getId).collect(Collectors.toList()); if (!idsToDelete.isEmpty()) { this.removeByIds(idsToDelete); } return maxIdRecord; } else { return list.get(0); } } return null; }

9、保存2位小数

BigDecimal.valueOf(Double.valueOf(strDeliveryFee)).setScale(2, RoundingMode.HALF_UP).doubleValue()
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/16 9:07:59

anything-llm使用指南:从零搭建你的私有RAG系统

Anything-LLM 使用指南&#xff1a;从零搭建你的私有 RAG 系统 在当今信息爆炸的时代&#xff0c;知识的获取效率直接决定了个人与组织的竞争力。尽管大语言模型&#xff08;LLM&#xff09;已经能够流畅地生成文章、编写代码甚至参与决策&#xff0c;但它们始终受限于训练数据…

作者头像 李华
网站建设 2026/4/16 9:03:22

anything-llm更新日志解读:最新功能带来了哪些惊喜?

Anything-LLM更新日志解读&#xff1a;最新功能带来了哪些惊喜&#xff1f; 在企业知识管理日益复杂的今天&#xff0c;一个常见的困境是&#xff1a;公司积累了大量合同、技术文档和会议纪要&#xff0c;但当员工需要查找某个具体条款或历史决策时&#xff0c;往往要花费数小时…

作者头像 李华
网站建设 2026/4/15 19:05:45

基于Verilog的数据通路设计:从零实现完整示例

从零构建处理器核心&#xff1a;基于Verilog的数据通路实战设计在FPGA开发和数字系统设计的学习旅程中&#xff0c;有一个里程碑式的挑战——亲手实现一个能跑起来的处理器数据通路。这不仅是对硬件描述语言掌握程度的检验&#xff0c;更是理解计算机“如何真正工作”的关键一步…

作者头像 李华
网站建设 2026/4/15 14:33:35

43、Windows Phone开发的性能优化、测试与发布指南

Windows Phone开发的性能优化、测试与发布指南 1. 控件性能对比 在Windows Phone开发中,Panorama和Pivot控件是常见的界面元素,它们在性能和使用场景上有所不同: - Panorama控件 :它不是虚拟化控件,在初始加载时会渲染每个PanoramaItem内的所有内容。这使得它能在加载…

作者头像 李华
网站建设 2026/4/15 17:39:19

基于PyTorch的人脸追踪系统树莓派5移植手把手教程

从零打造树莓派5上的人脸追踪系统&#xff1a;PyTorch实战部署全记录 你有没有想过&#xff0c;用一块不到500元的开发板&#xff0c;就能跑起一个真正意义上“看得见、认得清”的AI视觉系统&#xff1f;这不再是实验室里的幻想。随着 树莓派5 的发布和轻量级深度学习框架的…

作者头像 李华
网站建设 2026/4/9 1:12:42

Zotero-Better-Notes关系图谱:让知识连接一目了然的可视化工具

Zotero-Better-Notes关系图谱&#xff1a;让知识连接一目了然的可视化工具 【免费下载链接】zotero-better-notes Everything about note management. All in Zotero. 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-better-notes 你是否曾经在整理文献笔记时感到…

作者头像 李华