项目中的基础知识

Spring的@validated

Spring-Boot中可以用@validated来校验数据,如果数据异常则会统一抛出异常,方便异常中心统一处理。

1、首先在controller上声明需要对数据进行校验

@RequestMapping(value="/url.json",method= {
   RequestMethod.POST})
@ResponseBody
@Transactional
public Result<?> xxmethod( @RequestBody @Validated  XoPO xoPo)     
    throws ParseException, UnsupportedEncodingException {
   }

​ 2、然后在bean上声明需要被校验的字段、

@data
public class XoPO{
   
    @validated // XoPo类中引用其他对象,也需要校验直接加@validated
    private List<OrderPerson> personList;
    
    @NotNull // 校验规则
    @Size(max=32,message="code is null")
    private String code;

    @NotBlank
    @Size(max=32,message="product is null")
    private String product;
}

​ 3、常用规则

@AssertFalse // 校验false
@AssertTrue // 校验true
@DecimalMax(value=,inclusive=) // 小于等于value,inclusive=true,是小于等于
@DecimalMin(value=,inclusive=) // 与上类似
@Max(value=) // 小于等于value
@Min(value=) // 大于等于value
@NotNull  // 检查Null
@Past  // 检查日期
@Pattern(regex=,flag=)  // 正则
@Size(min=, max=)  // 字符串,集合,map限制大小
@Validate // 对po实体类进行校验

Postman传递对象参数

  • 参数为对象

    @PostMapping("/saveMenu")
    public boolean addMenuAuth(@RequestBody Menu menu) {
         
    }
    
  • PostMan测试

    1、有安全认证时,需要配置 token

项目中的基础知识_第1张图片

2、配置Header

项目中的基础知识_第2张图片

3、配置Body

项目中的基础知识_第3张图片

Java stream流

使用例子

场景:现在有一个菜品集合,需要找出菜品中的卡路里小于400的菜品并且按照卡路里多少进行排序

class Dish{
   
	String name;
	int price;
	int calories;
}

普通方式的实现:

public class StreamDemo {
   
	public static void main(String[] args) {
   
		List<Dish> menu=Arrays.asList(
				new Dish("pork",800),
				new Dish("beef",700),
				new Dish("chicken",400),
				new Dish("french fries",530),
				new Dish("rice",350),
				new Dish("fruit",120),
				new Dish("pizza",550));
		List<Dish> lowCaloriesDish=new ArrayList<>();
		for(Dish d:menu)
		{
   
			if(d.getCalories()<400)
				lowCaloriesDish.add(d);
		}
		Collections.sort(lowCaloriesDish,new Comparator<Dish>() {
   

			@Override
			public int compare(Dish o1, Dish o2) {
   
				return Integer.compare(o1.getCalories(), o2.getCalories());
			}
		});
		for(Dish d:lowCaloriesDish)
			System.out.println(d.getName()+"  "+d.getCalories());
	}
}

在这里插入图片描述

使用流实现:

import java.util.List;
import static java.util.stream.Collectors.toList;
public class StreamDemo {
   
	public static void main(String[] args) {
   
		List<Dish> menu=Arrays.asList(
				new Dish("pork",800),
				new Dish("beef",700),
				new Dish("chicken",400),
				new Dish("french fries",530),
				new Dish("rice",350),
				new Dish("fruit",120),
				new Dish("pizza",550));
		List<String> lowCaloriesDishName=menu.stream()
				.filter(d->d.getCalories()<400)
				.sorted((d1,d2)->d1.getCalories()-d2.getCalories())
				.map(d->d.getName())
				.collect(toList());
		
		for(String name:lowCaloriesDishName)
			System.out.println(name);
	}
}

在这里插入图片描述

常用方法

1、分组
// 按照sn分组:  List> dataList
Map<String, List<Map<String, Object>>> dataMap = dataList.stream()

你可能感兴趣的:(后端,java,spring,boot,开发语言)