Java SSM框架常用的注解含义和作用

一、注解:

1.@Compoent

将当前类交给IOC容器管理,成为IOC容器对象中的Bean对象

2.@Aspect

当前类不在是普通类,而是一个AOP类,切面类

3.@Retention(RetentionPolicy.RUNTIME)

用来指定该注解什么时候生效; (RetentionPolicy.RUNTIME) :运行的时候生效

4.@Target(ElementType.METHOD)

指定当前直接作用在类上还是方法上;(ElementType.METHOD) :在方法上生效

5.@Slf4j

操作日志(log)

6.@Around()

环绕通知方法的返回值为:Object;()里面为切入点表达式,可以基于注解的方式来匹配切入点方法: (“@annotation(“(自定义注解的全类名)com.dragon.anno.Log”)”) : 匹配的是方法上加有@Log注解的方法

7.@Transactional

可以写在接口类,接口方法,实现类和实现类方法上,写在谁的上面谁的(接口实现类的)方法就会有事务,建议写在实现类和实现的方法上。

里面有rollbackFor属性@Tranctional(rollbackFor = {IOException.class}),添加默认没有的异常类型

8.@RequstMapping

  • 类型:方法注解

  • 位置:SpringMVC控制器方法定义上方

  • 作用:设置当前控制器方法请求访问路径,如果设置在类上统一设置当前控制器方法请求访问路径前缀

  • 属性:

    • value (默认) :请求访问路径,或访问路径前缀

    • method:http请求动作,标准动作(GET/POST/PUT/DELETE)

     //请求路径映射
     @RequestMapping("/save")
     @ResponseBody
     public String save(){
         System.out.println("user save ...");
         return "{'module':'user save'}";
     }

9.@RequestParam

  • 类型:形参注解

  • 位置:SpringMVC控制器方法形参定义前面

  • 作用:绑定请求参数与处理器方法形参间的关系

  • 参数

    • required: 是否为必传参数

    • defaultValue: 参数默认值

普通参数:请求参数名与形参变量名不同,使用@RequestParam绑定参数关系

 //普通参数:请求参数名与形参名不同时,使用@RequestParam注解关联请求参数名称与形参名称之间的关系
 @RequestMapping("/commonParamDifferentName")
 @ResponseBody
 public String commonParamDifferentName(@RequestParam("name") String userName , int age){
     System.out.println("普通参数传递 userName ==> "+userName);
     System.out.println("普通参数传递 age ==> "+age);
     return "{'module':'common param different name'}";
 }

10.@RequestBody

  • 类型:形参注解

  • 位置:SpringMvc控制器方法形参定义前面

  • 作用:将请求中请求体所包含的数据传递给请求参数,此注解一个处理器方法只能使用一次

  • 使用@RequestBody注解将外部传递的json数组数据映射到形参的集合对象\实体类\形参的保存实体类对象的集合对象中作为数据

     //2.使用@RequestBody注解将外部传递的json数组数据映射到形参的保存实体类对象的集合对象中,要求属性名称一一对应
     @RequestMapping("/listPojoParamForJson")
     @ResponseBody
     public String listPojoParamForJson(@RequestBody List<User> list){
         System.out.println("list pojo(json)参数传递 list ==> "+list);
         return "{'module':'list pojo for json param'}";
     }
  • 类型:方法注解

  • 位置:SpringMvc控制器方法定义上方

  • 作用:设置当前控制器返回值作为响应体

     //响应POJO对象
     //返回值为实体类对象,设置返回值为实体类类型,即可实现返回对应对象的json数据,需要依赖@ResponseBody注解和@EnableWebMvc注解
     @RequestMapping("/toJsonPOJO")
     @ResponseBody
     public User toJsonPOJO(){
         System.out.println("返回json对象数据");
         User user = new User();
         user.setName("itcast");
         user.setAge(15);
         return user;
     }

11.@EnableWebMvc

  • 类型:配置类注解

  • 作用:开启SpringMvc多项辅助功能

  • 位置:SpringMvc配置类定义上方

     @Configuration
     @ComponentScan("com.dragon.controller")
     //开启json数据类型自动转换
     @EnableWebMvc
     public class SpringMvcConfig {
     }

12.@DateTimeFormat

  • 类型:形参注解

  • 位置::SpringMVC控制器方法形参前面

  • 作用:设定日期时间型数据格式

  • 属性:pattern:日期时间格式字符串

日期类型数据基于系统不同格式也不尽相同

  • 2023-09-28

  • 2023/09/28

  • 09/28/2023

 //日期参数
 //使用@DateTimeFormat注解设置日期类型数据格式,默认格式yyyy/MM/dd
 @RequestMapping("/dataParam")
 @ResponseBody
 public String dataParam(Date date,
                         @DateTimeFormat(pattern="yyyy-MM-dd") Date date1,
                         @DateTimeFormat(pattern="yyyy/MM/dd HH:mm:ss") Date date2){
     System.out.println("参数传递 date ==> "+date);
     System.out.println("参数传递 date1(yyyy-MM-dd) ==> "+date1);
     System.out.println("参数传递 date2(yyyy/MM/dd HH:mm:ss) ==> "+date2);
     return "{'module':'data param'}";
 }

13.@PathVariable

  • 类型:形参注解

  • 位置:SpringMVC控制器方法形参定义前面

  • 作用:绑定路径参数与处理器方法形参间的关系,要求路径参数名与形参名一一对应

     //设置当前请求方法为DELETE,表示REST风格中的删除操作
     //@PathVariable注解用于设置路径变量(路径参数),要求路径上设置对应的占位符,并且占位符名称与方法形参名称相同
     @RequestMapping(value = "/users/{id}",method = RequestMethod.DELETE)
     @ResponseBody
     public String delete(@PathVariable Integer id){
         System.out.println("user delete..." + id);
         return "{'module':'user delete'}";
     }

14.@RestController

  • 类型:类注解

  • 位置:基于SpringMVC的RESTful开发控制器类定义上方

  • 作用:设置当前控制器类为RESTful风格,等同于@Controller与@ResponseBody两个注解组合功能

15.@GetMapping @PostMapping @PutMapping @DeleteMapping

  • 类型:方法注解

  • 位置:基于SpringMVC的RESTful开发控制器方法定义上方

  • 作用:设置当前控制器方法请求访问路径与请求动作,每种对应一个请求动作,例如@GetMapping对应GET请求

  • 相关属性:value(默认):请求访问路径

16.@RestControllerAdvice

名称@RestControllerAdvice
类型类注解
位置Rest风格开发的控制器增强类定义上方
作用为Rest风格开发的控制器类做增强
  • 此注解自带@ResponseBody注解与@Component注解,具备对应的功能

 //@RestControllerAdvice用于标识当前类为REST风格对应的异常处理器
 @RestControllerAdvice
 public class ProjectExceptionAdvice {
     //除了自定义的异常处理器,保留对Exception类型的异常处理,用于处理非预期的异常
     @ExceptionHandler(Exception.class)
     public Result doException(Exception ex){
         System.out.println("嘿嘿,异常你哪里跑!")
         return new Result(666,null,"嘿嘿,异常你哪里跑!");
     }
 }

17.@ExceptionHandler

名称@ExceptionHandler
类型方法注解
位置专用于异常处理的控制器方法上方
作用设置指定异常的处理方案,功能等同于控制器方法,出现异常后终止原始控制器执行,并转入当前方法执行
  • 此类方法可以根据处理的异常不同,制作多个方法分别处理对应的异常

 //@RestControllerAdvice用于标识当前类为REST风格对应的异常处理器
 @RestControllerAdvice
 public class ProjectExceptionAdvice {
     //除了自定义的异常处理器,保留对Exception类型的异常处理,用于处理非预期的异常
     @ExceptionHandler(Exception.class)
     public Result doException(Exception ex){
         System.out.println("嘿嘿,异常你哪里跑!")
         return new Result(666,null,"嘿嘿,异常你哪里跑!");
     }
 }

18.@TableField

名称@TableField
类型属性注解
位置模型类属性定义上方
作用设置当前属性对应的数据表中的字段关系
  • 相关属性

    • value (默认):设置数据库表字段名称

    • exist:设置属性在数据库字段中是否存在,默认为true。此属性无法与value合并使用

    • select:设置属性是否参与查询,此属性与select()映射配置不冲突

 @Data
 @TableName("db01.tbl_book")
 public class Book {
         @TableField(value = "pwd",select = false)
         private String password;
         @TableField(exist = false)
         private Integer online;

19.@TableName

名称@TableName
类型类注解
位置模型类定义上方
作用设置当前类对应于数据库表的关系
  • 相关属性

    • value:设置数据库表名

 @Data
 @TableName("db01.tbl_book")
 public class Book {
         @TableField(value = "pwd",select = false)
         private String password;
         @TableField(exist = false)
         private Integer online;

20.@TableId

名称@TableId
类型属性注解
位置模型类中用于表示主键的属性的定义上方
作用设置当前类中主键属性的生成策略
  • 相关属性

    • value:设置数据库主键名称

    • type:设置主键属性的生成策略,值参照IdType枚举值

 /**
  * 设置主键生成策略
  */
 @TableId(type = IdType.INPUT)
 private Long id;

21.@TableLogic

名称@TableLogic
类型属性注解
位置模型类中用于表示删除字段的属性定义上方
作用标识该字段为进行逻辑删除的字段
相关属性value:逻辑未删除值 delval:逻辑删除值
  • 第一种:直接注释

     /**
      * 逻辑删除字段,标记当前记录是否被删除
      */
     @TableLogic(value = "0",delval = "1")
     private Integer deleted;
  • 第二种:配置文件

    • 如果每个表都要有逻辑删除,那么就需要在每个模型类的属性上添加@TableLogic注解,如何优化?

      在配置文件中添加全局配置,如下:

       mybatis-plus:
         global-config:
           db-config:
             # 逻辑删除字段名
             logic-delete-field: deleted
             # 逻辑删除字面值:未删除为0
             logic-not-delete-value: 0
             # 逻辑删除字面值:删除为1
             logic-delete-value: 1

    介绍完逻辑删除,逻辑删除的本质为:

    逻辑删除的本质其实是修改操作。如果加了逻辑删除字段,查询数据时也会自动带上逻辑删除字段。

    执行的SQL语句为:

    UPDATE tbl_user SET deleted=1 where id = ? AND deleted=0

22.@Version

名称@Version
类型属性注解
位置模型类中用于表示乐观锁的属性定义上方
作用标识该字段为进行实现乐观锁的字段
 /**
  * 实现乐观锁
  */
 @Version
 private Integer version;

23.@AllArgsConstructor & @NoArgsConstructor

生成有参和无参的构造方法

24.@Builder

构建器

1)在Dish类加上@Builder注解,并用@Data提供相关的方法

 @Data
 @Builder
 @NoArgsConstructor
 @AllArgsConstructor
 public class Dish implements Serializable {
 ​
     private static final long serialVersionUID = 1L;
 ​
     private Long id;
 ​
     //菜品名称
     private String name;
 ​
     //菜品分类id
     private Long categoryId;

2)直接创建Dish对象,调用builder()+属性+调用build()方法即可创建具有指定属性的Dish对象。

 Dish dish = Dish.builder()
         .categoryId(categoryId)
         .status(StatusConstant.ENABLE)
         .build();
  • 15
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值