Mybatis学习之SqlMapConfig.xml

本文详细解析MyBatis核心配置文件SqlMapConfig.xml的各部分功能,包括属性配置、类型别名、映射器等关键组件,以及如何通过properties文件进行配置热插拔。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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只能根据包名找到所有的映射器的类名和位置, 不知道配置文件的名称和位置。只能查找同名同路径的配置文件

为了在Windows安装ADB工具,你可以按照以下步骤进行操作: 1. 首先,下载ADB工具包并解压缩到你自定义的安装目录。你可以选择将其解压缩到任何你喜欢的位置。 2. 打开运行窗口,可以通过按下Win+R键来快速打开。在运行窗口中输入"sysdm.cpl"并按下回车键。 3. 在系统属性窗口中,选择"高级"选项卡,然后点击"环境变量"按钮。 4. 在环境变量窗口中,选择"系统变量"部分,并找到名为"Path"的变量。点击"编辑"按钮。 5. 在编辑环境变量窗口中,点击"新建"按钮,并将ADB工具的安装路径添加到新建的路径中。确保路径正确无误后,点击"确定"按钮。 6. 返回到桌面,打开命令提示符窗口。你可以通过按下Win+R键,然后输入"cmd"并按下回车键来快速打开命令提示符窗口。 7. 在命令提示符窗口中,输入"adb version"命令来验证ADB工具是否成功安装。如果显示版本信息,则表示安装成功。 这样,你就成功在Windows安装ADB工具。你可以使用ADB工具来执行各种操作,如枚举设备、进入/退出ADB终端、文件传输、运行命令、查看系统日志等。具体的操作方法可以参考ADB工具的官方文档或其他相关教程。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* [windows环境安装adb驱动](https://blog.youkuaiyun.com/zx54633089/article/details/128533343)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [Windows安装使用ADB简单易懂教程](https://blog.youkuaiyun.com/m0_37777700/article/details/129836351)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值