详解mybatis配置文件
前言
本文将较为详细的阐述mybatis的配置文件
一、Maven依赖
mybatis所需依赖:
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.5</version>
</dependency>
mysql所需依赖:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
二、SqlMapConfig.xml(主配置文件)
基本配置
- 使用mybatis最基本的配置,主要包括两个部分:环境配置和注册映射文件配置。 其中环境配置主要填写一些连接数据库需要的属性。
- mappers标签配置的则是映射你的sql语句xml配置文件。
使用xml文件可以使用mapper 的resouce的属性进行配置
<mappers>
<mapper resource="com/itheima/dao/IUserDao.xml"></mapper>
</mappers>
使用注解替代xml文件可以使用mapper 的class的属性进行配置
<mappers>
<mapper class="com.itheima.dao.IUserDao"/>
</mappers>
或者使用package标签
<mappers>
<!--<mapper resource="com/itheima/dao/IUserDao.xml"></mapper>-->
<!-- package标签用于指定dao接口所在的包,当指定完成后就不需要再写mapper -->
<package name="com.itheima.dao"/>
</mappers>
完整配置如下:
<?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="mysql">
<!-- 配置mysql的环境-->
<environment id="mysql">
<!-- 配置事务 -->
<transactionManager type="JDBC"></transactionManager>
<!--配置连接池-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"></property>
<property name="url" value="jdbc:mysql://localhost:3306/eesy_mybatis"></property>
<property name="username" value="root"></property>
<property name="password" value="1234"></property>
</dataSource>
</environment>
</environments>
<!-- 配置映射文件的位置 -->
<mappers>
<!--<mapper resource="com/itheima/dao/IUserDao.xml"></mapper>-->
<!-- package标签用于指定dao接口所在的包,当指定完成后就不需要再写mapper -->
<package name="com.itheima.dao"/>
</mappers>
</configuration>
额外配置
配置别名
当配置了别名后在mappers配置文件中配置resultType时可以直接写上别名而不是全限定类名。
比如此处配置别名后只需写user,而不用写com.itheima.domain.User
并且别名时不区分大小写的,你可以写user也可以写成UsEr
具体配置:
<typeAliases>
<!--<typeAlias type="com.itheima.domain.User" alias="user"></typeAlias>-->
<!-- 用于指定要配置别名的包,当指定之后,该包下的实体类都会注册别名,并且类名就是别名,不再区分大小写 -->
<package name="com.itheima.domain"/>
</typeAliases>
引入属性文件进行配置
- mybatis除了可以直接用property标签配置数据库连接信息外,也可以用properties标签进行配置。
- 通过properties标签的resource属性(或url属性)引入配置文件 然后properties标签用${}进行取值。
具体配置:
<properties resource="jdbcConfig.properties"></properties>
或url方式
<properties url="file:///D:/project/day02_eesy_02mybatisDao/src/main/resources/jdbcConfig.properties"></properties>
取值方式:
<!--配置环境-->
<environments default="mysql">
<!-- 配置mysql的环境-->
<environment id="mysql">
<!-- 配置事务 -->
<transactionManager type="JDBC"></transactionManager>
<!--配置连接池-->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"></property>
<property name="url" value="${jdbc.url}"></property>
<property name="username" value="${jdbc.username}"></property>
<property name="password" value="${jdbc.password}"></property>
</dataSource>
</environment>
</environments>
jdbcConfig.properties文件内容:
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/eesy_mybatis
jdbc.username=root
jdbc.password=1234
这里要注意一下 ${}取值时的属性名要和jdbcConfig.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>
<!-- 可以在标签内部配置连接数据库的信息,也可以通过属性引用外部配置文件信息
resource属性:常用的
用于指定配置文件的位置,是按照类路径的写法来写,并且必须存在于类路径下。
url属性:
要求按照Url的写法来写地址
协议 主机 端口 URI
-->
<properties resource="jdbcConfig.properties">
<!-- <properties url="file:///D:/project/day02_eesy_02mybatisDao/src/main/resources/jdbcConfig.properties">-->
<!-- <property name="driver" value="com.mysql.jdbc.Driver"></property>-->
<!-- <property name="url" value="jdbc:mysql://localhost:3306/eesy_mybatis"></property>-->
<!-- <property name="username" value="root"></property>-->
<!-- <property name="password" value="0000"></property>-->
</properties>
<!-- 使用typeAliases配置别名,它只能配置domain中类的别名
type:实体类全限定类名
alias:属性指定别名
使用了别名后不再区分大小写
-->
<typeAliases>
<!--<typeAlias type="com.itheima.domain.User" alias="user"></typeAlias>-->
<!-- 用于指定要配置别名的包,当指定之后,该包下的实体类都会注册别名,并且类名就是别名,不再区分大小写 -->
<package name="com.itheima.domain"/>
</typeAliases>
<!--配置环境-->
<environments default="mysql">
<!-- 配置mysql的环境-->
<environment id="mysql">
<!-- 配置事务 -->
<transactionManager type="JDBC"></transactionManager>
<!--配置连接池-->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driver}"></property>
<property name="url" value="${jdbc.url}"></property>
<property name="username" value="${jdbc.username}"></property>
<property name="password" value="${jdbc.password}"></property>
</dataSource>
</environment>
</environments>
<!-- 配置映射文件的位置 -->
<mappers>
<!--<mapper resource="com/itheima/dao/IUserDao.xml"></mapper>-->
<!-- package标签用于指定dao接口所在的包,当指定完成后就不需要再写mapper -->
<package name="com.itheima.dao"/>
</mappers>
</configuration>