對單表進行增刪改查是項目中不可避免的需求,Mybatis的通用Mapper插件使這些操作變得簡單
添加maven依賴
在對應工程的pom.xml文件中添加
1
2
3
4
5
6
7
8
9
10
|
< 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
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
< plugin interceptor = "tk.mybatis.mapper.mapperhelper.MapperInterceptor" > <!--================================================--> <!--可配置參數說明(一般無需修改)--> <!--================================================--> <!--UUID生成策略--> <!--配置UUID生成策略需要使用OGNL表達式--> <!--默認值32位長度:@java.util.UUID@randomUUID().toString().replace("-", "")--> <!--<property name="UUID" value="@java.util.UUID@randomUUID().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>
1
2
3
4
|
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還提供了主鍵自增的方式
1
2
3
4
|
@Id @GeneratedValue (generator = "JDBC" ) @Column (name = "id" ) private Integer id; |
添加Mapper配置
將繼承的Mapper接口添加到mybatis-config.xml文件中
1
2
3
|
< mappers > < mapper class = "com.ind4.iss.icp.dao.logic.map.mapper.club.clubMapper" /> </ mappers > |
具體使用
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
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 ); } |
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。
原文鏈接:http://www.jianshu.com/p/5854bfd0f0e6?utm_source=tuicool&utm_medium=referral