mybatis主配置文件详解?今天的付出,一定会换来明天的幸福,接下来我们就来聊聊关于mybatis主配置文件详解?以下内容大家不妨参考一二希望能帮到您!
mybatis主配置文件详解
今天的付出,一定会换来明天的幸福。
Mybatis相关源码及文档:
Mybatis官方技术文档 http://mybatis.org/mybatis-3/zh/index.html
Mybatis源码包下载:http://github.com/mybatis/mybatis-3/releases
所有代码及笔记gitee路径:http://gitee.com/simple-coding/all-demo-code.git
要想进行MyBatis开发,Mybatis运行环境是必不可少的,那就需要配置Mybatis的主配置文件,其配置如下:
configuration(配置)
下面我们列举下最常用的配置。其他配置可以参考官网文档。
1.属性(properties)
properties属性我们常用来引入数据库的连接配置信息。
<properties resource="jdbc.properties"/>
2.设置(settings)
设置(settings)是Mybatis运行环境的全局常量配置。如我们前面日志讲解部分,指定特定日志实现
<setting name="logImpl" value="STDOUT_LOGGING"/>
或者配置是否开启驼峰命名自动映射。
<setting name="mapUnderscoreToCamelCase" value="true"/>
3.类型别名(typeAliases)
类型别名可为 Java 类型设置一个缩写名字。 它仅用于 XML 配置,意在降低冗余的全限定类名书写。比如mapper配置传参就可以使用定义好的别名。
<typeAliases>
<!---包中的所有类的简单类名指定为别名-->
<package name="com.mybatis.abc.mybatis.bean"/>
<!-- 对实体类逐一定义
<typeAlias type="com.mybatis.abc.mybatis.bean.Student" alias="Student"/>
-->
</typeAliases>
4.environments(环境配置)
environment的id属性为当前定义的运行环境
<!--使用id为myDeveloper的运行环境-->
<environments default="myDeveloper">
<environment id="myDeveloper">
</environment>
<environment id="myDeveloper1">
</environment>
<environment id="myDeveloper2">
</environment>
</environments>
<!-- 配置数据库的事务 - type:指定事务的类型
JDBC:表示使用数据库连接的事务管理(rollback, commit),
默认情况下Mybatis的提交为手动提交;
MANAGED:表示事务是由容器管理的(spring是容器,能够管理事务)。 -->
<transactionManager type="JDBC" />
<!-- 配置数据源 - type:数据源的类型
POOLED:表示连接池
UNPOOLED:不使用连接池,每次的数据库的操作是新建连接,使用后关闭连接
JNDI:java 命名和目录服务。 表示外部的连接池。-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://127.0.0.1:3366/test"/>
<property name="username" value="root"/>
<property name="password" value="root"/>
</dataSource>
注:如果引入了DB属性配置文件,此处value的值也可以写成${属性文件中的key值}
5.mappers(映射器)第一种:<mapper resource="XXX"/>
<mappers>
<mapper resource="com/mybatis/abc/mybatis/dao/studentMapper.xml"/>
<mapper resource="com/mybatis/abc/mybatis/dao/studentMapper2.xml"/>
</mappers>
第二种:<mapper url="XXX"/>
- 从本地磁盘加载映射文件;
需要对实体类逐一映射
<mappers>
<mapper url="file:///D:\studentMapper.xml"/>
</mappers>
第三种:<mapper class="XXX"/>
使用规范:
- mapper位置:DAO接口与映射文件在同一路径下。
- mapper命名:接口名与映射文件名相同。
- mapper的命名空间:映射文件命名空间为接口全类名的情况.
<mappers>
<!--一个mapper对应一个配置,多个mapper需要逐一配置-->
<mapper class="com.mybatis.abc.mybatis.dao.StudentDao"/>
</mappers>
例如mapper配置文件:StudentDao.xml中的namespace命名:
<mapper namespace="com.mybatis.abc.mybatis.dao.StudentDao">
<insert id="saveStudent" >
insert into student(sname,sno) values(#{sname},#{sno})
</insert>
/mapper>
第四种:<package name="XXX"/>
name指定的是包名。使用规范如下
- mapper适用范围:可用于mapper的动态代理(后面单独讲)
- mapper位置:DAO接口与映射文件在同一路径下。
- mapper命名:接口名与映射文件名相同。
- mapper命名空间:映射文件命名空间(namespace)为接口全类名的情况.
<mappers>
<package name="com.mybatis.abc.mybatis.dao"/>
</mappers>
看了上边的mapper的配置,你是否会有疑问:在与spring或者springboot整合中,也没见到mapper.xml必须放在与Dao同名的包中啊?这是怎么回事呢?其实这是中间包整合封装的结果,不妨你去看一下mybatis-spring整合时是怎么加载配置文件的。