使用tk.mybatis快速開發curd

lee_lgw發表於2021-09-09

使用mybatis已經是可以快速開發程式了,對於單表的curd似乎是一種可抽象的結果,下面介紹tk.mybatis的使用方式。

maven引用

<dependency>
	<groupId>tk.mybatis</groupId>
	<artifactId>mapper-spring-boot-starter</artifactId>
	<version>1.2.4</version>
</dependency>

我使用的是這個版本,所以相關功能介紹也是這個版本。

使用where條件

當使用查詢條件的時候,我們可以使用mybatis的方式寫sql來解決,很多情況下,寫sql並不是一個特別簡單的情況,尤其是欄位多的時候,需要針對每個欄位進行判斷是否為空等等,寫起來是相當的多。
tk.mybatis提供了一套api,可以幫助我們省去很多操作。

        Example example = new Example(xxx.class);
        Example.Criteria criteria = example.createCriteria();

首先需要建立example和criteria。Example的引數是對應表的類。criteria才是我們關注的物件,他有豐富的條件。
例如且等於

      criteria.andEqualTo("filed", test);

例如或等於

	
	criteria.orEqualTo("filed", test);

例如大於和小於

	criteria.andGreaterThan("filed", test);
	criteria.andLessThan("filed", test);

還有一些我們常見的操作
in操作和between操作

	criteria.andIn("filed", test);
	criteria.andBetween("filed", test, test1);

透過以上的方法,我們基本已經可以滿足對單表的條件比對操作了。

排序操作

排序操作設計的比較奇特,並不在criteria裡,而是在example裡。

       example.setOrderByClause("xxx desc");

排序的sql語句就寫在setOrderByClause中就可以了。
無論是增刪改查,呼叫的都是ByExample的方法。

坑點

  • 我們在插入和查詢的時候都會使用物件來作為條件,但是如果物件裡有null值,那麼其實他不是我們想插入的欄位,我們只想插入非null的。tk.mybatis預設沒有對insert等方法做處理,而是單獨開闢了一個insertSelective的方法。這個剛開始使用特別不舒服,一般都是insert包含了過濾,但是沒有需要專門使用insertSelective。其他的方法也型別。

  • 使用查詢條件的時候,使用的是物件的欄位名,而不是表的列名。這個剛開始很容易抓混,不知道應該使用哪個。

criteria.orEqualTo("filed", test);
  • 當查詢條件特別多的時候,請寫sql。條件特別多的時候寫程式碼特別容易抓混,而且由於條件特別多,不需要的部分太多了,例如criteria.andGreaterThan。這些最後都會成為干擾項,這種情況寫sql是清晰的方式。
 	criteria.andGreaterThan("filed1", test);
	criteria.andLessThan("filed2", test);
	criteria.andGreaterThan("filed3", test);
	criteria.andLessThan("filed4", test);
	criteria.andGreaterThan("filed5", test);
	criteria.andLessThan("filed6", test);
	criteria.andGreaterThan("filed7", test);
	criteria.andLessThan("filed8", test);
	criteria.andGreaterThan("filed9", test);
	criteria.andLessThan("filed0", test);

  • 沒有連表操作,這算是他的一個功能不足的情況,我們可以使用mybatis的連表操作,但是他確實不是一個好的寫法。這裡也建議直接寫sql。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1020/viewspace-2822419/,如需轉載,請註明出處,否則將追究法律責任。

相關文章