一:基本数据类型,集合
- JDK8提供的Stream distinct(),提供去除重复元素功能。对于有序集合元素,可以通过Strem的distinct完成稳定去重。它是Strem的实现方法。例如对于一个List集合,可以通过
List<String> list1 = Lists.newArrayList(); List<String> list2 = Lists.newArrayList(); list1 .add("1"); list1 .add("3"); list1 .add("2"); list1 .add("2"); list2 = list1.stream().distinct().collect(Collectors.toList()) long l = list1.stream().distinct().count();
完成去重,并通过Collectors转换为List或者Map等
-
利用strem完成对List的操作:其中organizationList是一个Organization实体的集合,最终返回的List中只有每个实体的ID集合
List<String> deptIdList = organizationList.stream() .map(org -> org.getId()) .collect(Collectors.toList());
此使用是指:讲一个organizationList中每一个organization的ID值转换成一个List<String>
其中:1. List.stream:意思是将一个List转换成stream来处理
2. stream.map是将List中的每一个organization元素拆分作为一个map来处理
3. -> 兰姆达表达式,意思是对于List中的某个organization元素,传入形参org,返回org的Id值, 此时到这里,map中已经不再是实体的集合了,而是每个实体的ID集合
4. .collect,此方法是将结果转换为List。
最终结果就是List中每一个实体ID的集合。 -
List的.partition()方法,将list进行拆分
List<Integer> numList = Lists.newArrayList(1, 2, 3, 4, 5, 6, 7, 8); List<List<Integer>> lists=Lists.partition(numList,3); System.out.println(lists);//[[1, 2, 3], [4, 5, 6], [7, 8]];
JAVA中Lists.partition方法,是指将一个集合进行切分,例如:将munList按照三个一组,切分成了三个集合组成的一个集合。
-
springboot框架中获取properties配置中的参数值:
@Configuration
@EnableConfigurationProperties
@ConfigurationProperties
public class DataSourceConfig {
/**
* 超级管理员账号
*/
@Value("${com.kc.adminUserId}")
private String adminUserId;
//******
}
//properties中的配置:
//com.kc.adminUserId=84BBE6B0B59F49E6A2BBABE16B176363
- BigDecimal的使用
public BigDecimal add(BigDecimal value);//加法
public BigDecimal subtract(BigDecimal value); //减法
public BigDecimal multiply(BigDecimal value); //乘法
public BigDecimal divide(BigDecimal value); //除法
二:工具类
- UUID是JAVA中自动生成唯一识别码的工具类,能够随机生成一个32个16进制的字符,常用的方法是String uid = UUID.randomUUID().toString(). 然后将uid中的-替换成“”,使用String的方法进一步处理,就能用做唯一识别ID了。
/*** * 主键生成工具 * ***/ public static String generateKey32(){ String uuId= UUID.randomUUID().toString(); uuId=uuId.replaceAll("-","").toUpperCase(); return uuId; }
生成唯一识别码
三: 框架类
- spring的全局异常处理注解机制:
@ControllerAdvice public class MyControllerAdvice { /** * 应用到所有@RequestMapping注解方法,在其执行之前初始化数据绑定器 * @param binder */ @InitBinder public void initBinder(WebDataBinder binder) {} /** * 把值绑定到Model中,使全局@RequestMapping可以获取到该值 * @param model */ @ModelAttribute public void addAttributes(Model model) { model.addAttribute("author", "Magical Sam"); } /** * 全局异常捕捉处理 * @param ex * @return */ @ResponseBody @ExceptionHandler(value = Exception.class) public Map errorHandler(Exception ex) { Map map = new HashMap(); map.put("code", 100); map.put("msg", ex.getMessage()); return map; } }
此处异常捕捉是通过注解完成:
-
spring的全局异常处理方式:
-
通过@ControllerAdvice或者@RestControllerAdvice,区别是一个返回视图,一个返回json数据。该注解作用在类上,表示该类是一个作用于全局的处理类。其中主要使用的注解为:
-- @InitBinder: 应用到所有@RequestMapping注解方法,在其执行之前初始化数据绑定器
-- @ModelAttribute: 把值绑定到Model中,使全局@RequestMapping可以获取到该值。对于所有被 @RequestMapping 注解的方法中,都可以通过 ModelMap 获取到该注解方法下的model对象值。
-- @ExceptionHandler: 全局异常捕捉处理
-
-
-
spring中的事务管理:对于一个接口中的一个实现方法中,需要修改两条数据,切是关联性的,则需要如果某一个修改失败,则进行回滚,都失败。此时就需要事务管理。
注解的方式:在springboot的启动类中添加@EnableTransactionManagement注解,并在需要进行事务管理的方法或者类中添加注解进行明示,此方法需要事务管理:
@Transactional(propagation = Propagation.REQUIRED,isolation = Isolation.DEFAULT, timeout = 36000, rollbackFor = Exception.class) 第一个参数:事务传播行为。第二个:隔离级别。第三个:timeout超时时间。第四个:rollbackFor:发生什么异常时进行回滚。也可以什么都不传参,均使用默认,并且回滚会按照运行时异常类和集成了该类的异常进行回滚
详细介绍可以参考博文:https://blog.csdn.net/qq_39320953/article/details/77947947
四:JDK新特性
-
List.stream().collect(Collectors.groupingBy(Data::getName),此方法利用stream将list集合中所用的值按照name字段进行分组作为key,value为一个list,是所有name为该key的list集合。非常简单好用。