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()
相关推荐
551只玄猫1 小时前
【数学建模 matlab 实验报告12】聚类分析和判别分析
开发语言·数学建模·matlab·课程设计·聚类·实验报告
小陈工3 小时前
Python Web开发入门(十七):Vue.js与Python后端集成——让前后端真正“握手言和“
开发语言·前端·javascript·数据库·vue.js·人工智能·python
H Journey3 小时前
C++之 CMake、CMakeLists.txt、Makefile
开发语言·c++·makefile·cmake
一定要AK7 小时前
Spring 入门核心笔记
java·笔记·spring
A__tao7 小时前
Elasticsearch Mapping 一键生成 Java 实体类(支持嵌套 + 自动过滤注释)
java·python·elasticsearch
KevinCyao7 小时前
java视频短信接口怎么调用?SpringBoot集成视频短信及回调处理Demo
java·spring boot·音视频
lly2024067 小时前
C 标准库 - `<stdio.h>`
开发语言
沫璃染墨7 小时前
C++ string 从入门到精通:构造、迭代器、容量接口全解析
c语言·开发语言·c++
jwn9997 小时前
Laravel6.x核心特性全解析
开发语言·php·laravel
迷藏4947 小时前
**发散创新:基于Rust实现的开源合规权限管理框架设计与实践**在现代软件架构中,**权限控制(RBAC)** 已成为保障
java·开发语言·python·rust·开源