Mybatis通用Mapper使用詳解

對單表進(jìn)行增刪改查是項(xiàng)目中不可避免的需求钥平,Mybatis的通用Mapper插件使這些操作變得簡單

添加maven依賴

在對應(yīng)工程的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">
    <!--================================================-->
    <!--可配置參數(shù)說明(一般無需修改)-->
    <!--================================================-->
    <!--UUID生成策略-->
    <!--配置UUID生成策略需要使用OGNL表達(dá)式-->
    <!--默認(rèn)值32位長度:@java.util.UUID@randomUUID().toString().replace("-", "")-->
    <!--<property name="UUID" value="@java.util.UUID@randomUUID().toString()"/>-->
    <!--主鍵自增回寫方法,默認(rèn)值MYSQL,詳細(xì)說明請看文檔-->
    <property name="IDENTITY" value="HSQLDB"/>
    <!--序列的獲取規(guī)則,使用{num}格式化參數(shù)点待,默認(rèn)值為{0}.nextval侍瑟,針對Oracle-->
    <!--可選參數(shù)一共3個(gè),對應(yīng)0,1,2,分別為SequenceName绞旅,ColumnName,PropertyName-->
    <property name="seqFormat" value="{0}.nextval"/>
    <!--主鍵自增回寫方法執(zhí)行順序,默認(rèn)AFTER,可選值為(BEFORE|AFTER)-->
    <!--<property name="ORDER" value="AFTER"/>-->
    <!--通用Mapper接口疼燥,多個(gè)通用接口用逗號(hào)隔開-->
    <property name="mappers" value="tk.mybatis.mapper.common.Mapper"/>
</plugin>

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

public interface ClubMapper extends Mapper<TClub>
{

}

繼承了Mapper<T>之后,就擁有了Mapper中的各種通用方法遭居,具體可以查看源碼

泛型(表對象實(shí)體類)<T>要求

實(shí)體類需要按照如下規(guī)則和數(shù)據(jù)庫表進(jìn)行轉(zhuǎn)換蛾扇,注解全部是JPA中的注解,所以我們在maven中添加了它的jar包依賴

  • 表名默認(rèn)使用類名魏滚,駝峰轉(zhuǎn)下劃線镀首,如UserInfo默認(rèn)對應(yīng)的表名為user_info
  • 表名可以使用@Table(name = "tableName")進(jìn)行指定,對不符合第一條默認(rèn)規(guī)則的可以通過這種方式指定表名
  • 字段默認(rèn)和@Column一樣鼠次,都會(huì)作為表字段更哄,表字段默認(rèn)為Java對象的Field名字駝峰轉(zhuǎn)下劃線形式
  • 可以使用@Column(name = "fieldName")指定不符合第3條規(guī)則的字段名
  • 使用@Transient注解可以忽略字段,添加該注解的字段不會(huì)作為表字段使用
  • 建議一定是有一個(gè)@Id注解作為主鍵的字段腥寇,可以有多個(gè)@Id注解的字段作為聯(lián)合主鍵
  • 默認(rèn)情況下成翩,實(shí)體類中如果不存在包含@Id注解的字段,所有的字段都會(huì)作為主鍵字段進(jìn)行使用(這種效率極低)
  • 實(shí)體類可以繼承使用
  • 由于基本類型赦役,如int作為實(shí)體類字段時(shí)會(huì)有默認(rèn)值0麻敌,而且無法消除,所以實(shí)體類中建議不要使用基本類型

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末掂摔,一起剝皮案震驚了整個(gè)濱河市术羔,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌乙漓,老刑警劉巖级历,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異叭披,居然都是意外死亡寥殖,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進(jìn)店門涩蜘,熙熙樓的掌柜王于貴愁眉苦臉地迎上來嚼贡,“玉大人,你說我怎么就攤上這事同诫≡敛撸” “怎么了?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵剩辟,是天一觀的道長掐场。 經(jīng)常有香客問我往扔,道長,這世上最難降的妖魔是什么熊户? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任萍膛,我火速辦了婚禮,結(jié)果婚禮上嚷堡,老公的妹妹穿的比我還像新娘蝗罗。我一直安慰自己,他們只是感情好蝌戒,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布串塑。 她就那樣靜靜地躺著,像睡著了一般北苟。 火紅的嫁衣襯著肌膚如雪桩匪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天友鼻,我揣著相機(jī)與錄音傻昙,去河邊找鬼。 笑死彩扔,一個(gè)胖子當(dāng)著我的面吹牛妆档,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播虫碉,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼贾惦,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了敦捧?” 一聲冷哼從身側(cè)響起须板,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎绞惦,沒想到半個(gè)月后逼纸,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體洋措,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡济蝉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了菠发。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片王滤。...
    茶點(diǎn)故事閱讀 40,424評論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖滓鸠,靈堂內(nèi)的尸體忽然破棺而出雁乡,到底是詐尸還是另有隱情,我是刑警寧澤糜俗,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布踱稍,位于F島的核電站曲饱,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏珠月。R本人自食惡果不足惜扩淀,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望啤挎。 院中可真熱鬧驻谆,春花似錦、人聲如沸庆聘。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽伙判。三九已至象对,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間宴抚,已是汗流浹背织盼。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留酱塔,地道東北人沥邻。 一個(gè)月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像羊娃,于是被迫代替她去往敵國和親唐全。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 1. 簡介 1.1 什么是 MyBatis 蕊玷? MyBatis 是支持定制化 SQL邮利、存儲(chǔ)過程以及高級映射的優(yōu)秀的...
    笨鳥慢飛閱讀 5,527評論 0 4
  • Java數(shù)據(jù)持久化之mybatis 一. mybatis簡介 1.1 原始的JDBC操作: Java 通過 Jav...
    小Q逛逛閱讀 4,928評論 0 16
  • Spring 技術(shù)筆記Day 1 預(yù)熱知識(shí)一、 基本術(shù)語Blob類型垃帅,二進(jìn)制對象Object Graph:對象圖...
    OchardBird閱讀 978評論 0 2
  • “真誠”是做事的準(zhǔn)則延届,“起點(diǎn)”是告訴自己,未來不管取得什么成就贸诚,都不能忘了開始時(shí)的初心與艱辛方庭。 加入保險(xiǎn)行業(yè)一直是...
    馬占桂閱讀 498評論 2 3
  • 有一種讓人感動(dòng)的犧牲:全家圍坐吃晚飯械念,酒肉饜足之后,作為在場最年輕的小輩运悲,貢獻(xiàn)出一己的童年糗事龄减,承擔(dān)了為大家提供話...
    司徒蘑菇閱讀 505評論 5 3