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

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

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

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

MyBatis 3.x 版本提供了以下4CRUD的高級注解。

@SelectProvider:用于構建動態(tài)查詢SQL

@InsertProvider:用于構建動態(tài)新增SQL。

@UpdateProvider:用于構建動態(tài)更新SQL。

@DeleteProvider:用于構建動態(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 進行了抽象封裝,不需要考慮 sql 怎么寫,只需要按照邏輯思維,遵循 tkmybatis 的語法即可實現(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>

查詢實現(xiàn)

實體映射類

建立實體類用@Table注解標注映射表名稱注意字段表名稱大小寫問題。

@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 省略
}

實體類規(guī)范

  • 表名默認使用類名,駝峰轉下劃線(只對大寫字母進行處理),如UserInfo默認對應的表名為user_info
  • 表名可以使用@Table(name = “tableName”)進行指定,對不符合第一條默認規(guī)則的可以通過這種方式指定表名。
  • 字段默認和@Column一樣,都會作為表字段,表字段默認為Java對象的Field名字駝峰轉下劃線形式。
  • 可以使用@Column(name = “fieldName”)指定不符合第3條規(guī)則的字段名。
  • 使用@Transient注解可以忽略字段,添加該注解的字段不會作為表字段使用。
  • 建議一定是有一個@Id注解作為主鍵的字段,可以有多個@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();
        }
    }
}

調用dao

@Autowired
private TkUserMapper tkUserMapper;
@Override
public void test1() {
    String id = "1";
    List<TkUser> tkUserList =  tkUserMapper.selectById(id);
    log.info("test");
}

到此這篇關于Mybatis 高級用法和tk.mybatis使用的文章就介紹到這了,更多相關Mybatis tk.mybatis使用內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 聊聊Redis的單線程模型

    聊聊Redis的單線程模型

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

    簡單了解java類的初始化以及類的實例化

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

    SpringBoot監(jiān)聽Redis Key過期事件的幾種方式

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

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

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

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

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

    SpringBoot使用@Validated處理校驗的方法步驟

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

    Red?Hat?安裝JDK與IntelliJ?IDEA的詳細過程

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

    @TableField(typeHandler = FastjsonTypeHandler.clas

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

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

    這篇文章主要介紹了SpringBoot整合Shiro兩種方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-06-06
  • SpringBoot中內置的49個常用工具類使用

    SpringBoot中內置的49個常用工具類使用

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

最新評論

迁安市| 禄劝| 资阳市| 涞源县| 滁州市| 比如县| 大同市| 鄂伦春自治旗| 疏勒县| 文安县| 界首市| 哈巴河县| 陕西省| 武穴市| 收藏| 古丈县| 开原市| 邢台县| 吉安市| 乌审旗| 三门峡市| 阿合奇县| 元阳县| 沙坪坝区| 常熟市| 溧水县| 全南县| 中山市| 灵宝市| 资中县| 靖西县| 桂平市| 安丘市| 清原| 印江| 龙游县| 浪卡子县| 徐水县| 若尔盖县| 交城县| 冕宁县|