对象参数校验的花式写法
原文 PDF:
cleancode/对象参数校验的花式写法.pdf(已转文字 + 提取配图)
正文
2023/4/12 01:31
2021-11-30 09:27
# 1 # 1 # 1
2.1
facadeImpl&controller
facadeImpl
public class TradeFacadeImpl{
// -- 1
public String createTradeOrder(TradeOrderDto tradeOrder){
if(tradeOrder.sellerId == null || tradeOrder.sellerId <=0L){
return " ID ";
}
}
//--2
public ResultDataDto createTradeOrder(TradeOrderDto tradeOrder){
if(tradeOrder.sellerId == null || tradeOrder.sellerId <=0L){
return ResultDataDto.fail(500," ID ");
}
}
//--3
public ResultDataDto createTradeOrder(TradeOrderDto tradeOrder){
if(tradeOrder.sellerId == null || tradeOrder.sellerId <=0L){
throw new CheckParamException(" ID ");
}
}
}
controllercontroller
2.2 DTO,VO
TradeFacadeImpl
createTradeOrder
https://mp.weixin.qq.com/s/-zsvEnx8ulO9EH0T3XfKqw 1/7
2023/4/12 01:31
public class TradeFacadeImpl{
// -- 1
public String createTradeOrder(TradeOrderDto tradeOrder){
String checkResult = tradeOrder.check();
if(checkResult != null && checkResult !=""){
return checkResult;
}
}
//--2
public ResultDataDto createTradeOrder(TradeOrderDto tradeOrder){
ResultDataDto checkResult = tradeOrder.check();
if(!checkResult.isSuccess()){
return checkResult;
}
}
}
public class TradeOrderDto{
private Long sellerId;
private String sellerName;
private String customerId;
private String customerName;
//1
public String check(){
if(this.sellerId == null || this.sellerId <= 0L){
return " ID
";
//return "sellerId
";
//return " ID sellerId
";
}
return "success";
//return null;
}
//2
public ResultDataDto check(){
if(this.sellerId == null || this.sellerId <= 0L){
return ResultDataDto.fail(500," ID
");
//return ResultDataDto.fail(500,"sellerId
");
//return ResultDataDto.fail(500," ID sellerId
");
}
return ResultDataDto.success();
}
}
DTO,VO
2.3 AOP
AOPTradeFacadeImplcreateTradeOrder
https://mp.weixin.qq.com/s/-zsvEnx8ulO9EH0T3XfKqw 2/7
2023/4/12 01:31
public class TradeFacadeImpl{ dto
// -- 1--
public TradeOrderDto createTradeOrder(TradeOrderDto tradeOrder){
String checkResult = tradeOrder.check();
if(checkResult != null && checkResult !=""){
return checkResult;
}
}
//--2--
public ResultDataDto createTradeOrder(TradeOrderDto tradeOrder){
ResultDataDto checkResult = tradeOrder.check();
if(!checkResult.isSuccess()){
return checkResult;
}
}
}
public class TradeOrderDto{
@NotNull()
private Long sellerId;
@NotNull()
private String sellerName;
private String customerId;
private String customerName;
}
public class ParamCheckAspect{
// FacadeImpl
@Pointcut("execution(public * com.spring.aop.*FacadeImpl.*(..))")
private void pointCut(){};
//1--
@Before(value = "pointCut()")
public void logStart(JoinPoint joinpoint) {
//
Object obj = point.getArgs()[0];
Class clazz = obj.getClass();
Field[] fields = clazz.getDeclaredFields();
for (Field field : fields){
field.setAccessible(true);
//field Annotation check
//field Value Check
//throw new RuntimeException(String.format(" %s
",field.getName));
}
}
//2--
@Around(value = "pointCut()")
public ResultDataDto logStart(JoinPoint joinpoint) {
//
Object obj = point.getArgs()[0];
Class clazz = obj.getClass();
Field[] fields = clazz.getDeclaredFields();
boolean check=false;
for (Field field : fields){
field.setAccessible(true);
//field Annotation check
//field Value Check
}
if(!check){
return ResultDataDto.fail(500," ");
}
point.proceed(args);
}
}
2.4 Validator
TradeFacadeImpl
https://mp.weixin.qq.com/s/-zsvEnx8ulO9EH0T3XfKqw 3/7
2023/4/12 01:31
@Service
public class TradeFacadeImpl{
@Autowired
private TradeValidator tradeValidator;
//--1
public String createTradeOrder(TradeOrderDto tradeOrder){
String checkResult = tradeValidator.check(tradeOrder);
if(checkResult != null && checkResult !=""){
return checkResult;
}
}
//--2--
public ResultDataDto createTradeOrder(TradeOrderDto tradeOrder){
ResultDataDto checkResult = tradeValidator.check(tradeOrder);
if(!checkResult.isSuccess()){
return checkResult;
}
}
}
// spring bean
@Service
public class TradeValidator{
@Autowird
public TradeService tradeService;
//--1
public String check(TradeOrderDto tradeOrder){
if(this.sellerId == null || this.sellerId <= 0L){
return " ID
";
//return "sellerId
";
//return " ID sellerId
";
}
return "success";
}
//--2
public ResultDataDto check(TradeOrderDto tradeOrder){
if(this.sellerId == null || this.sellerId <= 0L){
return ResultDataDto.fail(500," ID
");
//return ResultDataDto.fail(500,"sellerId
");
//return ResultDataDto.fail(500," ID sellerId
");
}
return ResultDataDto.success();
//
//return checkUniq(tradeOrder);
}
//---Validator
public ResultDataDto checkUniq(TradeOrderDto tradeOrder){
TradeOrderBO tradeOrderBo = tradeService.getByCondition(tradeOrder);
if(tradeOrderBo == null){
return ResultDataDto.success();
}
return ResultDataDto.fail(500," ");
}
}
2.5
https://mp.weixin.qq.com/s/-zsvEnx8ulO9EH0T3XfKqw 4/7
2023/4/12 01:31
@Service
public class TradeFacadeImpl{
@Autowird
public TradeService tradeService;
//--1
public String createTradeOrder(TradeOrderDto tradeOrder){
String checkResult = ParamCheckUtil.checkParam(tradeOrder);
if(checkResult != null && checkResult !=""){
return checkResult;
}
}
//--2--
public ResultDataDto createTradeOrder(TradeOrderDto tradeOrder){
ResultDataDto checkResult = tradeValidator.check(tradeOrder);
if(!checkResult.isSuccess()){
return checkResult;
}
}
}
public class ParamCheckUtil{
//
public static String checkParam(Object obj){
Class clazz = obj.getClass();
Field[] fields = clazz.getDeclaredFields();
//obj instance list check logic
//obj instance map check logic
boolean check=false;
for (Field field : fields){
field.setAccessible(true);
//field Annotation check
//field Value Check
}
if(!check){ ";
return " field.name
}
return "";
}
}
2.6
webcontrollerweb
Hibernate Validator+springboot /mvc
@Controller(value="/trade")
public class TradeController{
@RequestMapping("/create")
public String createTradeOrder( @RequestBody @Valid TradeOrderVO tradeOrder
{
if(result.hasErrors()){
return result.errorListstr();
}
}
}
import org.hibernate.validator.constraints.NotBlank;
import javax.validation.constraints.AssertFalse;
import javax.validation.constraints.Pattern;
public class TradeOrderDto{ ")
@NotBlank(message=" ID
private Long sellerId;
@NotBlank(message=" ")
@Pattern(regexp="^[0-9]{1,2}$",message="
")
private String amount;
}
2.7
webwebweb
JS
2.8
https://mp.weixin.qq.com/s/-zsvEnx8ulO9EH0T3XfKqw 5/7
2023/4/12 01:31
@Service
public class TradeFacadeImpl{
@Autowired
private UserService userService;
//
public String createTradeOrder(TradeOrderDto tradeOrder){
UserDTO sellerDto = userService.getById(tradeOrder.getSellerId);
if(sellerDto == null){
return "
";
//throw new Exception("
");
}
}
}
2.9
@Service
public class ItemSpuFacadeImpl{
@Autowired
private SpuService spuService;
//
public String createFrontSpu(ItemFrontSpuDTO frontSpuDto){
frontSpuDto.check();
spuService.createFrontSpu(frontSpuDto.name,frontSpuDto.code,frontSpuDto
}
}
@Service
public class SpuService{
@Autowired
private ItemSpuDao itemSpuDao;
// spu
public boolean createFrontSpu(String frontSpuName,String code,Set<KVPair> pr
if(frontSpuName == null || String code == null || propSet == null){
return false;
}
if(propSet.isEmpty()){
return false;
}
int count = itemSpuDao.insert(ItemSpuEntity);
}
}
public class ItemSpuDao extends BaseDao{
int insert(ItemSpuEntity spuEntity){
if(spuEntity == null || spuEntity.name == null){
return 0;
}
return super.insert(spuEntity);
}
}
servicefacadeimpl,controller
https://mp.weixin.qq.com/s/-zsvEnx8ulO9EH0T3XfKqw 6/7
2023/4/12 01:31
ChatGPT
GPT-46
Spring Junit
https://mp.weixin.qq.com/s/-zsvEnx8ulO9EH0T3XfKqw 7/7
配图
第 7 页 — 001-p07.jpeg

第 7 页 — 002-p07.jpeg
