1.引入

前面讲到的无论是配置文件形式亦或是动态代理方式,都已经可以基本实现数据库的 CRUD 功能,但是项目中还有许多地方可以进行优化,本章节就来详细讲解此类功能;

2.具体内容

2.1 优化 mybatis-config 配置文件中的内容

原配置文件内容如下:

<?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="prod"><!--与 id 值保持一致-->
        <environment id="prod"><!--与 defaule 值保持一致-->
            <transactionManager type="JDBC"/><!--数据库事务的处理方式,默认为 JDBC-->
            <dataSource type="POOLED"><!--数据库连接池类型保持默认值 POOLED-->
                <!--配置数据库信息-->
                <property name="driver" value="com.mysql.cj.jdbc.Driver"/><!--数据库驱动方式,需要导入 JDBC驱动的 jar 包-->
                <property name="url" value="jdbc:mysql://localhost:3306/db?serverTimezone=UTC"/><!--数据库 URL 地址-->
                <!--<property name="url" value="jdbc:mysql://localhost:3306/db"/>&lt;!&ndash;数据库 URL 地址&ndash;&gt;-->
                <property name="username" value="root"/><!--数据库用户名-->
                <property name="password" value="root"/><!--数据库密码-->
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <!--加载映射文件,为对应的mapper.xml 文件所在的路径,中间用 / 间隔-->
        <mapper resource="com/mapper/employeeMapper.xml"/>
    </mappers>
</configuration>

基于上述配置文件,我们先进行第一个优化,将【配置数据库信息】进行抽离,具体步骤如下:

  • 新建 db.properties 文件,在里面配置数据库连接相关信息;
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/db?serverTimezone=UTC
username=root
password=root
  • 在 mybatis-config.xml 文件中引入 db.properties 属性文件,即增加配置:
    <properties resource="db.properties"></properties>
  • 配置数据库信息,将 driver、url、username、password等属性信息进行引用配置,引用方式为 ${},改造后的 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>
    <properties resource="db.properties"></properties>
    <environments default="prod"><!--与 id 值保持一致-->
        <environment id="prod"><!--与 defaule 值保持一致-->
            <transactionManager type="JDBC"/><!--数据库事务的处理方式,默认为 JDBC-->
            <dataSource type="POOLED"><!--数据库连接池类型保持默认值 POOLED-->
                <!--配置数据库信息-->
                <property name="driver" value="${driver}"/><!--数据库驱动方式,需要导入 JDBC驱动的 jar 包-->
                <property name="url" value="${url}"/><!--数据库 URL 地址-->
                <!--<property name="url" value="jdbc:mysql://localhost:3306/db"/>&lt;!&ndash;数据库 URL 地址&ndash;&gt;-->
                <property name="username" value="${username}"/><!--数据库用户名-->
                <property name="password" value="${password}"/><!--数据库密码-->
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <!--加载映射文件,为对应的mapper.xml 文件所在的路径,中间用 / 间隔-->
        <mapper resource="com/mapper/employeeMapper.xml"/>
    </mappers>
</configuration>

 2.2 全局配置参数的配置(一般不要改,了解有这么回事,知道在哪里添加即可)

mybatis-config.xml 文件中可以配置全局参数,配置样例如下:

 

 2.3 设置别名

2.3.1 设置单个别名

  • 设置位置:设置别名在 mybatis-config.xml 文件中的 configuration 标签下。
  • 演示案例:为具有全路径名的职员类设置别名,配置如下:表示将 com.entity.Employee 起别名为 Employee,此时在 mapper.xml 文件中即可按照 Employee 进行引用;
   <!--设置单个别名,设置别名后不区分大小写-->
    <typeAliases>
        <typeAlias type="com.entity.Employee" alias="Employee"></typeAlias>
    </typeAliases>
  • 注意问题:在 mybatis-config.xml 文件下设置属性信息时,是有顺序限制的,必须遵循如下约定:

    properties>settings>typeAliases>typeHandlers>objectFactory>objectWrapperFactory>reflectorFactory>plugins>environments>databaseIdProvider>mappers

 

 2.3.2 批量设置别名

  • 设置位置:设置别名在 mybatis-config.xml 文件中的 configuration 标签下。
  • 设置方法:增加如下配置:
    <typeAliases>
        <!--批量是设置别名-->
        <package name="com.entity"></package>
    </typeAliases>

  该配置表示,会将隶属于 com.entity 下的所有类都设置为别名的形式,别名就是其类名称本身;

 2.3.3 mybatis 自身内置别名

 mybatis 除了可以自定义别名外,自身还提供了一些内置别名,具体如下表所示: