實體類常用注解
@Data
@Data 是一個 Lombok 提供的注解,使用 @Data 注解可以簡化代碼,使代碼更加簡潔易讀。
- 作用:自動為類生成常用的方法,包括 getter、setter、equals、hashCode 和 toString 等
- 需要加Lombok的依賴
<dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.4</version><scope>provided</scope>
</dependency>
@ApiModel
@ApiModel注解是用在接口相關的實體類上的注解,它主要是用來,常常和@ApiModelProperty注解配合使用
- 作用:對使用該注解的接口相關的實體類添加額外的描述信息,作用在類上
- value:對所需要特別說明的接口相關實體類進行描述,默認值就是實體類的名稱
- description:對所需要特別說明的接口相關實體類進行較長的描述
- 參考博客
- @ApiModel注解與@ApiModelProperty注解
@ApiModel(value="User對象", description="用戶表")
public class User implements Serializable {
@ApiModelProperty
- 作用:添加和操作屬性模塊的數據
-value:為此屬性的簡要描述(數據庫內給當前字段的備注是什么在value內就填什么) - 參考博客
- @ApiModelProperty注解的用法(官方平臺推薦文章)
@ApiModelProperty(value = "主鍵id")
@TableId
- 作用:將屬性所對應的字段指定為主鍵
- value:指定主鍵的字段,要和數據庫表中的屬性名一致,要不然最終的查詢結果是null
- type:設置主鍵生成策略,不指定的話默認雪花算法 (數據庫勾選自動遞增)
- 雪花算法的核心思想就是:使用一個64 bit的 long 型的數字作為全局唯一ID。算法中還引入了時間戳,基本上保證了自增特性。
- 參考博客
- Mybatis-plus知識總結(一)TableId、TableField和TableName注解的作用
- MYBatis-Plus常用注解@TableName、@TableId、@TableField、@TableLogic
@TableId(value = "id", type = IdType.AUTO)private Long id;
@TableName
- 作用:設置實體類對應的表明
- value:value指定數據庫中的表名
- 參考博客
- Mybatis-plus知識總結(一)TableId、TableField和TableName注解的作用
@TableName("user")
@NotBlank
- 作用:參數校驗,適用于 String 類型的數據上,加了@NotBlank 注解的參數不能為 Null 且 trim() 之后 size > 0,必須有實際字符
- message :自定義異常信息
- 參考博客
- @NotNull @NotEmpty @NotBlank java校驗注解 validation
@ApiModelProperty(value = "用戶名")@NotBlank(message = "用戶名不能為空")private String username;
@JsonFormat
Jackson中定義的一個注解,是一個時間格式化注解,寫在屬性上
- 作用:把DATE類型的數據轉化成為我們想要的格式(用于返回日期數據時的時間格式化)
- pattern:自定義轉化時間格式
- 參考博客
- SpringBoot - @JsonFormat注解詳解
<!-- JSON工具類 -->
<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.12.6</version>
</dependency>
@ApiModelProperty(value = "出生年月日")@JsonFormat(pattern="yyyy-MM-dd")private Date birthday;
@TableField
- 作用:解決實體類的字段名與數據庫中的字段名不匹配的問題
- value:指定數據庫表中字段名
@ApiModelProperty(value = "邏輯刪除")@TableField("`delete`")private Integer delete;
@TableLogic
- 作用:在實體類中屬性加上@TableLogic注解,表示該字段是邏輯刪除字段,實現邏輯刪除
- value = “未刪除的值,默認值為0”
@ApiModelProperty(value = "邏輯刪除")@TableLogic@TableField("`delete`")private Integer delete;
Dao層
@Repository
- 作用:將 DAO 類聲明為 Bean,表明這個類具有對數據庫CRUD的功能,用在持久層的接口上
- 參考博客
- @Repository注解的作用和用法,以及和@Mapper的區別
@Mapper
- 作用:相當于一個mapper.xml文件,將接口生成一個動態代理類
- 目的:不再寫mapper映射文件
- 參考博客
- Mapper層注解講解
@Param
- 作用:標記方法參數,指定該參數的名稱和類型,在使用該參數時可以通過名稱來引用。
- Constants.WRAPPER:表明參數是wrapper條件
- 參考博客
- @Param詳解
List<WarnVo> selectWarn(@Param(Constants.WRAPPER) QueryWrapper<WarnVo> wrapper);
Service層
@Service
- 作用:標記服務層 Bean
- 好處:使用Service注解的服務類為其他組件提供了一種復用業務邏輯的方法,能夠減少重復代碼的編寫
- 參考博客
- Spring注解之Service詳解
@Autowired
- 作用:對類成員變量、方法及構造函數進行標注,完成自動裝配的工作
- required參數默認是true,開啟自動裝配
- 參考博客
- @Autowired用法詳解
- @Autowired和@Resource注解區別
- 1、@autowired注解由spring提供,只按照bytype注入;@resource注解由j2ee提供,默認按照byname自動注入。
- 2、@autowired默認按類型進行裝配,@resource默認按照名稱進行裝配。
@Override
- 作用:表示被標注的方法是一個重寫方法
- 好處:幫助自己檢查是否正確的重寫父類方法,明顯的提示看代碼的人,這是重寫的方法
- 參考博客
- 詳解@Override注解
@Transactional
- 作用:事物的注解,保證數據的一致性
- 聲明式事務:將具體業務與事務處理部分解耦,代碼侵入性很低
- 在對多張表進行操作的時候加上事務注解
- 參考博客
- @Transactional詳解
Controller層
@RestController
@RestController = @Controller + @ResponseBody
- 作用:對控制器類進行注釋,同時擁有@Controller + @ResponseBody注解的功能
- 使用該注解響應數據可以是文本或JSON數據類型
- 屬于springmvc,并不屬于springboot
- 參考博客
- @RestController注解
@RequestMapping
- 作用:處理請求地址映射,可用于映射一個請求或一個方法,可以用在類或方法上
- 標注在方法上,表示在類的父路徑下追加方法上注解中的地址將會訪問到
- 參考博客
- @RequestMapping詳解
@RequestMapping("/tain/warn")
public class TainWarnController {@Autowiredprivate ITainWarnService iTainWarnService;@Autowiredprivate SysDictService sysDictService;@Autowiredprivate IDeviceService iDeviceService;@GetMapping("/queryWarnMessage")public R queryWarnMessage(@RequestParam Map<String,Object> params){PageUtils page = iTainWarnService.queryWarnPage(params);return R.ok().put("page",page);}
}
此時訪問路徑就要加上/tain/warn/queryWarnMessage
RESTFUL URL
RESTful是一種web api的標準,也就是一種url設計規范
@GetMapping(“路徑”)
- 作用:從服務器取出資源(一項或多項)
- 當客戶端發送HTTP GET請求時,Spring Boot會自動將請求映射到具有相應URL路徑的控制器方法上
- 參考博客
- Spring Boot中的@GetMapping注解,如何使用
@PostMapping(“路徑”)
- 作用:在服務器新建一個資源
- 自動轉換為 JSON 或 XML:@PostMapping 注解可以自動將請求體中的數據轉換為 Java 對象,并將返回值轉換為 JSON 或 XML 格式,方便客戶端解析處理
- 參考博客
- Spring Boot 中的 @PostMapping 注解,如何使用
@PutMapping(“路徑”)
- 作用:在服務器更新資源(客戶端提供完整資源數據)
- 不常用,僅作了解
@DeleteMapping(“路徑”)
- 作用:從服務器刪除資源
- 不常用,僅作了解
@RequestParam
- 作用:將請求參數區域的數據映射到控制層方法的參數上
- 三大屬性
- value:請求參數名(必須配置)
- required:是否必需,默認為 true,即 請求中必須包含該參數,如果沒有包含,將會拋出異常(可選配置)
- defaultValue:設置默認值,如果設置了該值,required 將自動設為 false,無論你是否配置了required,配置了什么值,都是 false(可選配置)
- 參考博客
- @RequestParam詳解
@PathVariable
- 作用:便捷地提取URL中的動態參數
- 只支持一個屬性value,類型是為String,代表綁定的屬性名稱
- 在@RequestMapping請求路徑中,將需要傳遞的參數用花括號{}括起來,然后,通過@PathVariable(“參數名稱”)獲取URL中對應的參數值。如果@PathVariable標明參數名稱,則參數名稱必須和URL中參數名稱一致
- 參考博客
- 請求參數獲取:@RequestParam、@PathVariable、@RequestHeader、@CookieValue、@RequestBody、@RequestAttribute注解詳細分析
@GetMapping("/info/{id}")public R info(@PathVariable("id") Long id){User user = iUserService.getById(id);return R.ok().put("user",user);}
@SysLog
- 作用:標記方法或類,以記錄系統日志或操作日志
- 可以在目標方法或類上添加注解,并在需要記錄日志的操作處調用相應的日志記錄邏輯
@ResponseBody
- 作用:將java對象轉為json格式的數據,然后直接寫入HTTP response 的body中;一般在異步獲取數據時使用
- 參考博客
- @ResponseBody用法詳解
- 淺析@ResponseBody注解作用和原理
非三層架構層
@Component
- 作用:實現bean的注入,取代 xml配置文件
- 用于非三層架構但是需要被使用的層
@EnableScheduling
- 作用:啟用 Spring 的定時任務
@Scheduled
- 作用:指定執行的時間間隔或時間點
- fixedRate:指定時間間隔
- cron:使用表達式來決定時間點
- 在線Cron表達式生成器
- 參考博客
- 每天一個注解之@EnableScheduling
@Scheduled(fixedRate = 5000) // 每隔5秒執行一次public void doTask() {
@Scheduled(cron = "5 * * * * ? ")//每五秒執行一次public void doTask(){
二者皆可
@SpringBootApplication
@SpringBootApplication這個注解是springboot啟動類上的一個注解,是一個組合注解,也就是由其他注解組合起來,它的主要作用就是標記說明這個類是springboot的主配置類,springboot可以運行這個類里面的main()方法來啟動程序
這個注解主要由三個子注解組成:
- @SpringBootConfiguration
- @EnableAutoConfiguration
- @ComponentScan
以上是本人在做一個小項目時遇到的所有注解,如有不對評論指出改正,謝謝`(∩_∩)′