MyBatis(二)——優化Mybatis相關配置

GitHub源碼下載地址 : https://github.com/HChersh/MyBatisStudy_1
文章基于上一篇優化配置文件,優化前的源碼在mater分支上,優化后的源碼在optimizeConfiguration分支上

一、連接數據庫的配置單獨放在一個properties文件中

之前,我們是直接將數據庫的連接配置信息寫在了MyBatis的config.xml文件中,如下:

<?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>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <!-- 配置數據庫連接信息 -->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver" />
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis" />
                <property name="username" value="root" />
                <property name="password" value="root" />
            </dataSource>
        </environment>
    </environments>
    
</configuration>

這也是比較常見的做法將我們的數據庫連接信息放在一個db.properties文件里,然后在config.xml文件中再引用他
1.在src目錄下新建一個db.properties文件:

db.properties

2. 在db.properties文件編寫連接數據庫需要使用到的數據庫驅動,連接URL地址,用戶名,密碼:

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/mybatis
name=root
password=root

3.在MyBatis的config.xml文件中引用db.properties文件

<?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>

    <!-- 引用db.properties配置文件 -->
    <properties resource="db.properties" />
    <!-- development : 開發模式 work : 工作模式 -->
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <!-- 配置數據庫連接信息 -->
            <dataSource type="POOLED">
                <!-- value屬性值引用db.properties配置文件中配置的值 -->
                <property name="driver" value="${driver}" />
                <property name="url" value="${url}" />
                <property name="username" value="${name}" />
                <property name="password" value="${password}" />
            </dataSource>
        </environment>
    </environments>
    
    <mappers>
        <!-- 注冊userMapper.xml文件, userMapper.xml位于pers.cherish.mapping這個包下,所以resource寫成pers.cherish.mapping/userMapper.xml 
            <mapper resource="pers/cherish/mapping/userMapper.xml"/> -->
        <!-- 注冊UserMapper映射接口 -->
        <mapper class="pers.cherish.mapping.UserMapperI" />
    </mappers>
</configuration>

當然最后不要忘了添加我們對應的<mappers>

二、為實體類定義別名,簡化sql映射xml文件中的引用

之前,我們使用配置文件實現CRUD時在sql映射xml文件中的引用實體類時,需要寫上實體類的全類名(包名+類名),如下:

<!-- 創建用戶(Create) -->
<insert id="addUser" parameterType="pers.cherish.entity.User">
    insert into users(name,age) values(#{name},#{age})
</insert>

parameterType="pers.cherish.entity.User"這里寫的實體類User的全類名pers.cherish.entity.User,每次都寫這么一長串內容挺麻煩的,而我們希望能夠簡寫成下面的形式

<insert id="addUser2" parameterType="_User">
    insert into users(name,age) values(#{name},#{age})
</insert>

parameterType="_User"這樣寫就簡單多了,為了達到這種效果,我們需要在conf.xml文件中為實體類="pers.cherish.entity.User"定義一個別名為"_User",具體做法如下:
  在conf.xml文件中<configuration></configuration>標簽中添加如下配置:

<typeAliases>
    <typeAlias type="pers.cherish.entity.User" alias="_User"/>
</typeAliases>

這樣就可以為pers.cherish.entity.User類定義了一個別名為_User,以后_User就代表了pers.cherish.entity.User類,這樣sql映射xml文件中的凡是需要引用pers.cherish.entity.User類的地方都可以使用_User來代替,這就達到了一個簡化實體類引用的目的。

除了可以使用<typeAlias type="pers.cherish.entity.User" alias="_User"/>這種方式單獨為某一個實體類設置別名之外,我們還可以使用如下的方式批量為某個包下的所有實體類設置別名,如下:

<!-- 配置實體類的別名,配置實體類別名的目的是為了在引用實體類時可以使用實體類的別名來代替實體類,達到簡寫的目的 -->
    <typeAliases>
        <!-- 為實體類pers.cherish.entity.User配置一個別名_User -->
        <!-- <typeAlias type="pers.cherish.entity.User" alias="_User"/> -->
        <!-- 為pers.cherish.entity包下的所有實體類配置別名,MyBatis默認的設置別名的方式就是去除類所在的包后的簡單的類名
        比如pers.cherish.entity.User這個實體類的別名就會被設置成User
         -->
        <package name="pers.cherish.entity"/>
    </typeAliases>

<package name="pers.cherish.entity"/>就表示為這個包下面的所有實體類設置別名。MyBatis默認的設置別名的方式就是去除類所在的包后的簡單的類名,比如pers.cherish.entity.User這個實體類的別名就會被設置成User。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容