Mybatis 高級用法和tk.mybatis使用示例詳解
使用@SelectProvider、@InsertProvider、@UpdateProvider、@DeleteProvider
MyBatis 3.x
版本提供了以下4
個(gè)CRUD
的高級注解。
@SelectProvider
:用于構(gòu)建動(dòng)態(tài)查詢SQL
。
@InsertProvider
:用于構(gòu)建動(dòng)態(tài)新增SQL
。
@UpdateProvider
:用于構(gòu)建動(dòng)態(tài)更新SQL
。
@DeleteProvider
:用于構(gòu)建動(dòng)態(tài)刪除SQL
。
@SelectProvider
@Documented @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) @Repeatable(SelectProvider.List.class) public @interface SelectProvider { // 用于指定獲取 sql 語句的指定類 Class<?> type(); // 指定類中要執(zhí)行獲取 sql 語句的方法 String method(); }
使用例子
@Mapper public interface TkUserMapper extends BaseMapper<TkUser> { @SelectProvider(type = TkUserMapperProvider.class, method = "selectById") List<TkUser> selectById(@Param("id") String id); class TkUserMapperProvider { public String selectById(@Param("id") String id) { SQL sql = new SQL(); sql.SELECT("*"); sql.FROM("TEST_USER"); return sql.toString(); } } }
tk.mybatis
tkmybatis
是對底層 sql
進(jìn)行了抽象封裝,不需要考慮 sql
怎么寫,只需要按照邏輯思維,遵循 tkmybatis
的語法即可實(shí)現(xiàn)數(shù)據(jù)庫操作。
引入依賴
<!-- mybatis 通用 mapper --> <!-- https://mvnrepository.com/artifact/tk.mybatis/mapper-spring-boot-starter --> <dependency> <groupId>tk.mybatis</groupId> <artifactId>mapper-spring-boot-starter</artifactId> <version>4.3.0</version> </dependency>
查詢實(shí)現(xiàn)
實(shí)體映射類
建立實(shí)體類用@Table
注解標(biāo)注映射表名稱注意字段表名稱大小寫問題。
@Table(name = "USER") public class TkUser { private int id; private String username; private String password; private int gender; private int age; private int idcard; private int phone; // get set 省略 }
實(shí)體類規(guī)范
- 表名默認(rèn)使用類名,駝峰轉(zhuǎn)下劃線(只對大寫字母進(jìn)行處理),如
UserInfo
默認(rèn)對應(yīng)的表名為user_info
。 - 表名可以使用
@Table(name = “tableName”)
進(jìn)行指定,對不符合第一條默認(rèn)規(guī)則的可以通過這種方式指定表名。 - 字段默認(rèn)和
@Column
一樣,都會作為表字段,表字段默認(rèn)為Java對象的Field名字駝峰轉(zhuǎn)下劃線形式。 - 可以使用
@Column(name = “fieldName”)
指定不符合第3條規(guī)則的字段名。 - 使用
@Transient
注解可以忽略字段,添加該注解的字段不會作為表字段使用。 - 建議一定是有一個(gè)
@Id
注解作為主鍵的字段,可以有多個(gè)@Id
注解的字段作為聯(lián)合主鍵。
dao層
單表操作,只需要繼承 tk.mybatis
下的 Mapper
接口即可使用
@Mapper public interface TkUserMapper extends BaseMapper<TkUser> { @SelectProvider(type = TkUserMapperProvider.class, method = "selectById") List<TkUser> selectById(@Param("id") String id); class TkUserMapperProvider { public String selectById(@Param("id") String id) { SQL sql = new SQL(); sql.SELECT("*"); sql.FROM("TEST_USER"); return sql.toString(); } } }
調(diào)用dao
@Autowired private TkUserMapper tkUserMapper; @Override public void test1() { String id = "1"; List<TkUser> tkUserList = tkUserMapper.selectById(id); log.info("test"); }
到此這篇關(guān)于Mybatis 高級用法和tk.mybatis使用的文章就介紹到這了,更多相關(guān)Mybatis tk.mybatis使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
常用數(shù)字簽名算法RSA與DSA的Java程序內(nèi)實(shí)現(xiàn)示例
這篇文章主要介紹了常用數(shù)字簽名算法RSA與DSA的Java程序內(nèi)實(shí)現(xiàn)示例,一般來說DSA算法用于簽名的效率會比RSA要快,需要的朋友可以參考下2016-04-04SpringSecurity?Web權(quán)限方案實(shí)現(xiàn)全過程
Spring Security是一個(gè)功能強(qiáng)大且高度可定制的身份驗(yàn)證和授權(quán)框架,專門用于保護(hù)Java應(yīng)用程序的Web集成,下面這篇文章主要給大家介紹了關(guān)于SpringSecurity?Web權(quán)限方案實(shí)現(xiàn)的相關(guān)資料,需要的朋友可以參考下2024-01-01java監(jiān)聽器的實(shí)現(xiàn)和原理詳解
這篇文章主要給大家介紹了關(guān)于java監(jiān)聽器實(shí)現(xiàn)和原理的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用java具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08SpringBoot創(chuàng)建定時(shí)任務(wù)的示例詳解
在Spring Boot中創(chuàng)建定時(shí)任務(wù),通常使用@Scheduled注解,這是Spring框架提供的一個(gè)功能,允許你按照固定的頻率(如每天、每小時(shí)、每分鐘等)執(zhí)行某個(gè)方法,本文給大家介紹了SpringBoot創(chuàng)建定時(shí)任務(wù)的示例,需要的朋友可以參考下2024-04-04