优秀代码写法
1.判断为空
String orgUuid = request.getOrgUuid();
String orgLevel = request.getOrgLevel();
if (StringUtils.isBlank(request.getOrgLevel()) || StringUtils.isBlank(request.getOrgUuid())){
orgUuid = sessionUser.getOrgUuid();
orgLevel = sessionUser.getRoleLevel();
}
在校验一个String类型的变量是否为空时,通常存在3中情况
- 是否为 null
- 是否为 ""
- 是否为空字符串(引号中间有空格) 如: " "。
StringUtils的isBlank()方法可以一次性校验这三种情况,返回值都是true
isBlank判断的空字符是包括了isEmpty的。isEmpty判断的范围更小点。
判断对象是否为空
StringUtils.isEmpty(Object str);
判断字符是否为空
if(a == null || a.length() == 0)
判断集合是否为空
CollectionUtils.isNotEmpty(listFeedBackAdbEnitityIPage.getRecords())
2.建表
CREATE TABLE `a-message` (
`mid` VARCHAR ( 32 ) COLLATE utf8mb4_bin NOT NULL COMMENT '编号',
`manager_no` VARCHAR ( 32 ) COLLATE utf8mb4_bin NOT NULL COMMENT '客户经理编号',
`license_no` VARCHAR ( 32 ) COLLATE utf8mb4_bin NOT NULL COMMENT '许可证号',
`start_time` TIMESTAMP COLLATE utf8mb4_bin NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '开始时间',
`end_time` TIMESTAMP COLLATE utf8mb4_bin NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '结束时间',
`MANAGE_UNIT_UUID` varchar(32) COLLATE utf8mb4_bin NOT NULL COMMENT '管理单元',
`syscreatedate` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '_创建时间',
`syscreatoruuid` VARCHAR ( 32 ) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '_创建人',
`sysupdatedate` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '_修改时间',
`sysupdateuseruuid` VARCHAR ( 32 ) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '_修改人',
`sysisdelete` VARCHAR ( 1 ) COLLATE utf8mb4_bin DEFAULT '0' COMMENT '_删除状态(0正常,1删除)',
PRIMARY KEY ( `mid` )
) ENGINE = INNODB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_bin;
COLLATE = utf8mb4_bin
utf8mb4_bin是区分大小写的,也区分e和é这类字符的
utf8_genera_ci是不区分大小写的,也不区分e和é这类字符
注:utf8_general_cs是区分大小写的,但不区分e和é这类字符
DEFAULT CURRENT_TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
3.list遍历
for (MessageTwo item : listContents){
}
4.变成stream流
listContents.stream().map(item->{
return item
}).collect(Collectors.toList())
Stream流获取单独一个字段 并重新变成数组
ArrayList<String> custTypeUuids = records.stream().map(c -> c.getCustTypeUuid()).collect(Collectors.toCollection(ArrayList::new));
获取page的数据
p.getRecords()
还能把page变成stream流
p.getRecords().stream().map(item->{
})
往page分页里放集合list数据
crmMcsCollectionQueryCustByStrategyIdPage.setRecords(collect);
怎么把一个分页的数据放进另一个空的数据:先将一个分页的数据放进list,然后另一个分页setRecords即可
5.json格式 list传参
6.获取uuid
1.
UUID uuid = UUID.randomUUID();
String str = uuid.toString();
String uuidStr = str.replace("-", "");
2.
WDK.getUUID();
7.判断字符是否为空
if(a == null || a.length() == 0)
判断分页集合是否为空
CollectionUtils.isNotEmpty(listFeedBackAdbEnitityIPage.getRecords())
8在sql中日期格式化
DATE_FORMAT(date,format)
DATE_FORMAT( b.SYSCREATEDATE,'%Y-%m-%d')
获取当前时间根据格式
1.String nowDateStr = LocalDate.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
2.Date date = new Date();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
bizDate = format.format(date);
3.单独获取年月
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH) + 1;
& (2)< <(3)> > (4)" " (5)' '
但是严格来说,在XML中只有”<”和”&”是非法的,其它三个都是可以合法存在的
<(3)> > (4)" " (5)' '
但是严格来说,在XML中只有”<”和”&”是非法的,其它三个都是可以合法存在的
> (4)" " (5)' '
但是严格来说,在XML中只有”<”和”&”是非法的,其它三个都是可以合法存在的
" (5)' '
但是严格来说,在XML中只有”<”和”&”是非法的,其它三个都是可以合法存在的
'
但是严格来说,在XML中只有”<”和”&”是非法的,其它三个都是可以合法存在的
cmcvs.cust_plan_uuid IN
<foreach collection="custPlanUuidList" item="item" index="index" open="(" separator="," close=")">
#{item}
</foreach>
12sql判空
<if test="EndDate != null and EndDate!=''">
fb_date <![CDATA[<=]]> #{EndDate}
</if>
13Stream流
sorted(Comparator com):Comparator排序器自定义排序
// 按工资升序排序(自然排序) 可以自己传一个比较器,当然这里它也帮我们实现了相关的比较功能,调用相关的方法就行
List<String> newList = personList.stream().sorted(Comparator.comparing(Person::getSalary)).map(Person::getName)
.collect(Collectors.toList());
// 按工资倒序排序
List<String> newList2 = personList.stream().sorted(Comparator.comparing(Person::getSalary).reversed())
.map(Person::getName).collect(Collectors.toList());
// 先按工资再按年龄升序排序
List<String> newList3 = personList.stream()
.sorted(Comparator.comparing(Person::getSalary).thenComparing(Person::getAge)).map(Person::getName)
.collect(Collectors.toList());
filter
筛选员工中工资高于5000的人,并形成新的集合(可以理解为在消费数据流)。
List<Person> collect = personList.stream().filter(item -> item.getSalary() > 5000).collect(Collectors.toList());
System.out.println("collect = " + collect);
//筛选出simpleList集合中大于17的元素,并打印出来
simpleList.stream().filter(item -> item > 17).forEach(System.out::println);
sql 计算字段里的值为01的个数并改为线下
count( CASE WHEN sign_in_way = '01' THEN '线下' END ) AS uplinePlans
让程序更快一点
-Xms2048m
-Xmx4096m
-XX:PermSize=512m
-XX:MaxPermSize=1024m
PermSize是用户对JVM选项设置的-Xmx值的附加值。但MaxPermSize允许JVM能够将PermSize增加到指定的量
-Xms: 设置初始化堆内存大小;
-Xmx: 设置最大可分配堆内存大小;
传一个关键字,搞定三个模糊查询
<if test="param.keyWord !='' and param.keyWord != null">
and (u.license_code like CONCAT("%",#{param.keyWord},"%")
or u.cust_name like CONCAT("%",#{param.keyWord},"%")
or u.artificial_name like CONCAT("%",#{param.keyWord},"%"))
</if>
sql随机获取五条数据
SELECT
NAME AS product_name,
stock
FROM
device_info b
WHERE
AND b.tobaccoLicense = 输入.license
order by rand()
limit 5
SQL中case的用法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY