目錄結構及配置文件與原始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>
配置文件屬性的位置是固定的,由於約束,不能變更
映射文件以下:
不知道必定會懵的