个人实用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字段
SELECTSUBSTR(JSON_EXTRACT( tags, "$[0].area" ) FROM 2 FOR (LENGTH( JSON_EXTRACT( tags, "$[0].area" )- 1 ))),id
FROMt_article
WHEREtags 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+8date-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: mysqlsupportMethodsArguments: trueparams: count=countSql# Swagger配置
swagger:# 是否开启swaggerenabled: 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;
个人实用java 常用语句(工作笔记)相关推荐
- shell脚本常用语句用法笔记
脚本基本语句用法笔记 grep -i 查询时不区分大小写 -n打印匹配的行号 -v 打印不匹配的行 -AX包括每次匹配之后X行 -BX包括每次匹配之后X行 cat /etc/passwd |grep ...
- Java|达梦工作笔记-达梦数据库同步工具(JDBC)
目录 前言 代码与实例 前言 最近数据库要用达梦,个人对达梦又有了新的认识.使用的是达梦7,这个数据库有很多BUG,官方提供的客户端,不仅卡,而且登录了后,使用Java JDBC操作更新时,是会被阻塞 ...
- JAVA高并发工作笔记0002---高并发编程之使用ThreadFactory来创建新的线程
技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 首先来构建线程封装类WorkThread,该类的功能主要是为了能够更好的管理线程而创建的 publ ...
- JAVA常用API的笔记
常用API 1.定义: 指的就是 JDK 中提供的各种功能的 Java类,这些类将底层的实现封装了起来 2.String String 类代表字符串,Java 程序中的所有字符串文字(例如" ...
- JAVA高并发工作笔记0001---高并发编程之ConcurrentLinkedDeque
技术交流QQ群[JAVA,C++,Python,.NET,BigData,AI]:170933152 一.ConcurrentLinkedDeque介绍 ConcurrentLinkedDeque 是 ...
- Java常用类学习笔记
Date类 Date类是在Java中获取日期时间最简单的一个类,可以通过直接实例化对象的方式获得当前的日期时间.得到的日期时间是国外的格式.Date类没有什么特殊的用法,就是简单的获取当前的日期时间. ...
- java boolean 包_java Boolean包装类工作笔记
本文章为各位介绍一篇关于java Boolean包装类工作笔记,希望这篇文章能够帮助到各位同学,有兴趣的朋友可以进来看看吧. 题目:问下列代码运行结果是什么? 代码如下 复制代码 package q ...
- 【java】java学习笔记之java常用类
如下图所示为笔者总结的java常用类学习笔记,其中,附带有代码示例(未展开),方便理解记忆.需要源文件的请到我的资源中下载,下载地址:https://download.csdn.net/downloa ...
- Java快速入门学习笔记5 | Java语言中的while循环语句
有人相爱,有人夜里开车看海,有人却连LeetCode第一题都解不出来!虽然之前系统地学习过java课程,但是到现在一年多没有碰过Java的代码,遇到LeetCode不知是喜是悲,思来想去,然后清空自己 ...
最新文章
- 怎么扫描_打印机上扫描仪怎么用 打印机上扫描仪使用及添加方法
- redis, memcached, mongo性能比较
- mysql 多线程 一致性_常见缓存数据库一致性方案(建议收藏)
- 数据库服务器管理系统,数据库管理系统服务器
- 利用scipy包计算表格线的峰值,还原表格得到表格结构
- 亚马逊出的平板电脑_美国最畅销的安卓平板电脑,还只有2GB内存
- 《大数据》2021年第6期目次摘要
- 干程序员辣么久,你为什么还没有年薪60万?
- C#多线程编程实例 线程与窗体交互
- Eclipse常用插件之Top10
- Java反编译工具,你知道几个?
- 《游戏学习》| html5 飞翔的小鸟 小游戏代码示例
- 浏览器扫码器 ,扫描二维码,浏览器调起二维码,扫一扫功能,网页版扫一扫
- php文字转拼音API接口下载,微擎API 开发之汉字转拼音助手
- 这个Python脚本牛逼了,秒抢红包就算了,还能无视撤回消息
- 基于JavaEye-API实现的Gerry-聊天Dos版v1.0
- 盘点 2019 Python中文社区十大热门文章
- mysql 节假日判断_sql 节假日判断(春节、中秋、国庆、周末等)
- 11 | 向埃隆·马斯克学习任务分解
- 「Java工具类」汉语转拼音工具类HanyuPinyinHelper.java