个人实用java 常用语句(工作笔记)

//String按固定长度值MAX_LENGTH=3切割转List

private List<String> context2List(String clauseContext){

        List<String> list=new ArrayList<>();
        if(StrUtil.isEmpty(clauseContext)){
            return list;
        }
        int size=clauseContext.length()/MAX_LENGTH;
        int rest=clauseContext.length()%MAX_LENGTH;
        if(rest>0){
            size+=1;
        }
        System.out.println(size);
        for(int i=0;i<size;i++){
            String substring ="";
            if(i==size-1){
                substring = clauseContext.substring(i * MAX_LENGTH, clauseContext.length());
            }else {
                substring = clauseContext.substring(i * MAX_LENGTH, (i + 1) * MAX_LENGTH);
            }
            list.add(substring);
        }
        return list;
    }

//List转Json

List<User> user= new ArrayList();
String str = JSON.toJSONString(user);

//Json 转List方法

List<User> user= JSON.parseArray(json,User.class); 

//XML里模糊匹配数据库JSON字段中的对象某个属性值

and case when JSON_VALID ( tags ) then JSON_CONTAINS ( tags, JSON_OBJECT ( 'plant_no', #{plantNo} ) ) else null end

//XML里查询并合并去重某个字段用、连接

GROUP_CONCAT( DISTINCT f.plant_no SEPARATOR '、' ) as plantNo

//XML里in的写法(foreach循环遍历数组或集合)

<if test="countryCode != null and countryCode.length > 0">
            AND f.country_code IN
            <foreach  item="code" collection="countryCode" index="index"  open="(" separator="," close=")">
                #{code}
            </foreach>
</if>

//String转Long:
long l = Long.valueOf("123").longValue();

//根据某个实体属性去重

List<NewsTagsResponse> collect1 = n.stream().filter(distinctByKey((p) -> (p.getPlantName()))).collect(Collectors.toList());
System.out.println(collect1);


//根据多个实体属性去重

List<NewsTagsResponse> collect2 = n.stream().filter(distinctByKey((p) -> (p.getPlantName()))).filter(distinctByKey((p)-> (p.getArea()))).collect(Collectors.toList());
System.out.println(collect2);

public static <T> Predicate<T> distinctByKey(Function<? super T, Object> keyExtractor) {
        Map<Object, Boolean> seen = new ConcurrentHashMap<>();
        System.out.println("这个函数将应用到每一个item");
        return t -> seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null;
}


//mysql获取JSON字段

SELECT
    SUBSTR(JSON_EXTRACT( tags, "$[0].area" ) FROM 2 FOR (LENGTH( JSON_EXTRACT( tags, "$[0].area" )- 1 ))),id
FROM
    t_article
WHERE
    tags IS NOT NULL;

//验证字符串是否全为正整数

Pattern pattern1 = Pattern.compile("^\\+?[1-9][0-9]*$");


//验证字符串为可含4位小数的数字

Pattern pattern2 = Pattern.compile("^[0-9]+(.[0-9]{0,4})?$");
例子:g.getQty() != null && pattern1.matcher(g.getQty().toString()).matches() == false


//设置时区

spring:
  # 设置时区
  jackson:
    time-zone: GMT+8
    date-format: yyyy-MM-dd HH:mm:ss


//批量修改某个值

objects.forEach( o -> {o.setMoney(BigDecimal.ZERO);});

//将对象集合中的某个属性值用";"拼接,并且自动去除null,空字符串和纯空格并且去重:

String cid = tbReceiptgs.stream().map(TbReceiptg::getCid).distinct().filter(p->p!=null&&!p.trim().equalsIgnoreCase("")).collect(Collectors.joining(";"));

//将对象集合根据某个字段排序

list = list.stream().sorted(Comparator.comparingInt(Person::getAge)).collect(toList());


//List根据某个字段求和
preSalesTaskVos=preSalesTaskVos.stream().filter(e->e.getPlanWorkTime()!=null).collect(Collectors.toList());

       BigDecimal planTotalWorkTime = preSalesTaskVos.stream()
                // 将user对象的age取出来map为Bigdecimal
                .map(PreSalesTaskVo::getPlanWorkTime)
                // 使用reduce()聚合函数,实现累加器
                .reduce(BigDecimal.ZERO,BigDecimal::add);


//将对象List的某个数字类型的字段全部相加
BigDecimal reduce = refundDeductList.stream().filter(e -> e.getRefundFcy() != null).map(TbRefundDeduct::getRefundFcy).reduce(BigDecimal.ZERO, BigDecimal::add);

//实用excel注解
@Excel(name = "状态", readConverterExp = "0=正常,1=停用",dictType="sys_normal_disable")
@ApiModelProperty(value = "部门对象 SysDept")
    @Excels({@Excel(name = "部门", targetAttr = "deptName", type = Type.EXPORT)})
    private SysDept dept;

//List对象将某个属性作为KEY,另一个属性作为value转换成Map集合

deductMap = deductList.stream().collect(Collectors.toMap(TbRefundDeduct::getOrdcode, TbRefundDeduct::getRefundFcy));

 //List对象将某个属性作为KEY,整个对象作为value转换成Map集合

Map<String, TbPaygAct> paygActMap = list.stream().collect(Collectors.toMap(TbPaygAct::getPaygId, c -> c);
//假设KEY值有重复,后面的value覆盖前面的value
list.stream().collect(Collectors.toMap(TbPaygAct::getPaygId, c -> c, (c1, c2) -> c1));
//假设KEY值有重复将前面的value 和后面的value拼接起来
list.stream().collect(Collectors.toMap(TbPaygAct::getPaygId, c -> c, (c1, c2) -> c1+","+c2));

//map转list

List<String> list = map.values().stream().collect(Collectors.toList());

//mybatis-plus设置打印执行的SQL语句在日志中

//同时修改多个表字段

alter table t_factory_access
modify COLUMN access_type VARCHAR(16) DEFAULT '' COMMENT '准入产品类型 ',
MODIFY COLUMN country_name VARCHAR(128) DEFAULT '' COMMENT '国家名称',

字段注解:

    @NotNull(message = “用户不能为空”)
    @Null 被注释的元素必须为null
    @NotNull 被注释的元素不能为null
    @AssertTrue 被注释的元素必须为true
    @AssertFalse 被注释的元素必须为false
    @Min(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
    @Max(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
    @DecimalMin(value) 被注释的元素必须是一个数字,其值必须大于等于指定的最小值
    @DecimalMax(value) 被注释的元素必须是一个数字,其值必须小于等于指定的最大值
    @Size(max,min) 被注释的元素的大小必须在指定的范围内。
    @Digits(integer,fraction) 被注释的元素必须是一个数字,其值必须在可接受的范围内
    @Past 被注释的元素必须是一个过去的日期
    @Future 被注释的元素必须是一个将来的日期
    @Pattern(value) 被注释的元素必须符合指定的正则表达式。
    @Email 被注释的元素必须是电子邮件地址
    @Length 被注释的字符串的大小必须在指定的范围内
    @NotEmpty 被注释的字符串必须非空

BigDecimal

加法 add()函数     减法subtract()函数        乘法multiply()函数    除法divide()函数   

绝对值abs()函数

//判断BigDecimal类型数据不等于0

paygFcy.signum() != 0;
paygFcy.compareTo(BigDecimal.ZERO)!=0;

//BigDecimal除法保留2位小数,并向上进位

BigDecimal usedIcedweight = usedQty.multiply(leftNum.getIcedweight()).divide(salQty, 2, BigDecimal.ROUND_HALF_UP);

//实体类字段注解::插入数据库的时间自动生成

@TableField(fill = FieldFill.INSERT)

@TableField(fill = FieldFill.INSERT_UPDATE)

//数据库日期类型字段设置实时修改更新为当前时间(设置默认值)

CURRENT_TIMESTAMP

//抛出含变量的异常:

%d        数字

%s        字符串

例子:throw new CustomException(String.format("该采购单已做付款申请金额,所以商品明细的原币总金额必须大于 %d ",paygFcy));

//QueryWrapper同时模糊匹配两个字段写法:

queryWrapper.and(queryUpdateInformRequest.getContent()!=null,wrapper->wrapper
        .like("content",queryUpdateInformRequest.getContent())
        .or()
        .like("content_eng",queryUpdateInformRequest.getContent()));

//分页查询写法

Page<BaseCountry> baseCountryPage = page(new Page<>(page, limit), cnQueryWrapper);
//返回空白分页数据
return PageInfo.emptyReturn();
//返回分页查询结果
return PageInfo.returnPage(baseCountryPage.getTotal(), baseCountryPage.getRecords());

//根据当前日期加10位随机数生成随机单号

String refundCode = orderCodePrefix + DateUtils.dateTimeNow() + new Random().nextInt(10);

//查询表的所有字段

Select column_name from columns Where table_name='tb_purorder'

//查询整个库的某个字段所在的表名

Select DISTINCT(TABLE_NAME) from columns Where COLUMN_NAME='production_range'

//Pattern正则表达式判断字符串

//正整数
Pattern pattern1 = Pattern.compile("^\\+?[1-9][0-9]*$");
pattern1.matcher(校验的变量.toString()).matches() == false/true
//保留4位小数的正数
Pattern pattern2 = Pattern.compile("^[0-9]+(.[0-9]{0,4})?$");
pattern2.matcher(校验的变量.toString()).matches() == false/true

//项目.yml配置

# MyBatis Plus配置
mybatis-plus:
  # 搜索指定包别名
  typeAliasesPackage: com.ssht.**.domain
  # 配置mapper的扫描,找到所有的mapper.xml映射文件
  mapperLocations: classpath*:mapper/**/*Mapper.xml
  # 加载全局的配置文件
  configLocation: classpath:mybatis/mybatis-config.xml

# PageHelper分页插件
pagehelper:
  helperDialect: mysql
  supportMethodsArguments: true
  params: count=countSql

# Swagger配置
swagger:
  # 是否开启swagger
  enabled: true
  # 请求前缀
  pathMapping: /dev-api

# 防止XSS攻击
xss:
  # 过滤开关
  enabled: true
  # 排除链接(多个用逗号分隔)
  excludes: /system/notice
  # 匹配链接
  urlPatterns: /system/*,/monitor/*,/tool/*

//Excel表数据导入(解析数据)

public AjaxResult<TbPayg> importPaygData(MultipartFile file){
    ExcelUtil<TbPayg> util = new ExcelUtil<>(TbPayg.class);
    List<TbPayg> dataList = util.importExcel(file.getInputStream());
    List<TbPayg> filterData = dataList.stream().filter(data -> data !=null).collect(Collectors.toList());
}

//StringBuilder的用法

//追加数据
builder.append("just");
//向指定位置插入数据
builder.insert(0, "you");
//删除指定位置的数据
builder.deleteCharAt(index);
//删除指定范围的数据左闭右开
builder.delete(beginIndex, endIndex);
//将对象中的数据以字符串的形式返回
builder.toString();
//将对象中的数据反转
builder.reverse();

//代码里获取YML配置文件中的值

//第一种@Value
@Value("${token.expireTime}")
private String expireTime;
System.out.println(expireTime);

//第二种@Autowired
@Autowired
private Environment env;

String loginType="";//自定义变量
String expireTime= env.getProperty("token.expireTime"+loginType);
System.out.println(expireTime);

实体类序列化

private static final long serialVersionUID = 1L;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值