优秀代码写法

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中情况

  1. 是否为 null
  2. 是否为 ""
  3. 是否为空字符串(引号中间有空格)  如: "   "。

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传参
{
    "mid":"234234",
    "managerNo":"333",
    "listContents":[
        {
        "uuid":"55555",
        "objectName":"",
        },
         {
        "uuid":"222333",
        "objectName":"",
        }
    ]
}
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;
9.<![CDATA[]]> 详解
<![CDATA[]]>这个标记所包含的内容将表示为纯文本,比如<![CDATA[<]]>表示文本内容“<”。
此标记用于xml文档中,我们先来看看使用转义符的情况。
我们知道,在xml中,”<”、”>”、”&”等字符是不能直接存入的,否则xml语法检查时会报错,
如果想在xml中使用这些符号,必须将其转义为实体,如”<”、”>”、”&”,这样才能保存进xml文档。
10 xml 转义字符
在XML中,需要转义的字符有:
(1)& &amp; (2)< &lt;(3)> &gt; (4)" &quot; (5)' &apos;
但是严格来说,在XML中只有”<”和”&”是非法的,其它三个都是可以合法存在的
11mybaties里写循环
 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的用法
SELECT oid,`status`, CASE `status` WHEN 1 THEN '未付款'
                                                          WHEN 2 THEN '已付款'
                                                          ELSE '无效订单' END
FROM t_order;
 
posted @ 2022-11-28 17:27  张福祥  阅读(112)  评论(0)    收藏  举报