淺談Mybatis通用Mapper使用方法
對單表進(jìn)行增刪改查是項目中不可避免的需求,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個,對應(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接口,多個通用接口用逗號隔開--> <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一樣,都會作為表字段,表字段默認(rèn)為Java對象的Field名字駝峰轉(zhuǎn)下劃線形式
- 可以使用@Column(name = "fieldName")指定不符合第3條規(guī)則的字段名
- 使用@Transient注解可以忽略字段,添加該注解的字段不會作為表字段使用
- 建議一定是有一個@Id注解作為主鍵的字段,可以有多個@Id注解的字段作為聯(lián)合主鍵
- 默認(rèn)情況下,實(shí)體類中如果不存在包含@Id注解的字段,所有的字段都會作為主鍵字段進(jìn)行使用(這種效率極低)
- 實(shí)體類可以繼承使用
- 由于基本類型,如int作為實(shí)體類字段時會有默認(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); }
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
java實(shí)現(xiàn)馬踏棋盤算法(騎士周游問題)
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)馬踏棋盤算法,解決騎士周游問題,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-02-02Java Web 實(shí)現(xiàn)QQ登錄功能一個帳號同一時間只能一個人登錄
對于一個帳號在同一時間只能一個人登錄,下文給大家介紹的非常詳細(xì),對java web qq 登錄功能感興趣的朋友一起看看吧2016-11-11ElasticSearch如何設(shè)置某個字段不分詞淺析
最近在學(xué)習(xí)ElasticSearch官方文檔過程中發(fā)現(xiàn)的某個問題,記錄一下 希望能幫助到后面的朋友,下面這篇文章主要給大家介紹了關(guān)于ElasticSearch如何設(shè)置某個字段不分詞的相關(guān)資料,需要的朋友可以參考下2022-04-04Java實(shí)現(xiàn)的對稱加密算法3DES定義與用法示例
這篇文章主要介紹了Java實(shí)現(xiàn)的對稱加密算法3DES定義與用法,結(jié)合實(shí)例形式簡單分析了Java 3DES加密算法的相關(guān)定義與使用技巧,需要的朋友可以參考下2018-04-04Java實(shí)現(xiàn)復(fù)制文件并命名的超簡潔寫法
這篇文章主要介紹了Java實(shí)現(xiàn)復(fù)制文件并命名的超簡潔寫法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11Spring MVC+FastJson+hibernate-validator整合的完整實(shí)例教程
這篇文章主要給大家介紹了關(guān)于Spring MVC+FastJson+hibernate-validator整合的完整實(shí)例教程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2018-04-04