Mybatis Mapper動態代理方式 typeAliases 別名的使用

目錄結構及配置文件與原始dao方法相比更簡便java

 

只需一個UserMapper的接口,放在一塊兒的配置文件,配置文件中namespace的地址肯定jdk動態代理的對象sql

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//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配置文件的映射部分更加簡便swift

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//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框架相似mybatis

但還要搞懂Alias 別名app

若是沒留心這個,每每會讓你暈暈的感受,不明白誰是誰了,但一旦注意了,仍是以爲蠻方便的框架

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

就像給人其了小名,小名其實仍是他,之後叫小名就好了ui

還能夠用包批量定義別名url

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

那麼這些包下的接口或類就均可以使用小名了(就是類名能夠小寫了,或者無所謂大小寫)

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

新的配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//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>

配置文件屬性的位置是固定的,由於約束,不能變更

映射文件以下:

不知道必定會懵的

相關文章
相關標籤/搜索