Bootstrap

项目中常用的注解

一、DAO层

@Data

应用场景:实体类不用手动添加get set 方法 。

导入

IDEA中需要添加Lombok插件

@NoArgsConstructor: 自动生成无参数构造函数。 
@AllArgsConstructor: 自动生成全参数构造函数。

 

二、MAPPER层

@Mapper

KoneLogsMapper文件中使用,标志该文件是mapper文件

@Select 和@SelectProvider的区别


@Select 后直接写SQL语句

@Select("SELECT * FROM ***_logs WHERE cardtype=#{cardType} AND cardid=#{cardId} AND " +
        "NOT isdeleted ORDER BY date,fromtime ")

@SelectProvider后引用文件

@SelectProvider(type = ******Provider.class, method = "selectParam")
KoneLogsData findById(@Param("id") Integer id);

@Options注解,两个作用:可以为对象生成自增的key;能够设置缓存时间

场景(1)插入数据应用场景

    @InsertProvider(type = *****Provider.class method = "insert")
    @Options(useGeneratedKeys = true ,keyProperty="id",keyColumn="id" )
    Integer insertLogs(*****Data ****sData);

log 表中有一个id 自增长主键,为了在插入数据后自动获取到该主键值,设置@Optionos属性userGeneratedKeys的值为true,并指定对象中主键的属性名keyProperty以及在数据库中的字段名keyColumn。这样在日志数据插入后,id 属性会自动赋值。

Tips:@Options注解中默认设置的主键对应的字段名为id,如果你实体类中的属性名为id,可以省略后面的keyProperty和keyColumn。如下图

    @InsertProvider(type = ****Provider.class, method = "insert")
    @Options(useGeneratedKeys = true)
    Integer insertLogs(****gsData ****sData);

场景(2)查询数据应用场景

@SelectProvider (type=****rovider.class,method = "selectParam")
@Options (userCache =true,flushCache =Options.FlushCachePolicy.FALSE,timeout =10000)
****gsData findById(@Param("id") Integer id);

@Options 配合 查询语句使用,useCache = true表示将会缓存本次查询结果,以提高下次查询速度;flushCache = Options.FlushCachePolicy.FALSE表示查询时不刷新缓存;timeout = 10000表示查询结果缓存10000秒。

 

三、Service层

@Service

标志该层是Service 文件

@Autowired

自动导入相应文件

@ExceptionCatcher("添加日志失败!")

异常提示语抛出,也可以通过

        if (workTime > 720) {
            throw new PassException("您今日已工作xxx小时,无法添加新的记录!");
        }

 

 四、Controller层

@ApiIgnore

项目继承了查看测试接口的swagger,@ApiIgnore是为了让注解忽略这个API

@Controller和@RestController的区别

@RestController注解相当于@ResponseBody + @Controller合在一起的作用。

1) 如果只是使用@RestController注解Controller,则Controller中的方法无法返回jsp页面,或者html,配置的视图解析器 InternalResourceViewResolver不起作用,返回的内容就是Return 里的内容。

2) 如果需要返回到指定页面,则需要用 @Controller配合视图解析器InternalResourceViewResolver才行。
    如果需要返回JSON,XML或自定义mediaType内容到页面,则需要在对应的方法上加上@ResponseBody注解。

@RequestBody与@RequestParam的区别

@RequestBody主要用来接受前端传递给后端的json字符串中的数据(请求体中的数据);GET方式无请求体,所以使用@RequestBody接受数据时,前端不能使用GET方式提交数据,而是要用POST方式进行提交。在后端的同一个接收方法里,@RequestBody与@RequestParam()可以同时使用,@RequestBody最多只能有一个,而@RequestParam()可以有多个。

注:如果参数前写了@RequestParam(xxx),那么前端必须有对应的xxx名字才行(不管其是否有值,当然可以通
       过设置该注解的required属性来调节是否必须传),如果没有xxx名的话,那么请求会出错,报400。

@PostMapping("addLog")

Post方式接受请求体,

@GetMapping("deleteLog")

Get方式接受参数

 

五、应用启动层

@MapperScan (springBoot 启动文件中使用这个注解扫描Mapper文件)

@MapperScan(basePackages = "com.****e.dao")

@EnableScheduling

spring自带的定时任务功能@EnableScheduling

@Component and @ComponentScan 的区别

@Component 和 @ComponentScan的使用目的不一样 在某个类上使用@Component注解,表明当需要创建类时,这个被注解的类是一个候选类。就像是举手。

@ComponentScan 用于扫描指定包下的类。就像看都有哪些举手了。

@SpringBootApplication

该源码内包含了@ComponentScan,@EnableAutoConfiguration,@SpringBootConfiguration

@EnableAutoConfiguration,这个注解的作用与@Configuration作用相同,都是用来声明当前类是一个配置类.

@EnableAutoConfiguration是springboot实现自动化配置的核心注解,通过这个注解把spring应用所需的bean注入容器中.

;