Mybatis配置文件configuration讲解

(一)前言

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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值