1. 程式人生 > >淺談Mybatis通用Mapper使用方法

淺談Mybatis通用Mapper使用方法

對單表進行增刪改查是專案中不可避免的需求,Mybatis的通用Mapper外掛使這些操作變得簡單

新增maven依賴

在對應工程的pom.xml檔案中新增

<dependency>
    <groupId>javax.persistence</groupId>
    <artifactId>persistence-api</artifactId>
    <version>1.0</version>
</dependency>
<dependency>
    <groupId>tk.mybatis</groupId
>
<artifactId>mapper</artifactId> <version>3.1.2</version> </dependency>

配置攔截器

在mybatis-config.xml檔案中新增通用Mapper

<plugin interceptor="tk.mybatis.mapper.mapperhelper.MapperInterceptor">
    <!--================================================-->
    <!--可配置引數說明(一般無需修改)-->
<!--================================================--> <!--UUID生成策略--> <!--配置UUID生成策略需要使用OGNL表示式--> <!--預設值32位長度:@[email protected]().toString().replace("-", "")--> <!--<property name="UUID" value="@[email protected]().toString()"/>-->
<!--主鍵自增回寫方法,預設值MYSQL,詳細說明請看文件--> <property name="IDENTITY" value="HSQLDB"/> <!--序列的獲取規則,使用{num}格式化引數,預設值為{0}.nextval,針對Oracle--> <!--可選引數一共3個,對應0,1,2,分別為SequenceName,ColumnName,PropertyName--> <property name="seqFormat" value="{0}.nextval"/> <!--主鍵自增回寫方法執行順序,預設AFTER,可選值為(BEFORE|AFTER)--> <!--<property name="ORDER" value="AFTER"/>--> <!--通用Mapper介面,多個通用介面用逗號隔開--> <property name="mappers" value="tk.mybatis.mapper.common.Mapper"/> </plugin>

繼承通用Mapper<T>,必須指定泛型<T>

public interface ClubMapper extends Mapper<TClub>
{

}

繼承了Mapper<T>之後,就擁有了Mapper中的各種通用方法,具體可以檢視原始碼

泛型(表物件實體類)<T>要求

實體類需要按照如下規則和資料庫表進行轉換,註解全部是JPA中的註解,所以我們在maven中添加了它的jar包依賴

  • 表名預設使用類名,駝峰轉下劃線,如UserInfo預設對應的表名為user_info
  • 表名可以使用@Table(name = "tableName")進行指定,對不符合第一條預設規則的可以通過這種方式指定表名
  • 欄位預設和@Column一樣,都會作為表字段,表字段預設為Java物件的Field名字駝峰轉下劃線形式
  • 可以使用@Column(name = "fieldName")指定不符合第3條規則的欄位名
  • 使用@Transient註解可以忽略欄位,新增該註解的欄位不會作為表字段使用
  • 建議一定是有一個@Id註解作為主鍵的欄位,可以有多個@Id註解的欄位作為聯合主鍵
  • 預設情況下,實體類中如果不存在包含@Id註解的欄位,所有的欄位都會作為主鍵欄位進行使用(這種效率極低)
  • 實體類可以繼承使用
  • 由於基本型別,如int作為實體類欄位時會有預設值0,而且無法消除,所以實體類中建議不要使用基本型別

Mapper還提供了主鍵自增的方式

@Id
@GeneratedValue(generator = "JDBC")
@Column(name = "id")
private Integer id;

新增Mapper配置

將繼承的Mapper介面新增到mybatis-config.xml檔案中

<mappers>
    <mapper class="com.ind4.iss.icp.dao.logic.map.mapper.club.clubMapper" />
</mappers>

具體使用

public List<TClub> queryList() throws CcpException
{
    SqlSession sqlSession = CcpDB.getInstance().getSession();

    try
    {
        ClubMapper mapper = getMapper(sqlSession);
        TClub tClub = new TClub();
        return mapper.select(tClub);
    }
    catch (Exception e)
    {
        CcpLogger.getInstance().error(e, "TClubDAO.queryList, status=" + status);
        throw new CcpException(CcpErrorCode.ERROR_CLUB_DAO_DB_ERROR, e);
    }
    finally
    {
        CcpDB.getInstance().closeSession();
    }
}

private ClubMapper getMapper(SqlSession sqlSession)
{
    return sqlSession.getMapper(ClubMapper.class);
}

相關推薦

Mybatis通用Mapper使用方法

對單表進行增刪改查是專案中不可避免的需求,Mybatis的通用Mapper外掛使這些操作變得簡單新增maven依賴在對應工程的pom.xml檔案中新增<dependency> <groupId>javax.persistence</groupId> <

Mybatis通用Mapper使用方法說明, 裡面有開源的原始碼地址(to 李琳老師)

Mybatis通用Mapper 極其方便的使用Mybatis單表的增刪改查 優點? 不客氣的說,使用這個通用Mapper甚至能改變你對Mybatis單表基礎操作不方便的想法,使用它你能簡單的使用單表的增刪改查,包含動態的增刪改查. 程式使用攔截器實現具

mybatis通用mapper方法解析

Mapper的內建方法model層就是實體類,對應資料庫的表。controller層是Servlet,主要是負責業務模組流程的控制,呼叫service介面的方法,在struts2就是Action。Service層主要做邏輯判斷,Dao層是資料訪問層,與資料庫進行對接。至於M

Mybatis通用mapper之insertList方法

記錄一個通用mapper的一個小坑,MySQLMapper的insertList方法中傳入list時,這個Entity的主鍵必須為自增主鍵,否則他在執行sql是不會去插入主鍵,自然就會報一些奇怪的錯誤了,比如DB2的-407

Mybatis通用Mapper

mybatis 選擇 pla all 必須 fork bean code 長度 極其方便的使用Mybatis單表的增刪改查 項目地址:http://git.oschina.net/free/Mapper 優點? 不客氣的說,使用這個通用Mapper甚至

Mybatis中的 ${ } 和 #{ }的區別

mybatis sql註入 語句 nbsp 之前 com pre 預編譯 sql 語句 一、舉例說明 1 select * from user where name = "dato"; 2 3 select * from user where name = #

Mybatis通用Mapper(轉)

transient 項目 同時 你在 但是 擁有 32位 sele spa 轉自:http://blog.csdn.net/isea533/article/details/41457529 極其方便的使用Mybatis單表的增刪改查 項目地址:http://git.

js的sort()方法

blog pos 最終 後者 ray 轉換 多條件 pre ole 如果調用該方法時沒有使用參數,將按字母順序對數組中的元素進行排序,說得更精確點,是按照字符編碼(字符串Unicode碼點)的順序進行排序。要實現這一點,首先應把數組的元素都轉換成字符串(如有必要),以便進行

mybatis連接原理

屬於 完成 string vat 動態 template ger 滿足 apt 眾所周知數據庫連接的過程,但是最近面試的人(菜面菜),都說用的SSM框架,但是我問了一下,mybatis是怎麽連接上mysql的,基本上都會說:配置好的,直接用了,今天我來拋磚引玉

mybatis通用mapper源碼解析(二)

bool emp nts content new type() als append column 1.javabean的屬性值生成sql /** * 獲取所有查詢列,如id,name,code... * * @param entityC

mybatis通用mapper動態查詢表名

module turn 返回值 實體類 public 實體 bsp 實現接口 class 1:給個@Table註解,給個默認的表名,不寫也可以,但是要駝峰轉下劃線匹配 @Table(name = "conf_default") 2:添加非表字段參數,用於接受動態

js的join()方法

ima asc mage mas text image bubuko ava 技術 簡單描述:今天看同事的代碼,看js的時候,看到了一個join()方法,我從來都沒有用過,就查了查,第一次用就記錄一下 正經的: 定義和用法 join() 方法用於把數組中的所有元素放入一個字

Python進階(十二)-python中的方法

分享一下我的偶像大神的人工智慧教程!http://blog.csdn.net/jiangjunshow 也歡迎轉載我的文章,轉載請註明出處 https://blog.csdn.net/mm2zzyzzp Python進階(十二)-淺談python中的方法

mybatis通用mapper的Example查詢

    mybatis的通用mapper,多用於單表查詢,介面內部為我們提供了單表查詢的基礎查詢語法,可以極大地幫助我們簡化程式設計。 接下來讓我們動手試一試: 我建的是springboot專案: 先導依賴: <dependency> <

Mybatis通用Mapper的使用

一、前言 使用Mybatis的開發者,大多數都會遇到一個問題,就是要寫大量的SQL在xml檔案中,除了特殊的業務邏輯SQL之外,還有大量結構類似的增刪改查SQL。而且,當資料庫表結構改動時,對應的所有SQL以及實體類都需要更改。這工作量和效率的影響或許就是區別增刪改查程式設計師和真正程式

hashcode()和equals()方法

Java Object 類中存在hashcode()方法以及equals方法 public native int hashCode(); public boolean equals(Object obj) {     return (this == obj); }

SSM專案使用Mybatis通用mapper外掛tk.mybatis的用法

Mybatis 與 Hibernate的一個很大的區別就是Mybatis所有的資料庫操作語句都需要自己寫,對於簡單的單表操作來說是比較煩瑣的。因此有人就開發了tk.mybatis外掛,通過這個外掛,你可以省略許多簡單的單表資料庫操作語句而直接呼叫相對應的dao方

spring boot整合mybatis通用mapper實現Druid多資料來源

      在以前的專案中用springMVC加原生的mybatis框架使用過多資料來源的配置,是用xml配置的。在這次的新專案裡面使用到了tk的通用mapper,剛好專案結束,利用空閒時間寫了個全註解的多資料來源配置小demo

springboot 配置mybatis通用mapper

宣告: 此處為springboot 配置mybatis的通用mapper方 一共步其他多餘操作不要有 1新增mapper依賴 一定要有以下依賴的jar包 注意jar包版本,太高會導致功能不可用 <!-- Spring Boot Mybatis 依賴 --&

MyBatis通用Mapper與分頁PageHelper混淆報錯問題

背景 當同時引入通用Mapper與PageHelper兩款外掛的時候,會存在報錯的可能。 如果像這樣,先執行通用Mapper,再執行分頁外掛就會出錯 <!-- 通用Mapper外掛 -->