Mybatis学习之SqlMapConfig.xml

SqlMapConfig.xml中配置的内容和顺序如下:
properties(属性) ★
settings(全局配置参数)
typeAliases(类型别名) ★
typeHandlers(类型处理器)
objectFactory(对象工厂)
plugins(插件)
environments(环境集合属性对象)
environment(环境子属性对象)
transactionManager(事务管理)
dataSource(数据源)
mappers(映射器) ★

1.properties属性
可以在SqlMapConfig.xml中引入properties文件的配置信息,实现配置的热插拔效果。例如:
1.1 准备jdbc.properties放在resources下

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///mybatis63
jdbc.username=root
jdbc.password=root

1.2 在SqlMapConfig.xml中引入jdbc.properties

<configuration>
    <!-- 
 	properties标签:
		resource属性:properties资源文件的路径,从类加载路径下开始查找
		url属性:url地址
	-->
    <properties resource="jdbc.properties"/>

    <environments default="mysql_mybatis">
        <environment id="mysql_mybatis">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <!-- 使用${OGNL}表达式,获取从properties中得到的配置信息 -->
                <property name="driver" value="${jdbc.driver}"/>
                <property name="url" value="${jdbc.url}"/>
                <property name="username" value="${jdbc.username}"/>
                <property name="password" value="${jdbc.password}"/>
            </dataSource>
        </environment>
    </environments>

    <mappers>
        <mapper resource="com/itheima/dao/UserDao.xml"/>
    </mappers>
</configuration>

1.3 注意加载顺序
假如:
有jdbc.properties配置文件在resource下

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///mybatis49
jdbc.username=root
jdbc.password=root

SqlMapConfig.xml配置如下:

<properties resurce="jdbc.properties">
	<property name="jdbc.username" value="root"/>
    <property name="jdbc.password" value="123456"/>
</properties>

那么:
​ Mybatis会首先加载xml配置文件里的的property标签,得到了jdbc.username和jdbc.password
​ 然后再加载外部jdbc.properties配置文件,覆盖掉刚刚得到的jdbc.username和jdbc.password的值
总结:
​ 后加载覆盖先加载,外部properties配置文件的优先级,要高于xml里property标签的配置

2. typeAlias类型别名

​ 在映射配置文件中,我们要写大量的parameterType和resultType,如果全部都写全限定类名的话,代码就太过冗余,开发不方便。可以使用类型别名来解决这个问题。

​ 类型别名:是Mybatis为Java类型设置的一个短名称,目的仅仅是为了减少冗余。

​ 注意:类型别名不区分大小写

2.1 内置别名

Mybatis提供的别名有:

别名映射的类型
_bytebyte
_longlong
_shortshort
_intint
_integerint
_doubledouble
_floatfloat
_booleanboolean
stringString
byteByte
longLong
shortShort
intInteger
integerInteger
doubleDouble
floatFloat
booleanBoolean
dateDate
decimalBigDecimal
bigdecimalBigDecimal
objectObject
mapMap
hashmapHashMap
listList
arraylistArrayList
collectionCollection
iteratorIterator
2.2 自定义类型别名

​ 自己定义的JavaBean,全限定类名太长,可以自定义类型别名。

2.2.1 给一个类指定别名
1) 在SqlMapConfig.xml中配置一个类的别名
    <typeAliases>
        <!-- type:要指定别名的全限定类名    alias:别名 -->
        <typeAlias type="com.itheima.domain.QueryVO" alias="vo"/>
        <typeAlias type="com.itheima.domain.User" alias="user"/>
        <typeAlias type="com.itheima.domain.User2" alias="user2"/>
    </typeAliases>
2) 在映射配置文件中使用类型别名
<!-- parameterType使用别名:vo, resultType使用别名:user -->    
<select id="findByVO" parameterType="vo" resultType="user">
    select * from user where username like #{user.username}
</select>
2.2.2 指定一个包名
1) 在SqlMapConfig.xml中为一个package下所有类注册别名:类名即别名
<typeAliases>
    <!-- 把com.itheima.domain包下所有JavaBean都注册别名,类名即别名,不区分大小写 -->
    <package name="com.itheima.domain"/>
</typeAliases>
2) 在映射配置文件中使用类型别名
<!-- parameterType使用别名:queryvo, resultType使用别名:user -->    
<select id="findByVO" parameterType="queryvo" resultType="user">
    select * from user where username like #{user.username}
</select>

3. mappers映射器

用来配置映射器接口的配置文件位置,或者映射器接口的全限定类名

3.1 <mapper resource=""/>

用于指定映射配置文件xml的路径,支持xml开发方式,例如:

<mapper resource="com/itheima/dao/UserDao.xml"/>

注意:

​ 映射配置文件的名称,和映射器接口类名 可以不同

​ 映射配置文件的位置,和映射器接口位置 可以不同

配置了xml的路径,Mybatis就可以加载statement信息,并且根据namespace属性找到映射器

3.2 <mapper class=""/>

用于指定映射器接口的全限定类名,支持XML开发和注解开发,例如:

<mapper class="com.itheima.dao.UserDao"/>

如果是使用xml方式开发,那么要注意:

​ 映射配置文件的名称 要和 映射器接口的类名相同

​ 映射配置文件的位置 要和 映射器接口的位置相同

Mybatis只知道映射器的名称和位置,不知道配置文件的名称和位置。只能查找同名同路径的配置文件

3.3 <package name=""/>

用于自动注册指定包下所有的映射器接口,支持XML开发和注解开发,例如:

<package class="com.itheima.dao"/>

如果是使用XML方式开发,那么要注意:

​ 映射配置文件的名称 要和 映射器接口的类名相同

​ 映射配置文件的位置 要和 映射器接口的位置相同

Mybatis只能根据包名找到所有的映射器的类名和位置, 不知道配置文件的名称和位置。只能查找同名同路径的配置文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值