1. swagger知識點補充 1.1. 概述 1. 在swagger的使用過程中,除了網上常見的例子,還會有很多細節上的東西需要註意和改寫,這裡我列幾點我使用過程中遇到的問題和改進方式 1.2. 知識點 1.2.1. 模型例子 1. 我們在進行POST的請求的時候,尤其是增加一條數據,我們往往會有 ...
1. swagger知識點補充
1.1. 概述
- 在swagger的使用過程中,除了網上常見的例子,還會有很多細節上的東西需要註意和改寫,這裡我列幾點我使用過程中遇到的問題和改進方式
1.2. 知識點
1.2.1. 模型例子
- 我們在進行POST的請求的時候,尤其是增加一條數據,我們往往會有很多欄位是不需要我們手動填寫的,比如邏輯刪除,創建時間,修改時間等等,我的需求就是再swagger界面的Example中不顯示這些欄位
- 實現方式
1.2.2. 判空
- 如上圖所示,這不是swagger知識點,這裡順帶講下,需要在controller層入參加上
@Vaild
- 輸入參數有誤,效果如下
1.2.3. controller層中文字標註
- 效果如下,網上的例子大多沒有設該屬性
- 實現方式
1.2.4. 模型填充預設值
- 如下例子:swagger打開該介面的預設配置就是
example
配的
1.2.5. 激活測試dev模式
- 再補充個非swagger的知識點,激活dev模式,在測試時比較好用
@RunWith(SpringRunner.class)
@SpringBootTest
@ActiveProfiles("dev")
@Slf4j
public class FundApplicationTests {
@Test
public void contextLoads() {
log.info("adafdafds");
}
}
1.2.6. schedule的cron定時任務
- 再補充個,定時任務的要求有時候可能覺得一個cron滿足不了,不要執著於怎麼寫cron了,註解時可以註多個的
@Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Repeatable(Schedules.class)
public @interface Scheduled {
@Repeatable
註解就是表明瞭這個註解可以重覆註
1.2.7. transient和@TableField(select = false)
- 雖然前面有講到過,這裡在重覆聲明一次,連我也覺得容易忘記,屬性用
transient
修飾,在配合jackson或fastjson的fj.setSerializerFeatures(SerializerFeature.SkipTransientField)
配置,表示對controller層做切麵,返回數據的json序列化會去掉該欄位;而@TableField(select = false)
註解的屬性欄位,表示用mybatis的sql查詢,預設查全量欄位時,該欄位不查詢 - 邏輯刪除欄位,添加
transient
會導致邏輯刪除模式失效
1.2.8. 邏輯刪除
- 前面也講到過邏輯刪除的功能,它除了可以使得我們用
deleteById
這樣的操作變成邏輯刪除,還可以使除了自定義語句的查詢預設加上邏輯刪除=未刪除的條件,也就是說,像下列這樣的查詢操作,預設會加上del_flag=0
,我們無需再多寫這個欄位的條件
User user = this.baseMapper.selectOne(Wrappers.<User>lambdaQuery().
select(User::getUsername, User::getSex, User::getNickName).eq(User::getUserId, userId));