Mybatis Mapper動態代理方式

來源:互聯網
上載者:User

標籤:bubuko   enc   包名   實現   使用者   命名   word   ryu   屬性   

目錄結構及設定檔與原始dao方法相比更簡便

 

只需一個UserMapper的介面,放在一起的設定檔,設定檔中namespace的地址確定jdk動態代理的對象

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><!-- namespace:命名空間,用於隔離sql --><!-- 使用動態代理開發DAO,1. namespace必須和Mapper介面類路徑一致 --><mapper namespace="com.swift.dao.UserMapper">    <!-- 根據使用者id查詢使用者 -->    <!-- 2. id必須和Mapper介面方法名一致 -->    <!-- 3. parameterType必須和介面方法參數類型一致 -->    <!-- 4. resultType必須和介面方法傳回值類型一致 -->    <select id="queryUserByUsername" parameterType="String"        resultType="com.swift.pojo.User">        select * from user where username = #{username}    </select></mapper>

Mybatis設定檔的映射部分更加簡便

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><!-- 配置 --><configuration>    <properties resource="db.properties"></properties>    <environments default="development">        <!-- 開發用資料來源 -->        <environment id="development">            <transactionManager type="JDBC" />            <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>    <!-- 載入sql對應檔 -->    <mappers>    <!-- 當把sql對應檔移到和介面檔案(jdk代理的方式,無需實作類別了)一個包下使用相同檔案名稱(介面改名叫UserMapper.java不叫UserDao了),就可以使用class屬性替換resource屬性 -->        <!-- <mapper resource="mapper/UserMapper.xml" /> -->        <!-- <mapper class="com.swift.dao.UserMapper"/> -->        <!-- 如果有很多相同名字的介面和映射都放在這個包中,那給個包名就可以載入映射了 -->        <package name="com.swift.dao"/>    </mappers></configuration>

 上邊的設定檔和對應檔與以往的ssh架構類似

但還要搞懂Alias 別名

如果沒留心這個,往往會讓你暈暈的感覺,不明白誰是誰了,但一旦注意了,還是覺得蠻方便的

可以單個定義別名
<typeAlias alias="user" type="com.swift.pojo.User" /> 

就像給人其了小名,小名其實還是他,以後叫小名就行了

還可以用包批量定義別名

<package name="com.swift.dao" />
<package name="com.swift.pojo" />

那麼這些包下的介面或類就都可以使用小名了(就是類名可以小寫了,或者無所謂大小寫)

但注意不要動 動態代理的那個類名,出BuilderException,造不出代理對象

新的設定檔

<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurationPUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><!-- 配置 --><configuration>    <properties resource="db.properties"></properties>    <typeAliases>        <!-- 單個別名定義 -->        <!-- <typeAlias alias="user" type="com.swift.pojo.User" /> -->        <!-- 批量別名定義,掃描整個包下的類,別名為類名(大小寫不敏感) -->        <package name="com.swift.dao" />        <package name="com.swift.pojo" />    </typeAliases>    <environments default="development">        <!-- 開發用資料來源 -->        <environment id="development">            <transactionManager type="JDBC" />            <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>    <!-- 載入sql對應檔 -->    <mappers>    <!-- 當把sql對應檔移到和介面檔案(jdk代理的方式,無需實作類別了)一個包下使用相同檔案名稱(介面改名叫UserMapper.java不叫UserDao了),就可以使用class屬性替換resource屬性 -->        <!-- <mapper resource="mapper/UserMapper.xml" /> -->        <!-- <mapper class="com.swift.dao.UserMapper"/> -->        <!-- 如果有很多相同名字的介面和映射都放在這個包中,那給個包名就可以載入映射了 -->        <package name="com.swift.dao"/>    </mappers></configuration>

設定檔屬性的位置是固定的,因為約束,不能變動

對應檔如下:

不知道一定會懵的

Mybatis Mapper動態代理方式

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.