restful API批量新增List內部物件必傳引數驗證
阿新 • • 發佈:2020-12-23
controller層程式碼
@ApiOperation(value = "圖層資料-批量新增 @author Tarzan Liu") @PostMapping("layer/addBatch") public ResponseDTO<List<LayerAddBackVO>> addBatch(@RequestBody @Valid ValidList<LayerDTO> data) { return layerService.addBatch(data); }
LayerDTO物件
import io.swagger.annotations.ApiModelProperty; import lombok.Data; import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotNull; @Data public class LayerDTO { @ApiModelProperty("圖層ID") private Long id; @ApiModelProperty("煤礦圖id") @NotNull(message = "煤礦圖id不為空") private Long drawingId; @ApiModelProperty("圖層分類id") @NotNull(message = "圖層分類id不為空") private Long layerTypeId; @ApiModelProperty("圖層唯一標識(識別dwg檔案圖層是否同一個圖層)") private String code; @ApiModelProperty("圖層名稱") @NotBlank(message = "圖層名稱不為空") private String layerName; @ApiModelProperty("線形") private String lineType; @ApiModelProperty("顏色") private Integer color; @ApiModelProperty("列印樣式") private String plotStyle; @ApiModelProperty("是否凍結") private Integer isFrozen; @ApiModelProperty("是否鎖定") private Integer isLocked; @ApiModelProperty("是否關閉") private Integer isOff; @ApiModelProperty("是否有PLOT表") private Integer isPlotTable; @ApiModelProperty("線形重量") private Integer lineWeight; @ApiModelProperty("顯示倍數") private Long showMultiple; @ApiModelProperty("版本號") private String version; @ApiModelProperty("生效狀態(0:未生效;1:生效)") private Integer effectStatus; @ApiModelProperty("版本批次(標記版本批次,一般給第一個版本id)") private String versionBatch; @ApiModelProperty("專題圖和圖層關係是否繫結") private Boolean bindFlag = false; @ApiModelProperty("專題圖和圖層關係表id") private Long mapTypeId; @ApiModelProperty("是否入庫") private Boolean isExist; }
ValidList 包裝類
import javax.validation.Valid; import java.util.*; /** * 可被校驗的List * @description * @author tarzan Liu * @version 1.0.0 * @date 2020/9/29 */ public class ValidList<E> implements List<E> { @Valid private List<E> list; public ValidList() { this.list = new ArrayList<>(); } public ValidList(List<E> list) { this.list = list; } public List<E> getList() { return list; } public void setList(List<E> list) { this.list = list; } //重寫List方法,可省略 @Override public int size() { return list.size(); } @Override public boolean isEmpty() { return list.isEmpty(); } @Override public boolean contains(Object o) { return list.contains(o); } @Override public Iterator<E> iterator() { return list.iterator(); } @Override public Object[] toArray() { return list.toArray(); } @Override public <T> T[] toArray(T[] a) { return list.toArray(a); } @Override public boolean add(E e) { return list.add(e); } @Override public boolean remove(Object o) { return list.remove(o); } @Override public boolean containsAll(Collection<?> c) { return list.contains(c); } @Override public boolean addAll(Collection<? extends E> c) { return list.addAll(c); } @Override public boolean addAll(int index, Collection<? extends E> c) { return list.addAll(index, c); } @Override public boolean removeAll(Collection<?> c) { return list.removeAll(c); } @Override public boolean retainAll(Collection<?> c) { return list.retainAll(c); } @Override public void clear() { list.clear(); } @Override public E get(int index) { return list.get(index); } @Override public E set(int index, E element) { return list.set(index, element); } @Override public void add(int index, E element) { list.add(index, element); } @Override public E remove(int index) { return list.remove(index); } @Override public int indexOf(Object o) { return list.indexOf(o); } @Override public int lastIndexOf(Object o) { return list.lastIndexOf(o); } @Override public ListIterator<E> listIterator() { return list.listIterator(); } @Override public ListIterator<E> listIterator(int index) { return list.listIterator(index); } @Override public List<E> subList(int fromIndex, int toIndex) { return list.subList(fromIndex, toIndex); } }
小夥伴們學會了嗎?程式碼從未如此簡單!!!