最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mybatis 高級(jí)用法和tk.mybatis使用示例詳解

 更新時(shí)間:2024年05月28日 15:03:26   作者:全棧程序員  
tkmybatis 是對(duì)底層 sql 進(jìn)行了抽象封裝,不需要考慮 sql 怎么寫(xiě),只需要按照邏輯思維,遵循 tkmybatis 的語(yǔ)法即可實(shí)現(xiàn)數(shù)據(jù)庫(kù)操作,這篇文章主要介紹了Mybatis 高級(jí)用法和tk.mybatis使用,需要的朋友可以參考下

使用@SelectProvider、@InsertProvider、@UpdateProvider、@DeleteProvider

MyBatis 3.x 版本提供了以下4個(gè)CRUD的高級(jí)注解。

@SelectProvider:用于構(gòu)建動(dòng)態(tài)查詢(xún)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 語(yǔ)句的指定類(lèi)
    Class<?> type();
    // 指定類(lèi)中要執(zhí)行獲取 sql 語(yǔ)句的方法
    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 是對(duì)底層 sql 進(jìn)行了抽象封裝,不需要考慮 sql 怎么寫(xiě),只需要按照邏輯思維,遵循 tkmybatis 的語(yǔ)法即可實(shí)現(xiàn)數(shù)據(jù)庫(kù)操作。

引入依賴(lài)

<!-- 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>

查詢(xún)實(shí)現(xiàn)

實(shí)體映射類(lèi)

建立實(shí)體類(lèi)用@Table注解標(biāo)注映射表名稱(chēng)注意字段表名稱(chēng)大小寫(xiě)問(wèn)題。

@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í)體類(lèi)規(guī)范

  • 表名默認(rèn)使用類(lèi)名,駝峰轉(zhuǎn)下劃線(xiàn)(只對(duì)大寫(xiě)字母進(jìn)行處理),如UserInfo默認(rèn)對(duì)應(yīng)的表名為user_info。
  • 表名可以使用@Table(name = “tableName”)進(jìn)行指定,對(duì)不符合第一條默認(rèn)規(guī)則的可以通過(guò)這種方式指定表名。
  • 字段默認(rèn)和@Column一樣,都會(huì)作為表字段,表字段默認(rèn)為Java對(duì)象的Field名字駝峰轉(zhuǎn)下劃線(xiàn)形式。
  • 可以使用@Column(name = “fieldName”)指定不符合第3條規(guī)則的字段名。
  • 使用@Transient注解可以忽略字段,添加該注解的字段不會(huì)作為表字段使用。
  • 建議一定是有一個(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 高級(jí)用法和tk.mybatis使用的文章就介紹到這了,更多相關(guān)Mybatis tk.mybatis使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 聊聊Redis的單線(xiàn)程模型

    聊聊Redis的單線(xiàn)程模型

    Redis是單線(xiàn)程,主要是指Redis的網(wǎng)絡(luò)IO和讀寫(xiě)是由一個(gè)線(xiàn)程來(lái)完成的,但Redis的其他功能,比如持久化、異步刪除、集群數(shù)據(jù)同步等,其實(shí)是由額外的線(xiàn)程執(zhí)行的。這不是本文討論的重點(diǎn),有個(gè)印象即可
    2022-12-12
  • 簡(jiǎn)單了解java類(lèi)的初始化以及類(lèi)的實(shí)例化

    簡(jiǎn)單了解java類(lèi)的初始化以及類(lèi)的實(shí)例化

    這篇文章主要介紹了簡(jiǎn)單了解java類(lèi)的初始化以及類(lèi)的實(shí)例化,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • SpringBoot監(jiān)聽(tīng)Redis Key過(guò)期事件的幾種方式

    SpringBoot監(jiān)聽(tīng)Redis Key過(guò)期事件的幾種方式

    本文介紹了使用Redis監(jiān)聽(tīng)鍵過(guò)期來(lái)實(shí)現(xiàn)電商平臺(tái)優(yōu)惠券自動(dòng)失效的解決方案,包括配置Redis、實(shí)現(xiàn)監(jiān)聽(tīng)器、使用線(xiàn)程池優(yōu)化以及進(jìn)一步優(yōu)化措施,需要的朋友可以參考下
    2026-03-03
  • SpringBoot基于RabbitMQ實(shí)現(xiàn)消息可靠性的方法

    SpringBoot基于RabbitMQ實(shí)現(xiàn)消息可靠性的方法

    RabbitMQ 提供了 publisher confirm 機(jī)制來(lái)避免消息發(fā)送到 MQ 過(guò)程中丟失,這種機(jī)制必須給每個(gè)消息指定一個(gè)唯一ID,消息發(fā)送到MQ以后,會(huì)返回一個(gè)結(jié)果給發(fā)送者,表示消息是否處理成功,本文給大家介紹了SpringBoot基于RabbitMQ實(shí)現(xiàn)消息可靠性的方法,需要的朋友可以參考下
    2024-04-04
  • Springboot 如何實(shí)現(xiàn)filter攔截token驗(yàn)證和跨域

    Springboot 如何實(shí)現(xiàn)filter攔截token驗(yàn)證和跨域

    這篇文章主要介紹了Springboot 如何實(shí)現(xiàn)filter攔截token驗(yàn)證和跨域操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • SpringBoot使用@Validated處理校驗(yàn)的方法步驟

    SpringBoot使用@Validated處理校驗(yàn)的方法步驟

    @Validated?注解的主要目的是啟用和利用?Spring?的驗(yàn)證框架,它可以用于類(lèi)上也可以用于方法參數(shù)上,本文給大家介紹了SpringBoot使用@Validated優(yōu)雅的處理校驗(yàn)的方法步驟,通過(guò)代碼示例介紹的非常詳細(xì),需要的朋友可以參考下
    2024-08-08
  • Red?Hat?安裝JDK與IntelliJ?IDEA的詳細(xì)過(guò)程

    Red?Hat?安裝JDK與IntelliJ?IDEA的詳細(xì)過(guò)程

    YUM是基于Red Hat的Linux發(fā)行版的一個(gè)強(qiáng)大而用戶(hù)友好的包管理工具,這篇文章主要介紹了Red?Hat安裝JDK與IntelliJ IDEA,需要的朋友可以參考下
    2023-08-08
  • @TableField(typeHandler = FastjsonTypeHandler.class)使用及說(shuō)明

    @TableField(typeHandler = FastjsonTypeHandler.clas

    文章總結(jié)個(gè)人前端上傳經(jīng)驗(yàn),提出了一些優(yōu)化上傳方法的建議,旨在提高上傳效率和用戶(hù)體驗(yàn),希望能為開(kāi)發(fā)者提供參考
    2026-04-04
  • SpringBoot整合Shiro兩種方式(總結(jié))

    SpringBoot整合Shiro兩種方式(總結(jié))

    這篇文章主要介紹了SpringBoot整合Shiro兩種方式,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • SpringBoot中內(nèi)置的49個(gè)常用工具類(lèi)使用

    SpringBoot中內(nèi)置的49個(gè)常用工具類(lèi)使用

    SpringBoot以其強(qiáng)大的自動(dòng)配置和豐富的生態(tài)系統(tǒng)成為Java開(kāi)發(fā)的首選框架,本文將介紹49個(gè)常用工具類(lèi),并通過(guò)簡(jiǎn)潔的代碼示例展示它們的基本用法,希望對(duì)大家有一定的幫助
    2025-04-04

最新評(píng)論

林西县| 循化| 雷州市| 南召县| 上思县| 定日县| 永靖县| 阿荣旗| 手游| 大姚县| 崇文区| 财经| 大连市| 哈巴河县| 朝阳市| 吕梁市| 水富县| 望都县| 武山县| SHOW| 塔城市| 文化| 云安县| 西华县| 长阳| 玛纳斯县| 敦煌市| 江门市| 唐山市| 班玛县| 通化市| 清镇市| 山东省| 玉树县| 洮南市| 红安县| 玉溪市| 南木林县| 鹿邑县| 牟定县| 东城区|