mybaitis的配置文件
在mybatis的学习中,了解到mybatis的配置文件config.xml(文件名可以随便起)有多种书写方法。下面说明一些配置文件的一些标签的使用,或者是不同的书写方法。
配置文件config.xml的组成
XML 配置文件中包含了对 MyBatis 系统的核心设置,包含获取数据库连接实例的数据源(DataSource)和决定事务作用域和控制方式的事务管理器(TransactionManager)。 这里先给出一个简单的示例:
<?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="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="org/mybatis/example/BlogMapper.xml"/>
</mappers>
</configuration>
主要组成部分是XML 头部的声明和一组configuration标签。configuration标签中有environments元素和mappers元素。
XML 头部的声明,它用来验证 XML 文档正确性。
environment 元素体中包含了事务管理和连接池的配置。
mappers 元素则是包含一组映射器(mapper),这些映射器的 XML 映射文件包含了 SQL 代码和映射定义信息。
使用时,主要的更改是:
- 将连接池中的变量
${driver}、${url}、${username}、${password}
改成需要连接的数据库的参数。 - mapper元素中的resource的值指向自己设计好的dao的配置文件。
如:最基本最简单的配置如下:
<?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/eesy_mybatis"/>
<property name="username" value="root"/>
<property name="password" value=""/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="top/hongliankeji/dao/IUserDao.xml"/>
</mappers>
</configuration>
properties标签
配置数据库的信息可以采用内部配置
或者外部连接配置文件
的方法。
第一种内部配置方法:不使用变量
如上面所说的更改连接池中的变量${driver}、${url}、${username}、${password}
,改为真实的可联通的数据库的信息即可。如:
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/eesy_mybatis"/>
<property name="username" value="root"/>
<property name="password" value=""/>
</dataSource>
第二种内部配置方法:properties配置好变量
配置properties标签,将四个变量的值配置好,连接地址池时,直接使用变量。如:
<configuration>
<!--配置properties-->
<properties>
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/eesy_mybatis"/>
<property name="username" value="root"/>
<property name="password" value=""/>
</properties>
<!--配置环境-->
<environments default="mysql">
<environment id="mysql">
<transactionManager type="JDBC"/>
<!--配置连接池-->
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="top/hongliankeji/dao/IUserDao.xml"/>
</mappers>
</configuration>
外部连接配置文件
连接配置文件:首先,创建一个外部文件,内容是连接池的信息,如:创建一个jdbcConfig.properties文件,内容如下:
properties标签有两个属性resource和url。均是用来指定外部文件位置的。
resource属性
resource是按照类路径的写法来写的,外部文件必须存在类路径下。如:将外部文件jdbcConfig.properties文件放在resources目录下。
配置文件config.xml中使用resource属性引入外部文件
<configuration>
<!--配置properties-->
<properties resource="jdbcConfig.properties"></properties>
<!--配置环境-->
<environments default="mysql">
<environment id="mysql">
<transactionManager type="JDBC"/>
<!--配置连接池-->
<dataSource type="POOLED">
<property name="driver" value="${driver}"/>
<property name="url" value="${url}"/>
<property name="username" value="${username}"/>
<property name="password" value="${password}"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="top/hongliankeji/dao/IUserDao.xml"/>
</mappers>
</configuration>
url属性
url是按照URL写法来指定地址的,可以存放在任何地方,只要url可以访问得到即可。格式:file:/// + 外部文件的地址
如:
<properties url="file:///C:\Users\林宏连\Desktop\jdbc\jdbcConfig.properties"></properties>
注意
- 路径中,尽量不要有中文
typeAlias标签
在项目设计时,我们通常会让数据库中的列名
与后端实体类的属性名
是保持一致的,包括大小写也一致。如果不一致,可以会造成无法正常进行数据交互。这时,我们需要使用typeAlias标签来设置实体类的别名
,让两者一一对应。
<typeAliases>
<typeAlias type="top.hongliankeji.domain.User" alias="user"></typeAlias>
</typeAliases>
将domain中的User设置别名为user。type属性的值必须为全限定名(包+类名)。
typeAlias标签只可以一个一个实体类地设置别名,如果实体类较多,工作量非常大。这是,可以使用package标签进行设置别名。
package标签设置实体类的包的别名,使得改包下的实体类都会注册别名,类名就是别名,不区分大小写。
<typeAliases>
<!--<typeAlias type="top.hongliankeji.domain.User" alias="user"></typeAlias>-->
<package name="top.hongliankeji.domain"></package>
</typeAliases>
注意
mappers标签中也有package标签,与typeAliases标签中的package标签还是有点不同的。
mappers标签中的package标签用于指定dao接口所在的包,当指定后不需要写mapper 、resource、class了。
<mappers>
<!--<mapper resource="top/hongliankeji/dao/IUserDao.xml"/>-->
<!--<mapper class="top.hongliankeji.dao.IUserDao"></mapper>-->
<package name="top.hongliankeji.dao"></package>
</mappers>