news 2026/5/1 4:27:55

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/5/1 4:04:13

Vivado中Zynq-7000软硬件协同仿真加速技巧实战案例

Vivado中Zynq-7000软硬件协同仿真加速实战&#xff1a;从卡顿到流畅的跃迁你有没有经历过这样的场景&#xff1f;在Vivado里搭好了一个Zynq-7000的系统&#xff0c;PS端写好了裸机驱动&#xff0c;PL端连上了AXI DMA和FIFO模块&#xff0c;信心满满地点击“Run Simulation”——…

作者头像 李华
网站建设 2026/5/1 4:06:13

44、Windows Phone 应用市场开发与管理全解析

Windows Phone 应用市场开发与管理全解析 一、应用更新相关要点 在应用开发和运营过程中,更新是必不可少的环节。目前,应用市场不会对 XAP 文件进行加密,若担心盗版问题,可在上传应用到市场前进行代码混淆处理。 应用市场目录信息更新较为灵活,可随时更新描述、图标、关…

作者头像 李华
网站建设 2026/5/1 4:05:00

51、Windows Phone 7.1及7.1.1版本功能增强解析

Windows Phone 7.1及7.1.1版本功能增强解析 1. Launcher和Chooser增强 Windows Phone 7.1对原有的Launcher和Chooser进行了一系列增强,还引入了一些全新的Launcher和Chooser。 1.1 原有增强内容 选择联系人信息(电话、电子邮件或地址)时,现在还会返回联系人姓名。 Ema…

作者头像 李华
网站建设 2026/4/25 19:51:33

57、Windows Phone 7.1:数据支持与框架增强

Windows Phone 7.1:数据支持与框架增强 1. 数据搜索与LINQ表达式 在搜索结果中可以使用LINQ表达式。以下示例从初始搜索返回的完整联系人集合中提取以“A”开头的联系人子集: private void contacts_SearchCompleted(object sender, ContactsSearchEventArgs e) { if (e…

作者头像 李华
网站建设 2026/5/1 5:02:01

BusyBox移植到ARM架构的核心要点解析

如何让BusyBox在ARM板上跑起来&#xff1f;——一次真实移植全过程拆解 你有没有遇到过这样的场景&#xff1a;新拿到一块ARM开发板&#xff0c;U-Boot能启动&#xff0c;内核也成功加载了&#xff0c;可最后却卡在“ No init found ”的错误提示上&#xff1f; 别急&#…

作者头像 李华
网站建设 2026/5/1 5:03:00

Multisim14.3仿真BJT偏置电路并优化静态工作点

用Multisim14.3玩转BJT偏置电路&#xff1a;从仿真到Q点精准调优你有没有遇到过这样的情况&#xff1f;明明根据教科书公式算好了电阻值&#xff0c;焊好电路一通电&#xff0c;示波器上却是一团扭曲的波形——不是削顶就是削底。调试半天才发现&#xff0c;原来是BJT的静态工作…

作者头像 李华