HUAFA框架入门(先登录:运行登录test)

1. 创建实体类(entity)

1.1 使用插件lombok(注意安装插件)

注解@Data 为实体类提供set、get、toString方法

扩展:

@Data :注解在类上;提供类所有属性的 getting 和 setting 方法,此外还提供了equals、canEqual、hashCode、toString 方法

     @Setter:注解在属性上;为属性提供 setting 方法
 ​
     @Getter:注解在属性上;为属性提供 getting 方法
 ​
     @Log4j :注解在类上;为类提供一个 属性名为log 的 log4j 日志对象
 ​
     @NoArgsConstructor:注解在类上;为类提供一个无参的构造方法
 ​
     @AllArgsConstructor:注解在类上;为类提供一个全参的构造方法

1.2 spring @Table注解 作用是 : 声明此对象映射到数据库的数据表,通过它可以为实体指定表(talbe)

@ApiModelProperty()用于方法,字段; 表示对model属性的说明或者数据操作更改 value–字段说明 name–重写属性名字 dataType–重写属性类型 required–是否必填 example–举例说明 hidden–隐藏

 @Id
 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
 @ApiModel(value="user对象",description="用户对象user")
 ​
 public class User implements Serializable{
     private static final long serialVersionUID = 1L;
      @ApiModelProperty(value="用户名",name="username",example="xingguo")
      private String username;
      @ApiModelProperty(value="状态",name="state",required=true)
       private Integer state;
       private String password;
       private String nickName;
       private Integer isDeleted;
  
       @ApiModelProperty(value="id数组",hidden=true)
       private String[] ids;
       private List<String> idList;
      //省略get/set
 }

2.参数(传入参数Request)

2.1 使用注解

 @ToString(callSuper = true)
 @ToString
 无需启动调试器即可查看您的字段:只需让lombok为您生成一个toString!
 ​
 Overview
 任何类定义可以使用@ToString让 lombok 生成toString()方法的实现。默认情况下,它会按顺序打印您的类名以及每个字段,并以逗号分隔。
 ​
 通过将includeFieldNames参数设置为true,您可以为toString()方法的输出添加一些清晰度(但也有一些长度)。
 ​
 默认情况下,将打印所有非静态字段。如果要跳过某些字段,可以使用@ToString.Exclude标注这些字段。或者,您可以使用@ToString(onlyExplicitlyIncluded = true)标准确定要使用的字段,然后标记要包含的每个字段@ToString.Include。
 ​
 通过设置callSuper为true,可以将父类实现toString的输出包含到输出中。请注意,toString()的默认实现java.lang.Object几乎毫无意义,因此除非您扩展另一个类,否则您可能不希望这样做。
 ​
 您还可以在您的方法中包含方法调用的输出toString。只能包含不带参数的实例(非静态)方法。为此,请使用@ToString.Include标记方法。
 ​
 您可以更改用于标识成员的名称@ToString.Include(name = "some other name"),并且可以更改成员的打印顺序@ToString.Include(rank = -1)。没有等级的成员被认为具有等级0,更高等级的成员被首先打印,并且相同等级的成员以它们在源文件中出现的相同顺序被打印。
 ​
 With Lombok
 import lombok.ToString;
 ​
 @ToString
 public class ToStringExample {
   private static final int STATIC_VAR = 10;
   private String name;
   private Shape shape = new Square(5, 10);
   private String[] tags;
   @ToString.Exclude private int id;
   
   public String getName() {
     return this.name;
   }
   
   @ToString(callSuper=true, includeFieldNames=true)
   public static class Square extends Shape {
     private final int width, height;
     
     public Square(int width, int height) {
       this.width = width;
       this.height = height;
     }
   }
 }
 ​
 Vanilla Java
 import java.util.Arrays;
 ​
 public class ToStringExample {
   private static final int STATIC_VAR = 10;
   private String name;
   private Shape shape = new Square(5, 10);
   private String[] tags;
   private int id;
   
   public String getName() {
     return this.getName();
   }
   
   public static class Square extends Shape {
     private final int width, height;
     
     public Square(int width, int height) {
       this.width = width;
       this.height = height;
     }
     
     @Override public String toString() {
       return "Square(super=" + super.toString() + ", width=" + this.width + ", height=" + this.height + ")";
     }
   }
   
   @Override public String toString() {
     return "ToStringExample(" + this.getName() + ", " + this.shape + ", " + Arrays.deepToString(this.tags) + ")";
   }
 }
 Supported configuration keys:
 lombok.toString.includeFieldNames = [true | false] (default: true)
 通常,lombok会以形式为每个字段生成toString响应的片段fieldName = fieldValue。如果将此设置设置为false,则lombok将省略该字段的名称,并只是部署所有字段值的逗号分隔列表。includeFieldNames如果明确指定,注释参数优先于此设置。
 lombok.toString.doNotUseGetters = [true | false] (default: false)
 如果设置为true,则lombok将直接访问字段,而不是在生成toString方法时使用getter(如果可用)。doNotUseGetters如果明确指定,注释参数优先于此设置。
 lombok.toString.callSuper = [call | skip | warn] (default: skip)
 如果设置为call,toString则如果您的类扩展了某些内容,lombok将生成对超类实现的调用。如果设置为skip,不会生成此类调用。如果设置为warn,也不会生成此类调用,但lombok会生成警告以告知您。
 lombok.toString.flagUsage = [warning | error] (default: not set)
 如果配置, Lombok会将任何@ToString用法标记为警告或错误。
 ​
 Small print
 如果存在任何toString不带参数的方法,则无论返回类型如何,都不会生成任何方法,而是会发出警告,说明您的@ToString注释不执行任何操作。你可以标记任何方法@lombok.experimental.Tolerate来隐藏它们从lombok。
 ​
 数组是通过打印的Arrays.deepToString,这意味着包含自身的数组将导致StackOverflowErrors。但是,这种行为与ArrayList例如没有区别。
 ​
 如果某个方法被标记为包含并且它与字段具有相同的名称,它将替换该字段的toString输出(包含该方法,排除该字段,并在该字段将被打印的位置打印方法的输出)。
 ​
 在lombok 1.16.22之前,可以使用注释的of和exclude参数完成包含/排除@ToString。这种旧式包含机制仍然受支持,但将来会被弃用。
 ​
 同时具有@ToString.Exclude和@ToString.Include成员上生成一个警告; 在这种情况下,会员将被排除在外。
 ​
 我们不保证toString()在lombok版本之间保持生成的方法的输出相同。你永远不应该设计你的API,以便其他代码被迫解析你的toString()输出!
 ​
 默认情况下,任何以$符号开头的变量都会自动排除。您只能使用@ToString.Include注释包含它们。
 ​
 如果存在要包含的字段的getter,则调用它而不是使用直接字段引用。可以抑制此行为:
 @ToString(doNotUseGetters = true)
 ​
 @ToString也可以用于枚举定义。
     
 ​

@NotBlank(message = "主键Id不能为空")

@NotNull:不能为null,但可以为empty(用于判断一个变量是否已初始化)

@NotEmpty:不能为null,而且长度必须大于0

@NotBlank:只能作用在String上,不能为null,而且调用trim()后(移除字符串两侧的空白字符或其他预定义字符),长度必须大于0 案例:

工作1

工作1

注意在使用@NotBlank等注解时,一定要和@valid一起使用,不然@NotBlank不起作用

工作1

3. Service(业务层)

3.1 增加、修改、查询、删除的抽象接口

 CommonResponse 
 /**
  * 通用响应父类的封装
  * 目的:封装响应的公共属性,例如响应编码等
  * @param <T>
  */
 CommonRequest
 /**
  * 通用请求父类的封装
  * 目的:封装请求的公共属性,例如模块名称等
  * @param <T>
  */

4.myBatis的Mapper

 public interface StuMapper {
 ​
 }

5.TK层(crud方法从这里继承)

 public interface StuMapperTk extends Mapper<Student> {
 }

6.StuSaveService

 @Service
 public class StuSaveService extends SingleTemplate<StuSaveRequest,Boolean> {
 ​
     @Autowired
     private StuMapperTk stuMapperTk;
 ​
     @Override
     protected Boolean callInner(CommonRequest<StuSaveRequest> request) throws Exception {
         StuSaveRequest stuSaveRequest=request.getRequest();
         Student student=new Student();
         BeanUtils.copyProperties(stuSaveRequest,student);
         int i = stuMapperTk.insertSelective(student);
         if (i>0){
             return true;
         }else {
             return false;
         }
     }
 }

7.StuServerImpl实现类

 @Slf4j
 @Service
 public class StuServerImpl implements StudyServer {
     @Autowired
     private StuSaveService stuSaveService;
 ​
     @Override
     public CommonResponse<Boolean> saveStu(CommonRequest<StuSaveRequest> request) {
         return stuSaveService.call(request);
     }
 ​
     @Override
     public CommonResponse<Boolean> modifyStu(CommonRequest<Student> request) {
         return null;
     }
 ​
     @Override
     public CommonResponse<Boolean> deleteStu(CommonRequest<Boolean> request) {
         return null;
     }
 ​
     @Override
     public CommonResponse<Boolean> findStu(CommonRequest<SkuStockModifyRequest>     request) {
         return null;
     }
 }

8. test方法

 @Slf4j
 public class StudyTest extends BaseTest {
 ​
     @Autowired
     private StudyServer studyServer;
 ​
     @Test
     public void saveSpuTest() {
         StuSaveRequest request = new StuSaveRequest();
         request.setId("2");
         request.setName("hwm");
         request.setNum("2016131335");
         request.setPrice(new BigDecimal(4500.00));
         request.setCreateTime(new Date());
 ​
         BaseTest.request.setRequest(request);
 ​
         CommonResponse<Boolean> response = studyServer.saveStu(BaseTest.request);
         log.info(response.toString());
     }
 ​
 ​
     @Override
     public void fullMockInner() {
 ​
     }
 ​
     @Override
     public void initRequestInner() {
 ​
     }
 }

相关文章:

  • 2021-09-06
  • 2022-12-23
  • 2021-11-03
  • 2021-12-06
  • 2021-04-14
  • 2021-09-27
  • 2022-01-18
  • 2022-12-23
猜你喜欢
  • 2021-08-09
  • 2021-12-06
  • 2021-12-16
  • 2021-11-30
  • 2021-11-21
  • 2022-01-15
相关资源
相似解决方案