1.       数据验证器

1.1.   概述

本架构已经注册代理的业务处理对象在运行时都可以对其接口的方法参数进行数据验证

进行数据验证的类型可以是基本类型也可以是javabean

进行数据验证之时如果验证不通过则会通过抛出异常的形式阻断业务的处理。

1.2.   UML

1.2.1.        类图

1.3.   使用方式

1.3.1.        验证参数

在业务处理方法的参数上标记@Checkable注解就可以达到验证效果,实际例子如下

 

    @Override

    public boolean delUserInfo(@Checkable(isNull = false)String name) throws SQLException {

       delete("user_info");

       and("name = ?", name);

       return executeUpdate(sql(), parameters()) > 0;

    }

 

如果调用该方法传入null值那么方法就会抛出org.jtry.framework.exception. CheckableDataException异常

 

    UserDao userDao = BeanManager.registrationClass(UserDaoImpl. class);

    userDao.delUserInfo(null);

 

 

Caused by: org.jtry.framework.exception.CheckableDataException: [null] claim is not null. data check failed!

    at org.jtry.framework.checkable.CheckableProcessor.checkIsNull(CheckableProcessor.java:64)

    at org.jtry.framework.checkable.CheckableProcessor.checkObject(CheckableProcessor.java:30)

    at org.jtry.framework.checkable.CheckableProcessor.checkObjects(CheckableProcessor.java:23)

    at org.jtry.framework.beans.BeanCentralHandler.invoke(BeanCentralHandler.java:51)

    ... 2 more

 

 

@Checkable注解包含以下一些可选项

 

boolean isNull() default true;

 

    String regex() default "";

 

    String dateFormat() default "";

 

    int minLength() default -1;

 

    int maxLength() default -1;

 

    int decimalLength() default -1;

 

isNull 验证当前当前传递的参数是否为null

minLength 验证当前传入的参数最小长度是否满足于指定值

maxLength 验证当前传入的参数最大长度是否满足于指定值

decimalLength 验证当前传入的数值小数点长度是否满足于指定值

dateFormat 验证当前传入的时间字符串是非满足于指定格式

regex 验证当前传入的参数是非匹配指定java正则表达式

1.3.2.        标记javaBean

如果业务处理方法的参数是一个javabean,那么需要在该javabean的属性上加入@Checkable注解,实际例子如下

 

public class User {

    @Checkable(isNull = false)

    private String name;

 

    @Checkable(isNull = false, maxLength = 3)

    private Integer age;

 

    @Checkable(isNull = false, decimalLength = 2)

    private Double money;

 

    @Checkable(minLength = 11, maxLength = 11, regex = "^[1]([3][0-9]{1}|59|58|88|89)[0-9]{8}$")

    private String phone;

 

    @Checkable(isNull = false, dateFormat = "yyyy-MM-dd HH:mm:ss")

    private String regTime;

 

然后在业务处理方法参数上如下标注就可以了

@Override

    public boolean delUserInfo(@Checkable User user) throws SQLException {

       delete("user_info");

       and("name = ?", user.getName());

       return executeUpdate(sql(), parameters()) > 0;

    }

 

如果要验证javabean本身也可以在注解中指定相关值

    @Override

    public boolean delUserInfo(@Checkable(isNull = false) User user) throws SQLException {

       delete("user_info");

       and("name = ?", user.getName());

       return executeUpdate(sql(), parameters()) > 0;

    }

其他特性请自行摸索。