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"/><!–数据库 URL 地址–>--> <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"/><!–数据库 URL 地址–>--> <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 除了可以自定义别名外,自身还提供了一些内置别名,具体如下表所示: