Springdata JPA(2.0.6版本)中相似但不同的東西的方法,findById和getOne,findOneById

findById、getOne和findOneById的區別

代碼示例

@GetMapping("/getOne")
	public ResultBean getOne(Long id) {
		return ResultBean.ok(stu2Service.getOne(id));
	}
@GetMapping("/findById")
	public ResultBean findById(Long id) {
		return ResultBean.ok(stu2Service.findById(id));
	}
@GetMapping("/findOneById")
	public ResultBean findOneById(Long id) {
		return ResultBean.ok(stu2Service.findOneById(id));
	}

總結 不同點

  1. 返回對象不同
public Optional<T> findById(ID id);	返回的是Optional對象,通過.get()可獲取到對象
public T getOne(ID id);	不是直接返回的對象,但此方法可以獲取對象的相關屬性值
Stu2 findOneById(Long id);	根據命名規則中自定義實現,可直接返回到對象
  1. 對空值異常的處理不同,此處模擬的是如果Id在數據庫中不存在時的異常
findById
        	No value present] with root cause
 getOne
 	Unable to find com.aust.first.entity.Stu2 with id 20
 findOneById,沒有異常出現
  1. SQL語句不同
		findById
        	SELECT
	stu2x0_.id_ AS id_1_1_0_,
	stu2x0_.admission_time AS admissio2_1_0_,
	stu2x0_.age_ AS age_3_1_0_,
	stu2x0_.created_by AS created_4_1_0_,
	stu2x0_.hobbies_ AS hobbies_5_1_0_,
	stu2x0_.name_ AS name_6_1_0_,
	stu2x0_.phone_ AS phone_7_1_0_,
	stu2x0_.sid_ AS sid_8_1_0_,
	stu2x0_.summary_ AS summary_9_1_0_
FROM
	ls_stu2 stu2x0_
WHERE
	stu2x0_.id_ =?
 		getOne        	
SELECT
	stu2x0_.id_ AS id_1_1_0_,
	stu2x0_.admission_time AS admissio2_1_0_,
	stu2x0_.age_ AS age_3_1_0_,
	stu2x0_.created_by AS created_4_1_0_,
	stu2x0_.hobbies_ AS hobbies_5_1_0_,
	stu2x0_.name_ AS name_6_1_0_,
	stu2x0_.phone_ AS phone_7_1_0_,
	stu2x0_.sid_ AS sid_8_1_0_,
	stu2x0_.summary_ AS summary_9_1_0_
FROM
	ls_stu2 stu2x0_
WHERE
	stu2x0_.id_ =?
 		findOneById        	
SELECT
	stu2x0_.id_ AS id_1_1_,
	stu2x0_.admission_time AS admissio2_1_,
	stu2x0_.age_ AS age_3_1_,
	stu2x0_.created_by AS created_4_1_,
	stu2x0_.hobbies_ AS hobbies_5_1_,
	stu2x0_.name_ AS name_6_1_,
	stu2x0_.phone_ AS phone_7_1_,
	stu2x0_.sid_ AS sid_8_1_,
	stu2x0_.summary_ AS summary_9_1_
FROM
	ls_stu2 stu2x0_
WHERE
	stu2x0_.id_ =?

不是很高大上的東西,自己的學習記錄而已……

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章