亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Mybatis 高級用法和tk.mybatis使用示例詳解

 更新時(shí)間:2024年05月28日 15:03:26   作者:全棧程序員  
tkmybatis 是對底層 sql 進(jìn)行了抽象封裝,不需要考慮 sql 怎么寫,只需要按照邏輯思維,遵循 tkmybatis 的語法即可實(shí)現(xiàn)數(shù)據(jù)庫操作,這篇文章主要介紹了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)文章

  • 深入淺出Java中的字節(jié)流和字符流詳解

    深入淺出Java中的字節(jié)流和字符流詳解

    Java 中的輸入輸出(I/O)流主要分為字節(jié)流和字符流,這兩類流為開發(fā)者提供了高效的文件讀寫方式,也解決了不同編碼格式下的字符處理問題,本文將帶你深入了解字節(jié)流和字符流的區(qū)別、應(yīng)用場景以及如何使用它們處理文件操作
    2024-12-12
  • 常用數(shù)字簽名算法RSA與DSA的Java程序內(nèi)實(shí)現(xiàn)示例

    常用數(shù)字簽名算法RSA與DSA的Java程序內(nèi)實(shí)現(xiàn)示例

    這篇文章主要介紹了常用數(shù)字簽名算法RSA與DSA的Java程序內(nèi)實(shí)現(xiàn)示例,一般來說DSA算法用于簽名的效率會比RSA要快,需要的朋友可以參考下
    2016-04-04
  • SpringSecurity?Web權(quán)限方案實(shí)現(xiàn)全過程

    SpringSecurity?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-01
  • Java中的繼承詳情

    Java中的繼承詳情

    這篇文章主要介紹了Java中的繼承詳情,繼承是面向?qū)ο笕筇卣髦?,可以使得子類具有父類的屬性和方法,還可以在子類中重新定義,以及追加屬性和方法,下文介紹需要的朋友可以參考下
    2022-04-04
  • SpringBoot部署SSL證書(JKS格式)

    SpringBoot部署SSL證書(JKS格式)

    文將介紹如何在Spring Boot應(yīng)用中部署SSL證書,以實(shí)現(xiàn)安全傳輸和保護(hù)數(shù)據(jù)隱私,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-10-10
  • Java????????HashMap遍歷方法匯總

    Java????????HashMap遍歷方法匯總

    這篇文章主要介紹了Java????????HashMap遍歷方法匯總,HashMap?的遍歷方法有很多種,不同的?JDK?版本有不同的寫法,下文關(guān)于其遍歷方法總結(jié)需要的小伙伴可以參考一下
    2022-05-05
  • java監(jiān)聽器的實(shí)現(xiàn)和原理詳解

    java監(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-08
  • SpringBoot創(chuàng)建定時(shí)任務(wù)的示例詳解

    SpringBoot創(chuàng)建定時(shí)任務(wù)的示例詳解

    在Spring Boot中創(chuàng)建定時(shí)任務(wù),通常使用@Scheduled注解,這是Spring框架提供的一個(gè)功能,允許你按照固定的頻率(如每天、每小時(shí)、每分鐘等)執(zhí)行某個(gè)方法,本文給大家介紹了SpringBoot創(chuàng)建定時(shí)任務(wù)的示例,需要的朋友可以參考下
    2024-04-04
  • Java二叉樹中LCA問題解決方法兩則

    Java二叉樹中LCA問題解決方法兩則

    這篇文章主要介紹了Java二叉樹中LCA問題解決方法,總的來說這并不是一道難題,那為什么要拿出這道題介紹?拿出這道題真正想要傳達(dá)的是解題的思路,以及不斷優(yōu)化探尋最優(yōu)解的過程。希望通過這道題能給你帶來一種解題優(yōu)化的思路
    2022-12-12
  • JAVA設(shè)計(jì)模式之解釋器模式詳解

    JAVA設(shè)計(jì)模式之解釋器模式詳解

    這篇文章主要介紹了JAVA設(shè)計(jì)模式之解釋器模式詳解,解釋器模式是類的行為模式,給定一個(gè)語言之后,解釋器模式可以定義出其文法的一種表示,并同時(shí)提供一個(gè)解釋器,需要的朋友可以參考下
    2015-04-04

最新評論