一.導(dǎo)依賴
<dependency>
<groupId>com.github.abel533</groupId>
<artifactId>mapper</artifactId>
<version>2.3.4</version>
</dependency>
二.配置攔截器
在mybatis-config.xml里面配置<plugin interceptor="com.github.abel533.mapperhelper.MapperInterceptor"> <!--主鍵自增回寫方法,默認(rèn)值MySQL,詳細(xì)說(shuō)明請(qǐng)看文檔 --> <PRoperty name="IDENTITY" value="MYSQL" /> <!--通用Mapper接口,多個(gè)通用接口用逗號(hào)隔開(這個(gè)是通用Mapper給我們提供的被繼承的接口,包括基本的crud操作) --> <property name="mappers" value="com.github.abel533.mapper.Mapper" /> </plugin>或者在sqlsessionFactory里注入<property name="plugins"> <array> <bean class="com.isea533.mybatis.mapperhelper.MapperInterceptor"/> </array> </property>三.對(duì)實(shí)體類進(jìn)行注解,如@Table,@Id等
在繼承用用Mapper的接口的時(shí)候,需要指定Mapper的泛型,這個(gè)泛型就是指實(shí)體類.而這個(gè)實(shí)體類必須要符合以下規(guī)范:
1.通用Mapper會(huì)默認(rèn)為表名=實(shí)體類名,駝峰的話會(huì)轉(zhuǎn)下劃線,如UserInfo類對(duì)應(yīng)的表為user_info
2.如果上一條不滿足的話,則可以在實(shí)體類上面加注解@Table(name="tablename")
3.通用Mapper會(huì)默認(rèn)將實(shí)體類的屬性轉(zhuǎn)為表的字段
4.如果上一條不滿足的話,加注解@Column(name="fieldname")
5.實(shí)體類的有些屬性 沒有對(duì)應(yīng)表的字段的話,則要在這個(gè)屬性上面加上注解@Transient,表示將這個(gè)屬性忽略
6.通用Mapper有幾個(gè)方法是需要主鍵的,如selectByPrimaryKey等,所以可以在主鍵對(duì)應(yīng)的實(shí)體類屬性上加上注解@Id,聲明這個(gè)屬性是主鍵屬性,如果不加的話,所有的屬性都會(huì)作為主鍵進(jìn)行使用,這樣會(huì)很大程度的影響效率
7.因?yàn)榛绢愋驮趯?duì)象初始化的時(shí)候會(huì)默認(rèn)值,無(wú)法消除,所以實(shí)體類盡量使用包裝類
8.Mapper還提供了序列(支持Oracle)、UUID(任意數(shù)據(jù)庫(kù),字段長(zhǎng)度32)、主鍵自增(類似Mysql,Hsqldb)三種方式,其中序列和UUID可以配置多個(gè),主鍵自增只能配置一個(gè)。
這三種方式不能同時(shí)使用,同時(shí)存在時(shí)按照 序列>UUID>主鍵自增的優(yōu)先級(jí)進(jìn)行選擇.
序列://可以用于數(shù)字類型,字符串類型(需數(shù)據(jù)庫(kù)支持自動(dòng)轉(zhuǎn)型)的字段,@SequenceGenerator(name="Any",sequenceName="seq_userid"),該字段不會(huì)回寫id
UUID:@GeneratedValue(generator = "UUID")該字段不會(huì)回寫id
主鍵自增:不限于@Id注解的字段,但是一個(gè)實(shí)體類中只能有一個(gè)@GeneratedValue(strategy = GenerationType.IDENTITY),會(huì)回寫id
四.繼承Mapper接口
public interface UserMapper extends Mapper<User> {}
注:通用Mapper只支持對(duì)單表的操作,如果多表的話,可以自己在映射文件中另外寫sql.
題外話:學(xué)完通用Mapper后,想自己寫篇文章來(lái)鞏固的,就按著學(xué)習(xí)資料來(lái)寫,結(jié)果寫到一半,發(fā)現(xiàn)通用Mapper的締造者已經(jīng)寫過(guò)一篇詳細(xì)的了,本想放棄的,但是想到大神的那篇博客太詳細(xì)了,初學(xué)者可能會(huì)看懵,我這篇更容易上手一些,就繼續(xù)寫下來(lái)了.
附上大神的博客:http://blog.csdn.net/isea533/article/details/41457529?locationNum=2&fps=1
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注