實體類
@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