Mybatis配置文件configuration讲解

来源:互联网 发布:淘宝买家留言写什么好 编辑:程序博客网 时间:2024/05/20 18:44

(一)前言

mybatis配置文件中为根节点,其有一系列的子节点,主要使用的有:properties、typeAliases、typeHandlers、environments、databaseIdProvider、mappers。

注意:各子元素的配置是有顺序的,且分别最多只能配置一个子元素,如果没有按照固定顺序配置或者某个子元素配置对此则会报错,错误提示如下:

元素类型为 “configuration” 的内容必须匹配 (properties?,settings?,typeAliases?,typeHandlers?,objectFactory?,
databaseIdProvider?,mappers?)”;

(二)properties元素

properties作用:配置或引入key/value形式值,供配置文件其他地方使用,如供连接池属性配置。

properties的使用有三种,分别为外部引入,property节点配置,参数化配置

第一种:外部引入

格式如下 其中resource为引入classpath下的属性配置文件,也可通过url属性引入,url指文件的URL格式路径

<properties url="file:///D:/neusoftProject/study/mybatis/src/dbconfig.properties"/>

第二种:property

<properties>  <property name="username" value="dcp_sis"/>  <property name="password" value="neusoft"/>  <property name="driver" value="oracle.jdbc.driver.OracleDriver"/>  <property name="url" value="jdbc:oracle:thin:@localhost:1521:orcl"/>  </properties>

第三种:参数化配置

构建SqlSessionFactory时可以当做properties参数传入

Properties properties = new Properties();properties.put("driver", "oracle.jdbc.driver.OracleDriver");properties.put("url", "jdbc:oracle:thin:@localhost:1521:orcl");properties.put("username", "dcp_sis");properties.put("password", "neusoft");sqlSessionFactory = new SqlSessionFactoryBuilder()    .build(Resources.getResourceAsStream(resource),properties);

注意:上面三种方式如果同时配置了多种方式,则相同属性实际使用会覆盖属性值,三种方法覆盖原则为:
参数化配置 –> 外部引入 –> property节点配置 –>代表覆盖,即如果同时配置了以参数化配置的为准。

(三)typeAliases元素

typeAliases元素:见名知义,就是给类型起别名的(只能是Type,即类、接口或者系统默认设置的基本类型别名),主要作用就是简写Mapper映射文件中参数类型和结果集类型。

<typeAliases>    <!-- 给实体类起别名  -->    <typeAlias alias="user" type="com.pengmm.entity.User"/>    <!-- 给接口起别名  -->    <typeAlias alias="userMapper" type="com.pengmm.mapper.UserMapper"/>    <!-- 通过定义包名起别名:该包下的所有类(匿名类、接口、成员类除外,因为注册没有意义)都会默认起别名,        规则为Bean的首字母小写的非限定类名来作为它的别名  -->    <package  name="com.pengmm.entity" />  </typeAliases>

给javaBean起别名有二种方式

方式一:typeAlias

直接在配置文件中通过typeAlias节点配置

<typeAliases>    <!-- 给实体类起别名  -->    <typeAlias alias="user" type="com.pengmm.entity.User"/>  </typeAliases>

方式二:package

在配置文件中通过package节点配置

<typeAliases>       <package  name="com.pengmm.entity" /></typeAliases>

**注意:
① 通过定义包名起别名:该包及子包下的所有类(匿名类、接口、成员类除外,因为注册没有意义)都会默认起别名,规则为Bean的首字母小写的非限定类名来作为它的别名,如果有@Alias注解,则以注解值为准。
②两种方式作用范围:如果别名和类型都相同,则后面定义的会覆盖前面的定义(别名解析存储为HashMap)
③同一个类型可以同时定义多个别名,但一个别名不同对应多个不同的类型**

0 0
原创粉丝点击