一、概述
二、properties属性
properties属性可以给系统配置一些运行参数,可以放在XML文件或者properties文件中,而不是放在java编码中,这样的好处在于方便参数修改,而不会引起代码的重新编译。一般而言,MyBatis提供了3中方式让我们使用properties,它们是:
- property子元素
- properties文件
- 程序代码传递
下面展开讨论。
2.1 property子元素
<?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>
<property name = "jdbc.driver" value = "com.mysql.jdbc.Driver">
<property name = "jdbc.url" value = "jdbc:mysql://localhost:3306/ssm">
<property name = "jdbc.name" value = "root">
<property name = "jdbc.password" value = "123456">
</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.name}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/pjf/mybatis/mapper/hotelMapper.xml"></mapper>
</mappers>
</configuration>
如代码所示,现在properties中配置好jdbc连接数据库所需参数,然后在配置数据库连接时直接通关${参数名}调用值。
2.2使用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>
<!-- 1、mybatis使用properties来引入外部properties配置文件的内容
resource 引入类路径下资源
url 引入网络路径或磁盘路径下资源 -->
<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.name}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/pjf/mybatis/mapper/hotelMapper.xml"></mapper>
</mappers>
</configuration>
使用properties文件是一个比较普遍的方法,一方面这个文件十分简单,其逻辑就是键值对应,我们可以配置多个键值放在一个properties文件中,这些都是允许的,它方便日后维护。
jdbc.driver = com.mysql.jdbc.Driver
jdbc.url = jdbc:mysql://localhost:3306/ssm
jdbc.name = root
jdbc.password = 123456
配置文件内容如上所示。
2.3 使用程序传递方式传递参数
String resource = "mybatis-config.xml";
InputStream is;
inputStream in = Resources.getResourceAsStream("jdbc.propreties");
Properties props = new Properties();
props.load(in);
String username = props.getProperty("dataBase.username");
String password = props.getProperty("database.password");
// 解密用户和密码并在属性中重置
Props.put("dataBase.username", CodeUtils.decode(username));
Props.put("database.password", CodeUtils.decode(password));
is = Resources.getResourceAsStream(resource);
// 使用程序传递的方式覆盖原有的properties实行参数
SqlSessionFactory = new SqlSessionFactoryBuilder().build(is, props);
这种方式用来将加密过的账户密码解密后重新作为参数传递。
settings一般不怎么设置,用到了查文档。
三、typeAliase 别名
用于类的权限定名称很长,需要大量使用的时候,总写那么长的名称不方便。在MyBatis中允许定义一个简写来代表这个类,这就是别名,别名分为系统定义别名和自定义别名。在Mybaits中别名由类TypeAliasRegistry去定义。注意,在MyBatis中别名不区分大小写。
3.1 系统定义别名
3.2 自定义别名
可以直接根据权限定名定义
<TypeAliases><!-- 别名 -->
<TypeAlias alias = "role" type = "com.learn.ssm.chapter4.pojo.Role">
<TypeAlias alias = "user" type = "com.learn.ssm.chapter4.pojo.User">
</TypeAliases>
也可以直接通过包扫描
<TypeAliases><!-- 别名 -->
<package name = "com.learn.ssm.chater4.pojo"/>
</TypeAliases>
四、environments(运行环境)
在MyBatis中,运行环境主要的作用是配置数据库信息,它可以配置多个数据库,一般而言只需要配置其中的一个就可以了。
它下面又分为两个可配置的元素:事务管理器(TransactionManager)、数据源(DataSource)。在实际生活中,大部分会采用Spring
对数据源和数据库的事务进行管理。
运行环境配置如下:
<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.name}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment>
</environments>
五、引入映射器的方法
5.1 用文件路径引入映射器
<mappers>
<mapper resource = "com/learn/ssm/chapter4/mapper/roleMapper.xml"/>
</mappers>
5.2 用包名引入映射器
<mappers>
<package name = "com.learn.ssm.chapter4.mapper"/>
</mappers>
5.3 用类注册映入映射器
<mappers>
<mapper class="com.learn.ssm.chapter4.mapper.UserMapper"/>
<mapper class="com.learn.ssm.chapter4.mapper.RoleMapper"/>
<mappers>
5.4 用UserMapper.xml 引入映射器
<mappers>
<mapper>
url="file:///var/mappers/com/learn/ssm/chapter4/mapper/roleMapper.xml"
</mapper>
</mappers>