日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MyBatis 核心配置文件深入浅出

發(fā)布時間:2024/1/1 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MyBatis 核心配置文件深入浅出 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

🙊🙊作者主頁:🔗求不脫發(fā)的博客

📔📔 精選專欄:🔗SSM直擊大廠

📋📋 精彩摘要:MyBatis 核心配置文件(xxxConfig.xml),該文件配置了MyBatis的一些全局信息,,包含數(shù)據(jù)庫連接信息和MyBatis運行時所需的各種特性,以及設(shè)置和響應(yīng)MyBatis行為的一些屬性。本文將深入淺出的介紹MyBatis核心配置文件中常用的標簽配置。

💞💞覺得文章還不錯的話歡迎大家點贊👍?收藏???評論💬支持博主🤞


📚目錄

📖MyBatis 核心配置文件深入淺出

1??層級關(guān)系

2??environments 環(huán)境標簽

3??mapper 映射標簽

4??Properties 配置文件標簽

5??typeAliases 定義別名標簽

6??typeHandlers 類型處理器標簽

7??plugins 第三方插件標簽

8??本章小結(jié)


📖MyBatis 核心配置文件深入淺出


1??層級關(guān)系

  • configguration 配置
    • properties 屬性
    • settings 設(shè)置
    • typeAliases 類型別名
    • typeHandlers 類型處理器
    • objectFactory 對象工廠
    • plugins 插件
    • environments 環(huán)境?
      • environment?環(huán)境變量
        • transactionManager 事務(wù)管理器
        • dataSource數(shù)據(jù)源
    • databaseIdProvider 數(shù)據(jù)庫廠商標識
    • mappers 映射器

2??environments 環(huán)境標簽

事務(wù)管理器(transactionManager)類型有兩種:?

????????????????????????????????????????????????事務(wù)管理器(transactionManager)
JDBC:直接使用了JDBC 的提交和回滾設(shè)置,它依賴于從數(shù)據(jù)源得到的連接來管理事務(wù)作用域。
MANAGED:

它從來不提交或回滾一個連接,而是讓容器來管理事務(wù)的整個生命周期(比如JEE 應(yīng)用服務(wù)器的上下文)。 默認情況下它會關(guān)閉連接,然而一些容器并不希望這樣,因此需要將 closeConnection 屬性設(shè)置 為 false 來阻止它默認的關(guān)閉行為。

數(shù)據(jù)源(dataSource)類型有三種:

????????????????????????????????????????????????????????????????數(shù)據(jù)源(dataSource)
UNPOOLED:這個數(shù)據(jù)源的實現(xiàn)只是每次被請求時打開和關(guān)閉連接。
POOLED:這種數(shù)據(jù)源的實現(xiàn)利用“池”的概念將 JDBC 連接對象組織起來。
JNDI:

這個數(shù)據(jù)源的實現(xiàn)是為了能在如 EJB 或應(yīng)用服務(wù)器這類容器中使用,容器可以集中或在外部配置數(shù)據(jù)源,然后放置 一個 JNDI 上下文的引用


📝3??mapper 映射標簽

該標簽用于加載映射,加載方式有如下幾種:

加載方式例:
使用相對于類路徑資源引用(常用)<mapper resource="org/mybatis/builder/AuthorMapper.xml"/>
使用完全限定資源定位符(URL)<mapper url="file:///var/mappers/AuthorMapper.xml"/>
使用映射器接口實現(xiàn)類完全限定類名<mapper class="org.mybatis.builder.AuthorMapper"/>
包內(nèi)映射器接口實現(xiàn)全部注冊映射器<package name="org.mybatis.builder"/>

4??Properties 配置文件標簽

?實際開發(fā)中,習慣將數(shù)據(jù)源的配置信息單獨抽取成一個properties文件,該標簽可以加載額外配置的properties文件。

<!--1、加載數(shù)據(jù)庫相關(guān)配置文件db.properties--><properties resource="db.properties"/><!--2、配置數(shù)據(jù)源環(huán)境--><environments default="mybatis"><environment id="mybatis"><transactionManager type="JDBC"></transactionManager><dataSource type="POOLED"><property name="driver" value="${jdbc.driver}"/><property name="url" value="${jdbc.url}"/><property name="username" value="${jdbc.username}"/><property name="password" value="${jdbc.password}"/></dataSource></environment></environments>

5??typeAliases 定義別名標簽

User全限定名:com.mybatis.domain.User

使用typeAliases標簽定義別名

<!--定義別名--><typeAliases><typeAlias type="com.mybatis.domain.User" alias="user"/></typeAliases>

上面我們是自定義的別名,mybatis框架已經(jīng)為我們設(shè)置好的一些常用的類型的別名

別名數(shù)據(jù)類型
stringString?
longLong
intInteger
doubleDouble
booleanBoolean
......

📝6??typeHandlers 類型處理器標簽

無論是 MyBatis 在預(yù)處理語句(PreparedStatement)中設(shè)置一個參數(shù)時,還是從結(jié)果集中取出一個值時, 都會用類型處理器將獲取的值以合適的方式轉(zhuǎn)換成 Java 類型。下表描述了一些默認的類型處理器(截取部分)。

類型處理器Java 類型JDBC 類型
BooleanTypeHandlerjava.lang.Boolean, boolean數(shù)據(jù)庫兼容的 BOOLEAN
ByteTypeHandlerjava.lang.Byte, byte數(shù)據(jù)庫兼容的 NUMERIC 或 BYTE
ShortTypeHandlerjava.lang.Short, short數(shù)據(jù)庫兼容的 NUMERIC 或 SHORT INTEGER
IntegerTypeHandlerjava.lang.Integer, int數(shù)據(jù)庫兼容的 NUMERIC 或 INTEGER
LongTypeHandlerjava.lang.Long, long數(shù)據(jù)庫兼容的 NUMERIC 或 LONG INTEGER
FloatTypeHandlerjava.lang.Float, float數(shù)據(jù)庫兼容的 NUMERIC 或 FLOAT
DoubleTypeHandlerjava.lang.Double, double數(shù)據(jù)庫兼容的 NUMERIC 或 DOUBLE
BigDecimalTypeHandlerjava.math.BigDecimal數(shù)據(jù)庫兼容的 NUMERIC 或 DECIMAL
StringTypeHandlerjava.lang.StringCHAR, VARCHAR
ClobTypeHandlerjava.lang.StringCLOB, LONGVARCHAR
NStringTypeHandlerjava.lang.StringNVARCHAR, NCHAR
NClobTypeHandlerjava.lang.StringNCLOB
ByteArrayTypeHandlerbyte[]數(shù)據(jù)庫兼容的字節(jié)流類型
BlobTypeHandlerbyte[]BLOB, LONGVARBINARY
DateTypeHandlerjava.util.DateTIMESTAMP
DateOnlyTypeHandlerjava.util.DateDATE
TimeOnlyTypeHandlerjava.util.DateTIME
SqlTimestampTypeHandlerjava.sql.TimestampTIMESTAMP
SqlDateTypeHandlerjava.sql.DateDATE
SqlTimeTypeHandlerjava.sql.TimeTIME
ObjectTypeHandlerAnyOTHER 或未指定類型?
EnumTypeHandlerEnumeration Type?VARCHAR-任何兼容的字符串類型,存儲枚舉的名稱(而不是索引)
EnumOrdinalTypeHandlerEnumeration Type任何兼容的 NUMERIC 或 DOUBLE 類型,存儲枚舉的索引(而不是名稱)。?

可以重寫類型處理器或創(chuàng)建自己的類型處理器來處理不支持的或非標準的類型。

具體的做法為:

  • 實現(xiàn)org.apache.ibatis.type.TypeHandler接口,或繼承一個很便利的類org.apache.ibatis.type.BaseTypeHandler,
  • 然后可以選擇性地將它映射到一個JDBC類型。
  • 例如需求:

    ? ? ? ? 一個Java中的Date數(shù)據(jù)類型,我想將之存到數(shù)據(jù)庫的時候存成一個1970年至今的毫秒數(shù),取出來時轉(zhuǎn)換成java的Date,即java的Date與數(shù)據(jù)庫的varchar毫秒值之間轉(zhuǎn)換。

    開發(fā)步驟:

    ① 定義轉(zhuǎn)換類繼承類BaseTypeHandler<T>

    ② 覆蓋4個未實現(xiàn)的方法,其中setNonNullParameter為java程序設(shè)置數(shù)據(jù)到數(shù)據(jù)庫的回調(diào)方法,getNullableResult 為查詢時 mysql的字符串類型轉(zhuǎn)換成 java的Type類型的方法

    public class MyDateTypeHandler extends BaseTypeHandler<Date> {public void setNonNullParameter(PreparedStatement preparedStatement, int i, Date date, JdbcType type) {preparedStatement.setString(i, date.getTime() + "");}public Date getNullableResult(ResultSet resultSet, String s) throws SQLException {return new Date(resultSet.getLong(s));}public Date getNullableResult(ResultSet resultSet, int i) throws SQLException {return new Date(resultSet.getLong(i));}public Date getNullableResult(CallableStatement callableStatement, int i) throws SQLException {return callableStatement.getDate(i);} }

    ③ 在MyBatis核心配置文件中進行注冊

    <!--注冊類型自定義轉(zhuǎn)換器--> <typeHandlers><typeHandler handler="com.mybatis.typeHandlers.MyDateTypeHandler"></typeHandler> </typeHandlers>

    ④ 直接使用即可


    7??plugins 第三方插件標簽

    MyBatis 可以使用第三方的插件來對功能進行擴展。

    例如分頁助手?PageHelper?是將分頁的復(fù)雜操作進行封裝,使用簡單的方式即可獲得分頁的相關(guān)數(shù)據(jù)。

    開發(fā)步驟:

  • 在 pom.xml 導入通用PageHelper的坐標 <!-- 分頁助手 --> <dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>3.7.5</version> </dependency> <dependency><groupId>com.github.jsqlparser</groupId><artifactId>jsqlparser</artifactId><version>0.9.1</version> </dependency>
  • 在mybatis核心配置文件中配置PageHelper插件 <!-- 注意:分頁助手的插件 配置在mapper之前 --> <plugin interceptor="com.github.pagehelper.PageHelper"><!-- 指定方言 --><property name="dialect" value="mysql"/> </plugin>
  • PageHelper相關(guān)API
  • PageHelper.startPage(int? pagenum,int pagesize); 設(shè)置分頁參數(shù),當前頁,當前頁展示的條數(shù)
    獲取其他分頁的數(shù)據(jù) 可使用?PageInfo? PageInfo<User> pageInfo = new PageInfo<User>(List<T>? T );
    pageInfo.getTotal() 總條數(shù)
    pageInfo.getPages() 總頁數(shù)
    pageInfo.getPageNum() 當前頁
    pageInfo.getPageSize()) 當前頁展示的條數(shù)
    pageInfo.isIsFirstPage() 當前頁是否為第一頁
    pageInfo.isIsLastPage() 當前頁是否為最后一頁

    8??本章小結(jié)

    MyBatis核心配置文件常用標簽:

    1??environments 環(huán)境標簽

    2??mapper 映射標簽

    3??Properties 配置文件標簽

    4??typeAliases 定義別名標簽

    5??typeHandlers 類型處理器標簽

    6??plugins 第三方插件標簽

    總結(jié)

    以上是生活随笔為你收集整理的MyBatis 核心配置文件深入浅出的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。