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;
java 复制代码
ALTER TABLE tem_replenishment 
MODIFY COLUMN suggest_quantity INT DEFAULT 0 COMMENT '建议量';
解析
  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()
相关推荐
老师我太想进步了20263 小时前
C语言版讲解函数递归
c语言·开发语言
XS0301063 小时前
Spring AI:两种内置 Advisor 快速实现 RAG
java·人工智能·spring
mifengxing3 小时前
LeetCode 238 除自身以外数组的乘积|无除法O(n)时间+O(1)空间双解法
java·算法·leetcode
猿长大人3 小时前
C# | 函数式编程入门
开发语言·c#·.net
W_326003 小时前
Python 组合数据类型——序列(列表 & 元组)
开发语言·python
Billy121383 小时前
Day10-C++20 Ranges(上):惰性求值与组合式数据处理
开发语言·c++进阶学习
有点。3 小时前
C++深度优先搜索(二)
开发语言·c++·深度优先
二进制杯莫停3 小时前
A和B环境的python版本相同,B环境无法安装pip依赖,离线安装
开发语言·python·pip
小林敲代码77884 小时前
Spring Boot 3 升级踩坑:aj-captcha 行为验证码底图加载失效
java·spring boot·后端
l1t4 小时前
kryonix提交的DuckDB 统一并优化标量执行器基础设施 - #24564 PR
开发语言·数据库·数据仓库·sql