SpringBoot註解

zhegeMaw發表於2024-08-16

實體類

@Data:注在類上,提供類的get、set、equals、hashCode、canEqual、toString方法

@AllArgsConstructor 新增一個全參建構函式

@NoArgsConstructor 建立一個無參建構函式 建構函式:初始化物件,為物件成員變數賦初始值。 User a = new User();(無參初始化)

@Builder 建造者模式。簡單來說,就是一步步建立一個物件 https://www.jianshu.com/p/d08e255312f9

@SupperBuilder 繼承時,使子類可以獲取到父類的成員屬性進行builder構造 注意事項

Mapper層

註解方式配置mybatis對映,一般使用Mapper結合以下四種註解(不用配置mapper.xml檔案了)。

@Mapper 給介面自動生成一個實現類,由Mybatis建立並將其實現類物件儲存到spring容器中。 mybatis的註解 dao層

@Insert 返回值為插入資料庫的條數,可以用int(建議用int,避免null引起空指標)/Integer。

@Delete 返回值為刪除的資料條數

@Update 返回值為資料庫中匹配條數(不論最終是否對資料進行了修改,只要某條記錄符合匹配條件,返回值就加1),但是可以近似理解為更新的行數。

@Select

  • 查到一條記錄,直接返回查詢結果。 ⚠️必須指定返回值型別:常用型別/包裝類/自定義型別,不能返回Boolean型別(查到了返回true,沒查到返回null,會報錯)
  • 查到多條記錄,返回用List接收。 ⚠️Select透過selectone方法查詢,預設是返回一條記錄的,即查到多條記錄時會報錯。

@Options(useGeneratedKeys=true,keyProperty="id") 設定物件中自增主鍵"id"的值(insert一條記錄時,會返回該記錄的id,獲取時透過實體類的物件獲取),例如:

datasetMapper.insertDataset(dataset);
Integer datasetId = dataset.getId();

@SelectProvider註解詳解:@Select和@SelectProvider不能同時使用

@Param("name") String name 自定義引數名字。方法有多個引數時,給引數定義名字來代替順序下標0,1,2,3....的形式,否則資料庫找不到引數會報錯。

  • ✅無論你傳的引數是什麼樣的,最後mybtis都會將你傳入的轉換為map的。當我們要傳入多個引數時,直接給與map型別 / 多個引數分別傳入

@Results 用於在結果對映(Result Mapping)中定義多個 @Result 註解。它主要用於將 SQL 查詢結果對映到 Java 物件中,以實現從資料庫到物件之間的轉換。

@Result 修飾返回的結果集,關聯實體類屬性和資料庫欄位一一對應,如果實體類屬性和資料庫屬性名保持一致,就不需要這個屬性來修飾。

用法:https://blog.csdn.net/cherlshall/article/details/80950150

Service層

@Service 注在類上,標註業務層元件,將這個類交給Spring容器管理,spring容器為他建立物件(例項化)。

@Repository 持久層

@Controller 控制層

@Component是任何Spring管理元件的通用構造型,可以將類自動檢測並註冊為 Spring 應用上下文中的 Bean。

@Autowired註解

  • Spring提供的註解

  • 按型別裝配依賴物件,預設情況下它要求依賴物件必須存在,如果允許null值,可以設定它required屬性為false。如果我們想使用按照名稱(byName)來裝配,可以結合@Qualifier註解一起使用

@Resource註解

  • JDK提供的註解

  • 預設按名稱裝配。名稱可以透過@Resource的name屬性指定,如果沒有指定name屬性,當註解標註在欄位上,即預設取欄位的名稱作為bean名稱尋找依賴物件,當註解標註在屬性的setter方法上,即預設取屬性名作為bean名稱尋找依賴物件。

Controller層

@RestController 注在類上,@Controller和@ResponseBody註解的組合

  • 1. 有Controller的作用,定義一個控制器類
  • 2. 有ResponseBody作用,將此類下所有成員方法的返回結果轉換成json格式(入參不轉換)

@RequestMapping("/test")。 注在類/方法上,用於將 HTTP 請求對映到具體的處理方法上。

  • 可以用@RequestMapping(method=RequestMethod. GET/POST )對映對應型別的請求。 https://www.cnblogs.com/SpaceKiller/p/12312344.html
  • produces:指定返回內容的型別 (Content-Type),例如application/json, text/html;
  • consumes: 指定請求的提交內容型別

@GetMapping 將HTTP GET請求對映到特定處理程式方法

@PostMapping 將HTTP POST請求對映到特定處理程式方法

⚠️Restful風格時,知道需要的是哪種請求時,可以使用相應的Mapping比較好。

請求——獲取前端傳來http請求中的各類資訊(用在方法裡)

以下幾種註解是用來接收前端傳遞給後端的資料

@RequestHeader 獲取請求頭中的資料

@RequestBody 獲取請求體中的資料

  • 只能有一個,因為只有一個請求體
  • 前端的request header中accept型別為 Application/json ;
  • 不能用於GET請求中,因為沒有HttpEntity

@PathVariable("name") 獲取url中的資料(路徑引數

@RequestParam("name") String name 獲取查詢引數的值;

  • 可以有多個,每個分別接收 https://www.cnblogs.com/zhlblogs/p/9553491.html
  • 適用於GET、POST請求
  • value,請求引數的別名,如果不設定則會預設為引數名
  • required,是否必傳引數。預設為true
  • defaultValue,引數預設值,在請求引數未提供時設定一個預設值
  •     public String greet(@RequestParam(value = "name", required = false, defaultValue = "World") String name,
                            @RequestParam(value = "age", required = false, defaultValue = "0") int age) {}

響應——返回資料給前端(用在方法上)

@ResponseBody 將controller中方法的返回物件的格式轉換為json/XML,寫入到response物件的body區。

  • 可以用@RestController替代

Test類

透過@RunWith 和 @SpringBootTest啟動spring容器

@RunWith (SpringRunner.class) 就是一個執行器,讓測試執行於Spring測試環境。
@SpringBootTest (classes = {ApplicationLoader.class}) 載入ApplicationContext,啟動spring容器。

@Test 標明測試方法

配置類

@Configuration 注在類上,告訴Spring boot這是一個配置類

@Bean 注在方法上,一般標明返回的物件直接被Spring管理起來

  • @Bean("tom") 自定義元件名

其他

@PostConstruct 被註解的方法,在物件載入完所依賴的元件後才執行,並且只執行一次。

  • 通常一些初始化的類上會使用該註解

@Value("${sso.client.id}") 變數替換,把配置檔案的屬性讀進來

  • @Value("張三") 把常量注入到變數中

@Slf4j:使用@Slf4j以後,預設的Slf4j物件就是log,所以使用時候可以直接log.info()、log.error()……

@SuppressWarnings:對程式碼元素內部的某些警告保持靜默。

@SneakyThrows 自動捕獲並處理異常(使用的是騙過JVM的方式,並沒有處理?)

@Deprecated 廢棄(類/方法……)

參考資料

參考:MyBatis中Mapper的返回值型別(✅)

https://www.cnblogs.com/cc11001100/p/7811257.html

相關文章