欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

MyBatis3.4.0版本的新特性有哪些

MyBatis 3.4.0版本的新特性有哪些?相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。

創(chuàng)新互聯(lián)是一家從事企業(yè)網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)站建設(shè)、行業(yè)門戶網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)制作的專業(yè)網(wǎng)站設(shè)計(jì)公司,擁有經(jīng)驗(yàn)豐富的網(wǎng)站建設(shè)工程師和網(wǎng)頁設(shè)計(jì)人員,具備各種規(guī)模與類型網(wǎng)站建設(shè)的實(shí)力,在網(wǎng)站建設(shè)領(lǐng)域樹立了自己獨(dú)特的設(shè)計(jì)風(fēng)格。自公司成立以來曾獨(dú)立設(shè)計(jì)制作的站點(diǎn)上千多家。

新增功能

1. Cursor 新增返回值類型為游標(biāo)的方法

當(dāng)查詢大量(上百萬)數(shù)據(jù)的時(shí)候,使用游標(biāo)可以有效的減少內(nèi)存使用,不需要一次性將所有數(shù)據(jù)得到,可以通過游標(biāo)逐個(gè)或者分批(逐個(gè)獲取一批后)處理。

SqlSession 中新增的 3 個(gè)游標(biāo)方法:

/**
 * A Cursor offers the same results as a List, except it fetches data lazily using an Iterator.
 * @param <T> the returned cursor element type.
 * @param statement Unique identifier matching the statement to use.
 * @return Cursor of mapped objects
 */
<T> Cursor<T> selectCursor(String statement);

/**
 * A Cursor offers the same results as a List, except it fetches data lazily using an Iterator.
 * @param <T> the returned cursor element type.
 * @param statement Unique identifier matching the statement to use.
 * @param parameter A parameter object to pass to the statement.
 * @return Cursor of mapped objects
 */
<T> Cursor<T> selectCursor(String statement, Object parameter);

/**
 * A Cursor offers the same results as a List, except it fetches data lazily using an Iterator.
 * @param <T> the returned cursor element type.
 * @param statement Unique identifier matching the statement to use.
 * @param parameter A parameter object to pass to the statement.
 * @param rowBounds Bounds to limit object retrieval
 * @return Cursor of mapped objects
 */
<T> Cursor<T> selectCursor(String statement, Object parameter, RowBounds rowBounds);

注意: 3.4.0 版本的游標(biāo)方法目前有個(gè) bug,因此不支持 @Select 注解方式,在將來的 3.4.1 版本中會(huì)解決這個(gè)問題。

使用示例:

<select id="selectAll" resultType="tk.mybatis.springboot.model.City">
 select * from city
</select>

xml 里面沒有任何改變,在獲取值的地方有變化,例如使用接口:

Cursor<City> selectAll();

或者使用命名接口方式:

Cursor<City> cityList = sqlSession.selectCursor("selectAll");

得到結(jié)果后,使用方法如下:

Iterator<City> iterator = cityList.iterator();
while(iterator.hasNext()){
 City c2 = iterator.next();
 Assert.assertNotNull(c2);
 Assert.assertNotNull(c2.getName());
 Assert.assertNotNull(c2.getState());
}

嵌套查詢的情況

當(dāng)使用嵌套查詢時(shí),還需要設(shè)置resultOrdered="true"屬性,使用方法如下:

<select id="selectAll" resultMap="xx.CityMap" resultOrdered="true">

只有設(shè)置這個(gè)屬性才能得到當(dāng)前對(duì)象 id 所對(duì)應(yīng)的所有嵌套結(jié)果。

對(duì)某一個(gè)嵌套查詢,設(shè)置 resultOrdered="true" 的結(jié)果:

MyBatis 3.4.0版本的新特性有哪些

不設(shè)置的結(jié)果:

MyBatis 3.4.0版本的新特性有哪些

以上圖為例,判斷是否為同一個(gè)結(jié)果下的對(duì)象,使用 id 判斷的,這個(gè) id 必須是 <resultMap> 中的 <id>,另外為了結(jié)果完整,你還需要按照 <id> 配置的列進(jìn)行排序,如果結(jié)果不是 <id> 對(duì)應(yīng)列的順序,嵌套的結(jié)果數(shù)量會(huì)出錯(cuò)。

2. 增加對(duì) Java 8 日期(JSR-310)的支持

添加以下依賴:

<dependency>
 <groupId>org.mybatis</groupId>
 <artifactId>mybatis-typehandlers-jsr310</artifactId>
 <version>1.0.0</version>
</dependency>

如果你使用的 3.4.0 版本,就不需要任何配置就可以直接用。

如果你使用的老版本,需要手動(dòng)配置:

<typeHandlers>
 <typeHandler handler="org.apache.ibatis.type.InstantTypeHandler" />
 <typeHandler handler="org.apache.ibatis.type.LocalDateTimeTypeHandler" />
 <typeHandler handler="org.apache.ibatis.type.LocalDateTypeHandler" />
 <typeHandler handler="org.apache.ibatis.type.LocalTimeTypeHandler" />
 <typeHandler handler="org.apache.ibatis.type.OffsetDateTimeTypeHandler" />
 <typeHandler handler="org.apache.ibatis.type.OffsetTimeTypeHandler" />
 <typeHandler handler="org.apache.ibatis.type.ZonedDateTimeTypeHandler" />
</typeHandlers>

有關(guān) mybatis-typehandlers-jsr310 項(xiàng)目的詳細(xì)信息看這里

3. 新增 autoMappingUnknownColumnBehavior 參數(shù)

新增了一個(gè) settings 配置的參數(shù) autoMappingUnknownColumnBehavior ,當(dāng)檢測出未知列(或未知屬性)時(shí),如何處理,默認(rèn)情況下沒有任何提示,這在測試的時(shí)候很不方便,不容易找到錯(cuò)誤。

可選值:

  • NONE : 不做任何處理 (默認(rèn)值)
  • WARNING : 警告日志形式的詳細(xì)信息
  • FAILING : 映射失敗,拋出異常和詳細(xì)信息

配置時(shí),在 <settings> 里面添加:

<setting name="autoMappingUnknownColumnBehavior" value="WARNING"/>

4. Sql Provider 注解方式支持多個(gè)參數(shù)

例如:

@SelectProvider(type = UserSqlBuilder.class, method = "buildGetUsersByName")
List<User> getUsersByName(
 @Param("name") String name,
 @Param("orderByColumn") String orderByColumn); // Multiple arguments

在寫 UserSqlBuilder 的時(shí)候,同樣需要使用注解來指定參數(shù)(或者按順序):

public String buildGetUsersByName(
 @Param("name") final String name
 @Param("orderByColumn") final String orderByColumn) { // Allow multiple arguments
 return new SQL(){{
 SELECT("*");
 FROM("users");
 if (name != null) {
  WHERE("name like #{name} || '%'");
 }
 ORDER_BY(orderByColumn);
 }}.toString();
}

解決的 BUG

支持實(shí)體類中的泛型類型

例如 Entity 基類:

public abstract class Entity<K extends Serializable> {
 private static final long serialVersionUID = -1L;
 protected K id;

 public K getId() {
 return id;
 }

 public void setId(K id) {
 this.id = id;
 }

其中一個(gè)子類:

public class User extends Entity<String>

在先前的版本中,MyBatis 無法獲取 id 的實(shí)際類型,導(dǎo)致找不到 TypeHandler 出錯(cuò)。

看完上述內(nèi)容,你們掌握MyBatis 3.4.0版本的新特性有哪些的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!

分享題目:MyBatis3.4.0版本的新特性有哪些
標(biāo)題網(wǎng)址:http://chinadenli.net/article26/jsigjg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供用戶體驗(yàn)、品牌網(wǎng)站建設(shè)定制網(wǎng)站全網(wǎng)營銷推廣、網(wǎng)站收錄、移動(dòng)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都seo排名網(wǎng)站優(yōu)化
国产精品刮毛视频不卡| 日韩精品视频免费观看| 一区二区欧美另类稀缺| 精品熟女少妇一区二区三区| 免费观看一区二区三区黄片| 99久久成人精品国产免费| 国产一区二区熟女精品免费| 91久久精品中文内射| 色丁香一区二区黑人巨大| 成在线人免费视频一区二区| 亚洲欧美日韩国产自拍| 亚洲精品蜜桃在线观看| 免费大片黄在线观看日本| 国产毛片不卡视频在线| 国产又大又黄又粗的黄色 | 国产精品欧美一区二区三区不卡| 欧美精品日韩精品一区| 日本道播放一区二区三区| 久久成人国产欧美精品一区二区 | 国产av天堂一区二区三区粉嫩| 九九热视频经典在线观看| 黄片在线免费看日韩欧美| 黄色国产自拍在线观看| 国产免费成人激情视频| 久久人妻人人澡人人妻| 又黄又爽禁片视频在线观看| 国产精品熟女乱色一区二区| 最新国产欧美精品91| 搡老熟女老女人一区二区| 黄色国产精品一区二区三区| 在线免费国产一区二区| 亚洲国产精品av在线观看| 欧美日韩国产黑人一区| 日韩欧美中文字幕av| 欧美大黄片在线免费观看| 亚洲乱妇熟女爽的高潮片| 日韩欧美91在线视频| 国产乱淫av一区二区三区| 又色又爽又黄的三级视频| 久久99这里只精品热在线| 最近中文字幕高清中文字幕无|