mybatis配置文件中为根节点,其有一系列的子节点,主要使用的有:properties、typeAliases、typeHandlers、environments、databaseIdProvider、mappers。
注意:各子元素的配置是有顺序的,且分别最多只能配置一个子元素,如果没有按照固定顺序配置或者某个子元素配置对此则会报错,错误提示如下:
元素类型为 “configuration” 的内容必须匹配 (properties?,settings?,typeAliases?,typeHandlers?,objectFactory?,
databaseIdProvider?,mappers?)”;
properties作用:配置或引入key/value形式值,供配置文件其他地方使用,如供连接池属性配置。
properties的使用有三种,分别为外部引入,property节点配置,参数化配置
格式如下 其中resource为引入classpath下的属性配置文件,也可通过url属性引入,url指文件的URL格式路径
<properties url="file:///D:/neusoftProject/study/mybatis/src/dbconfig.properties"/>
<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元素:见名知义,就是给类型起别名的(只能是Type,即类、接口或者系统默认设置的基本类型别名),主要作用就是简写Mapper映射文件中参数类型和结果集类型。
<typeAliases>
<typeAlias alias="user" type="com.pengmm.entity.User"/>
<typeAlias alias="userMapper" type="com.pengmm.mapper.UserMapper"/>
<package name="com.pengmm.entity" />
typeAliases>
给javaBean起别名有二种方式
直接在配置文件中通过typeAlias节点配置
<typeAliases>
<typeAlias alias="user" type="com.pengmm.entity.User"/>
typeAliases>
在配置文件中通过package节点配置
<typeAliases>
<package name="com.pengmm.entity" />
typeAliases>
**注意:
① 通过定义包名起别名:该包及子包下的所有类(匿名类、接口、成员类除外,因为注册没有意义)都会默认起别名,规则为Bean的首字母小写的非限定类名来作为它的别名,如果有@Alias注解,则以注解值为准。
②两种方式作用范围:如果别名和类型都相同,则后面定义的会覆盖前面的定义(别名解析存储为HashMap)
③同一个类型可以同时定义多个别名,但一个别名不同对应多个不同的类型**