news 2026/7/12 21:56:31

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/7/2 1:34:17

手把手教程:搭建工业级三极管开关电路解析系统

从零搭建工业级三极管开关电路&#xff1a;不只是点亮LED&#xff0c;而是理解控制系统的底层逻辑 你有没有遇到过这种情况——明明代码写对了&#xff0c;MCU也输出高电平了&#xff0c;可继电器就是不吸合&#xff1f;或者电路时好时坏&#xff0c;在实验室运行正常&#xff…

作者头像 李华
网站建设 2026/7/3 21:21:21

52、Windows Phone 7.5及7.1版本功能增强解析

Windows Phone 7.5及7.1版本功能增强解析 1. 磁贴固定与删除功能 在应用开发中,用户可将本地磁贴固定到开始屏幕,这一功能在用户能从多个磁贴选项中进行选择时变得更有趣。以天气应用为例,用户能标记喜欢的地点,并将这些地点对应的磁贴固定到开始屏幕。 以下是删除特定磁…

作者头像 李华
网站建设 2026/7/11 9:09:46

53、7.5 版本增强功能:OData 客户端与搜索扩展性

7.5 版本增强功能:OData 客户端与搜索扩展性 在软件开发过程中,不断优化和扩展应用程序的功能是提升用户体验的关键。本文将详细介绍 7.5 版本中的两个重要增强功能:OData 客户端的优化以及搜索扩展性的提升。 1. OData 客户端 在早期版本中,Windows Phone 7 缺乏对生成…

作者头像 李华
网站建设 2026/6/30 2:25:30

61、Windows Phone 7.1开发工具与功能增强解析

Windows Phone 7.1开发工具与功能增强解析 1. 性能分析与Profiler 在Windows Phone 7.1的开发中,Profiler是一个强大的工具,可用于跟踪应用程序对CPU和内存资源的使用情况。可以执行跨FAS(快速应用切换)的Profiler分析,但不能跨墓碑化(tombstoning)。当应用程序处于休…

作者头像 李华
网站建设 2026/6/28 19:42:32

MOSFET工作原理实测演示:栅极驱动波形与导通损耗关系

MOSFET开关损耗实测揭秘&#xff1a;从栅极波形看效率瓶颈你有没有遇到过这样的情况&#xff1f;选了一颗导通电阻 $ R_{DS(on)} $ 只有几毫欧的“神管”&#xff0c;结果电源模块还是烫得不敢摸&#xff0c;效率卡在90%上不去。问题很可能不在MOSFET本身&#xff0c;而在驱动它…

作者头像 李华
网站建设 2026/7/12 13:53:26

WarcraftHelper终极指南:让经典魔兽在新电脑上完美运行

WarcraftHelper终极指南&#xff1a;让经典魔兽在新电脑上完美运行 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为老版本魔兽在新系统上频繁崩…

作者头像 李华