欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MyBatis映射器mapper快速入門教程

 更新時間:2022年09月27日 16:08:26   作者:搗蛋孩學編程  
使用mapper接口的方式,不用寫接口實現(xiàn)類,直接完成數據庫操作,簡單方便。使用mapper接口,采用的是面向接口編程的思想,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習吧

通用mapper簡介

通用 Mapper 是一個可以實現(xiàn)任意 MyBatis 通用方法的框架,項目提供了常規(guī)的增刪改查操作以及Example相關的單表操作,與mybatisplus相似,對mybatis制作增強不做修改。為什么要用通用mapper?我們這里列舉一下原生Mybatis的痛點:

1、mapper.xml文件里有大量的sql,當數據庫表字段變動,配置文件就要修改

2、需要自己實現(xiàn)sql分頁,select * from table where . . . limit 1,3

自己手寫分頁,除了傳參page、pageSize,還需要返回條目總數count。

3、數據庫可移植性差:如果項目更換數據庫,比如oracle-->mysql,mapper.xml中的

sql要重新寫,因為Oracle的PLSQL 和mysql 支持的函數是不同的。

4、生成的代碼量過大。

5、批量操作,批量插入,批量更新,需要自寫。而這些,通過通用mapper就可以很輕松的解決了。

通用mapper快速入門(文檔)

在線官方文檔:https://gitee.com/free/Mapper/wikis/Home

官方的文檔中介紹了通用mapper的三種使用方式 ,純java使用方式、與Spring集成方式、與SpringBoot集成方式。我們這里給大家介紹的是與Spring集成方式,其他方式可自行學習。

添加依賴

在開始配置前,先添加相關的依賴。

正常情況下,Spring 和 MyBatis 的集成環(huán)境中,應該已經存在下面的依賴:

<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis</artifactId>
  <version>版本號</version>
</dependency>
<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis-spring</artifactId>
  <version>版本號</version>
</dependency>
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-context</artifactId>
  <version>版本號</version>
</dependency>
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-tx</artifactId>
  <version>版本號</version>
</dependency>
<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-jdbc</artifactId>
  <version>版本號</version>
</dependency>

通用 Mapper 支持 MyBatis 3.2.4+

集成通用 Mapper 在上面的基礎上添加下面的依賴:

<dependency>
    <groupId>tk.mybatis</groupId>
    <artifactId>mapper</artifactId>
    <version>最新版本</version>
</dependency>

tk.mybatis:mapper 依賴包含了通用 Mapper 的基礎代碼以及和 Spring 集成必須的代碼

和Spring集成

和 Spring 進行集成時,分為 XML 和注解配置兩種方式,每種方式又有不同的配置方式。

這里提供了很多配置方式,使用時選擇一種改動最小的方式即可!

XML 配置

1.使用 MapperScannerConfigurer

和通用 Mapper 以前版本一樣,可以直接使用 tk.mybatis 提供的 tk.mybatis.spring.mapper.MapperScannerConfigurer 進行配置,這個配置和 MyBatis 官方提供的 org.mybatis.spring.mapper.MapperScannerConfigurer 區(qū)別只是第一層的包名,tkorg。所以使用這種方式時,如果你項目已經使用 org. 進行了配置,只需要改成 tk. 即可。

<bean class="tk.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="掃描包名"/>
</bean>

如果你需要對通用 Mapper 進行特殊配置,可以按下面的方式進行配置:

<bean class="tk.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="tk.mybatis.mapper.mapper"/>
    <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
    <property name="properties">
        <value>
            參數名=值
            參數名2=值2
            ...
        </value>
    </property>
</bean>

可用配置的參數請看后續(xù)的配置文檔,配置參數時一行寫一個值。

2.XML配置使用 Configuration

如果某些第三方也需要特殊的 MapperScannerConfigurer 時,就不能用上面的方式進行配置了,此時可以選擇下面這種方式,這種方式要求使用MyBatis (3.4.0+) 和 mybatis-spring (1.3.0+),配置方式如下:

<!--使用 Configuration 方式進行配置-->
<bean id="mybatisConfig" class="tk.mybatis.mapper.session.Configuration">
    <!-- 配置通用 Mapper,有三種屬性注入方式 -->
    <property name="mapperProperties">
        <value>
            notEmpty=true
        </value>
    </property>
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>
    <property name="configuration" ref="mybatisConfig"/>
</bean>
<!-- 不需要考慮下面這個,注意這里是 org 的 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="tk.mybatis.mapper.configuration"/>
    <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
</bean>

這里使用了 tk.mybatis.mapper.session.Configuration ,也就是不能通過讀取 mybatis-config.xml 進行配置,上面這種配置更直接,使用 Spring setter 配置屬性更方便。當需要配置通用 Mapper 時,使用 mapperProperties 屬性配置即可,配置方式和前面的相同,一行一個配置即可。

配置了一個 mybatisConfig 的 bean 后,在 SqlSessionFactoryBean 中注入即可。

后面的 MapperScannerConfigurer 只是為了說明這里不需要使用 tk. 開頭的類進行配置。

這種配置方式基本上和任何第三方都不會沖突,如果你遇到了第三方重寫 SqlSessionFactoryBean 的情況,就使用前一種方式配置即可。

實體類映射

@Table(name = "tb_brand")
public class Brand implements Serializable {
    @Id
    private Integer id;
    private String name;
    private String image;
    private String letter;
    private Integer seq;
    //getter and setter ....
}

@Table 是指定實體類對應的數據庫表 @Id 指的是主鍵映射。經過上面簡單的配置后,相 當于就有了 MyBatis 中的關系映射了

創(chuàng)建Mapper接口

public interface BrandMapper extends Mapper<Brand> {
}

這里繼承了 tk.mybatis.mapper.common.Mapper 接口,在接口上指定了泛型類 型 Brand 。當你繼承了 Mapper 接口后,此時就已經有了針對 Brand 的大量方法,方 法如下:

這些方法中和 MBG 生成的大部分方法都一致,還有一部分 MBG 之外的常用方法。 基礎接口 select

List<T> select(T record)

根據 T 對象中的屬性名稱查詢 , 類似于 select * from table where t.name=#{name} and t.password = #{password}

T selectOne(T record)

根據實體中的屬性進行查詢,只能有一個返回值,有多個結果是拋出異常,查詢條件使用等號

T selectByPrimaryKey(Object key)

根據主鍵查詢 說明:根據主鍵字段進行查詢,方法參數必須包含完整的主鍵屬性,查詢條 件使用等號

int selectCount(T record);

說明:根據實體中的屬性查詢總數,查詢條件使用等號

基礎接口 insert

int insert(T record);

說明:保存一個實體, null 的屬性也會保存,不會使用數據庫默認值

int insertSelective(T record);

說明:保存一個實體, null 的屬性不會保存,會使用數據庫默認值

基礎接口 Update

int updateByPrimaryKey(T record);

說明:根據主鍵更新實體全部字段, null 值會被更新

int updateByPrimaryKeySelective(T record);

說明:根據主鍵更新屬性不為 null 的值

基礎接口 delete

int delete(T record);

說明:根據實體屬性作為條件進行刪除,查詢條件使用等號

int deleteByPrimaryKey(Object key);

說明:根據主鍵字段進行刪除,方法參數必須包含完整的主鍵屬性

到此這篇關于MyBatis mapper快速入門教程的文章就介紹到這了,更多相關MyBatis mapper內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java面向對象的三大特征

    Java面向對象的三大特征

    這篇文章主要給大家結合相關示例介紹了Java面向對象的三大特征:封裝、繼承、多態(tài),非常的實用,有需要的小伙伴可以參考下。
    2015-06-06
  • 淺談Servlet開發(fā)技術基礎

    淺談Servlet開發(fā)技術基礎

    這篇文章主要介紹了淺談Servlet開發(fā)技術基礎,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • Java的Semaphore信號量使用及原理解析

    Java的Semaphore信號量使用及原理解析

    這篇文章主要介紹了Java的Semaphore信號量使用及原理解析,Semaphore 通常我們叫它信號量, 可以用來控制同時訪問特定資源的線程數量,通過協(xié)調各個線程,以保證合理的使用資源,需要的朋友可以參考下
    2023-12-12
  • Java中二維數組的正確使用方法介紹

    Java中二維數組的正確使用方法介紹

    Java中有一維數組,二維數組以及多維數組,在這篇文章中,將給大家詳細介紹一下如何正確使用Java中的二維數組,感興趣的小伙伴跟著小編一起學習吧
    2023-05-05
  • 分布式開發(fā)醫(yī)療掛號系統(tǒng)數據字典模塊前后端實現(xiàn)

    分布式開發(fā)醫(yī)療掛號系統(tǒng)數據字典模塊前后端實現(xiàn)

    這篇文章主要為大家介紹了分布式開發(fā)醫(yī)療掛號系統(tǒng)數據字典模塊前后端實現(xiàn),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-04-04
  • mybatis中<if>標簽bool值類型為false判斷方法

    mybatis中<if>標簽bool值類型為false判斷方法

    這篇文章主要給大家介紹了關于mybatis中<if>標簽bool值類型為false判斷方法,文中通過示例代碼介紹的非常詳細,對大家學習或者使用mybatis具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-08-08
  • java自定義切面增強方式(關于自定義注解aop)

    java自定義切面增強方式(關于自定義注解aop)

    這篇文章主要介紹了java自定義切面增強方式(關于自定義注解aop),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-04-04
  • Spring Cache整合Redis實現(xiàn)方法詳解

    Spring Cache整合Redis實現(xiàn)方法詳解

    這篇文章主要介紹了Spring Cache整合Redis實現(xiàn)方法詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-08-08
  • java對接支付寶支付接口簡單步驟記錄

    java對接支付寶支付接口簡單步驟記錄

    最近項目APP需要接入微信、支付寶支付功能,在分配開發(fā)任務時,聽說微信支付接口比支付寶支付接口要難實現(xiàn),這篇文章主要給大家介紹了關于java對接支付寶支付接口的簡單步驟,需要的朋友可以參考下
    2024-05-05
  • logback自定義日志與Nacos日志沖突問題

    logback自定義日志與Nacos日志沖突問題

    這篇文章主要介紹了logback自定義日志與Nacos日志沖突問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-04-04

最新評論