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()
相关推荐
夏幻灵2 小时前
C++ 中手动重载赋值运算符(operator=)时实现部分复制的思路和方法
开发语言·c++·算法
亚林瓜子3 小时前
nodejs里面的百分号解码之URLSearchParams
开发语言·javascript·ecmascript·node·url·百分号编码
superman超哥3 小时前
仓颉语言中包与模块系统的深度剖析与工程实践
c语言·开发语言·c++·python·仓颉
尤老师FPGA3 小时前
使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第四十二讲)
android·java·ui
x70x803 小时前
C++中不同容器的用法及接口(vector / deque / stack / queue / priority_queue)
开发语言·c++
再__努力1点3 小时前
LBP纹理特征提取:高鲁棒性的纹理特征算法
开发语言·人工智能·python·算法·计算机视觉
lsx2024063 小时前
Bootstrap4 卡片布局指南
开发语言
老朱佩琪!3 小时前
Unity备忘录模式
java·unity·备忘录模式
superman超哥3 小时前
仓颉热点代码识别深度解析
开发语言·后端·python·c#·仓颉