DTO 實現 service 和 controller 之間值傳遞的操作

概念

DTO( Data Transfer Object):

數據傳輸對象,Service 或 Manager 向外傳輸的對象。

BO:business object 業務對象。主要作用是把業務邏輯封裝為一個對象。這個對象可以包括一個或多個其它的對象。比如一個簡歷,有教育經歷、工作經歷、社會關系等等。我們可以把教育經歷對應一個 PO,工作經歷對應一個 PO,社會關系對應一個 PO。建立一個對應簡歷的 BO 對象處理簡歷,每個 BO 包含這些 PO。這樣處理業務邏輯時,我們就可以針對 BO 去處理。

VO( View Object):

顯示層對象,通常是 Web 向模板渲染引擎層傳輸的對象。

POJO( Plain Ordinary Java Object):

在阿裡巴巴編程手冊中, POJO 專指隻有setter/getter/toString的簡單類,包括DO/DTO/BO/VO等。

DTO 實例代碼

/**
 * 封裝執行後結果
 */
public class PersonInfoExecution {
	// 結果狀態
	private int state;
	// 狀態標識
	private String stateInfo;
	// 店鋪數量
	private int count;
	// 操作的personInfo(增刪改店鋪的時候用)
	private PersonInfo personInfo;
	// 獲取的personInfo列表(查詢店鋪列表的時候用)
	private List<PersonInfo> personInfoList;
	public PersonInfoExecution() {
	}
	// 失敗的構造器
	public PersonInfoExecution(PersonInfoStateEnum stateEnum) {
		this.state = stateEnum.getState();
		this.stateInfo = stateEnum.getStateInfo();
	}
	// 成功的構造器
	public PersonInfoExecution(PersonInfoStateEnum stateEnum,
			PersonInfo personInfo) {
		this.state = stateEnum.getState();
		this.stateInfo = stateEnum.getStateInfo();
		this.personInfo = personInfo;
	}
	// 成功的構造器
	public PersonInfoExecution(PersonInfoStateEnum stateEnum,
			List<PersonInfo> personInfoList) {
		this.state = stateEnum.getState();
		this.stateInfo = stateEnum.getStateInfo();
		this.personInfoList = personInfoList;
	}
	
	//get set......
}

補充:springBoot框架中幾個層(dto、dao、service、controller)之間的關系

可以這樣理解:

controller層—–> service層(接口—>接口實現類) —–> dao層的.mapper文件 —–> 和mapper層裡的.xml文件對應

Model層 是數據層:

TableName是對數據表實體的映射;

Criteria傳輸前臺數據

DTO 傳輸類間數據

Mapper層 放置SQL查詢XML文件

Dao層 相當於XML文件的抽象類

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。如有錯誤或未考慮完全的地方,望不吝賜教。

推薦閱讀: