MyBatis入门学习(三)

  在实际开发中,我们希望文件配置是分类配置存放,需要的时候引入即可。如果多文件的配置混合配置使用,那么对项目的后期维护将增加难度。

一、对于连接数据库的配置单独放在一个properties文件中

1、对于之前的配置我们是将数据库配置放置在conf.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="123456" />
            </dataSource>
        </environment>
    </environments>
    
    <mappers>
        <!-- 注册userMapper.xml文件, 
        userMapper.xml位于me.gacl.mapping这个包下,所以resource写成me/gacl/mapping/userMapper.xml-->
        <mapper resource="com/murong/mapping/userMapper.xml"/>
    
         <!-- 注册UserMapper映射接口-->
        
            <mapper class="com.murong.mapping.UserMapperI"/>
        
    </mappers>
</configuration>

2、现在我们把数据库连接的配置分离出来,单独放在一个配置文件中。即    db.properties  文件

  具体操作:在项目的src目录下新建一个db.properties文件,文件内容如下:

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

3、在MyBatis的conf.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>
    <properties resource="db.properties"></properties>
        <!-- 简化sql文件映射方式一 -->
        <!-- 
            <typeAliases>
                <typeAlias type="com.murong.domain.User" alias="User"/>
        </typeAliases>
         -->
        <!-- 简化sql文件映射方式二-->
        <!-- 配置实体类的别名,配置实体类别名的目的是为了在引用实体类时可以使用实体类的别名来代替实体类,达到简写的目的 -->
        <typeAliases>
            <!-- 为实体类com.murong.domain.User配置一个别名_User -->
            <!-- <typeAlias type="com.murong.domain.User" alias="_User"/> -->
            <!-- 为com.murong.domain包下的所有实体类配置别名,MyBatis默认的设置别名的方式就是去除类所在的包后的简单的类名
            比如com.murong.domain.User这个实体类的别名就会被设置成User
             -->
            <package name="com.murong.domain"/>
        </typeAliases>
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <!-- 配置数据库连接信息 -->
            <dataSource type="POOLED">
                <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位于com.murong.mapping这个包下,所以resource写成com/murong/mapping/userMapper.xml-->
        <mapper resource="com/murong/mapping/userMapper.xml"/>
    
         <!-- 注册UserMapper映射接口-->
        <!-- 
            <mapper class="com.murong.mapping.UserMapperI"/>
         -->
    </mappers>
</configuration>

二、为实体类定义别名,简化sql映射xml文件中的引用

  之前,我们在sql映射xml文件中的引用实体类时,需要写上实体类的全类名(包名+类名),如下:

 <!-- 创建用户(Create) -->
     <insert id="addUser" parameterType="com.murong.domain.User">
         insert into users(name,age) values(#{name},#{age})
     </insert>

  parameterType="com.murong.domain.User"这里写的实体类User的全类名com.murong.domain.User,每次都写这么一长串内容挺麻烦的,而我们希望能够简写成下面的形式

 <!-- 创建用户(Create) -->
     <insert id="addUser" parameterType="_User">
         insert into users(name,age) values(#{name},#{age})
     </insert>

  为了达到这种效果,我们需要在conf.xml文件中为实体类="com.murong.domain.User"定义一个别名为"User",具体做法如下:
  在conf.xml文件中<configuration></configuration>标签中添加如下配置:

<!-- 简化sql文件映射方式一 -->
        <!-- 
            <typeAliases>
                <typeAlias type="com.murong.domain.User" alias="_User"/>
        </typeAliases>
         -->
        <!-- 简化sql文件映射方式二-->
        <!-- 配置实体类的别名,配置实体类别名的目的是为了在引用实体类时可以使用实体类的别名来代替实体类,达到简写的目的 -->
        <typeAliases>
            <!-- 为实体类com.murong.domain.User配置一个别名_User -->
            <!-- <typeAlias type="com.murong.domain.User" alias="_User"/> -->
            <!-- 为com.murong.domain包下的所有实体类配置别名,MyBatis默认的设置别名的方式就是去除类所在的包后的简单的类名
            比如com.murong.domain.User这个实体类的别名就会被设置成User
             -->
            <package name="com.murong.domain"/>
        </typeAliases>

<package name="com.murong.domain"/>就表示为这个包下面的所有实体类设置别名。MyBatis默认的设置别名的方式就是去除类所在的包后的简单的类名,比如com.murong.domain.User这个实体类的别名就会被设置成User。

原文地址:https://www.cnblogs.com/yuanchaoyong/p/5647451.html