mybatis笔记-6、confXML配置文件详解

本文详细解析了MyBatis配置文件的各个组成部分,包括属性、全局参数、类型别名、类型处理器、对象工厂、插件、环境配置、事务管理、数据源及映射器等内容,为开发者提供全面的配置指南。

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

# conf.xml配置文件


Contents


本文主要讲解SqlMapConfig配置文件,基本是对此文档的中文翻译:http://www.mybatis.org/mybatis-3/configuration.html

SqlMapConfig.xml中配置的内容和顺序如下

  • properties(属性)
  • settings(全局配置参数)
  • typeAliases(类型别名)
  • typeHandlers(类型处理器)
  • objectFactory(对象工厂)
  • plugins(插件)
  • environments(环境集合属性对象)
    • environment(环境子属性对象)
      • transactionManager(事务管理)
      • dataSource(数据源)
  • mappers(映射器)

(注:粗体是重点,斜体不常用)

1、properties(属性)

将数据库连接参数单独配置在db.properties中,只需要在SqlMapConfig.xml中加载db.properties的属性值。在SqlMapConfig.xml中就不需要对数据库连接参数硬编码。

将数据库连接参数只配置在db.properties中。这样做的原因:方便对参数进行统一管理,其它xml可以引用该db.properties。

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://120.25.162.238:3306/mybatis001?characterEncoding=utf-8
jdbc.username=root
jdbc.password=123

在sqlMapConfig.xml加载属性文件:

<!-- 加载properties文件-->
<properties resource="db.properties">
        <!--properties中也还可以配置一些属性名和属性值,但可能被src文件的内容覆盖  -->
        <!-- <property name="jdbc.driver" value=""/> -->
</properties>

<!--利用properties文件的内容配置property标签环境-->
<!-- 和spring整合后 environments配置将废除-->
<environments default="development">
    <environment id="development">
        <!-- 事务提交方式:
				JDBC:利用JDBC方式处理事务(commit  rollback  close)
				MANAGED:将事务交由 其他组件去托管(spring ,jobss),默认 会关闭连接。
			
		<transactionManager type="MANAGED"/>
    	<property name="closeConnection" value="false"/>
    	-->
        <transactionManager type="JDBC" />
        <!-- 数据源类型:(数据库连接池)
      	UNPOOLED:传统的JDBC模式(每次访问数据库,均需要 打开、关闭等数据库操作,但是 打开、关闭数据库是比较消耗性能的)
      	POOLED:使用数据库连接池
      	JNDI:从tomcat中获取一个内置的数据库连接池 (数据库连接池-数据源  )
     	-->
        <dataSource type="POOLED">
            <!-- 配置数据库信息 -->
            <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>

注意:

如果property在多个地方定义,则MyBatis 将按照下面的顺序(优先级)来加载属性:

  • properties元素体内定义的属性首先被读取。
  • 然后会读取properties元素中resource或url加载的属性,它会覆盖已读取的同名属性。
  • 最后读取parameterType传递的属性,它会覆盖已读取的同名属性。

建议:

  • 不要在properties元素体内添加任何属性值,只将属性值定义在properties文件中。
  • 在properties文件中定义属性名要有一定的特殊性,如:XXXXX.XXXXX.XXXX

2、settings(全局参数配置)

mybatis框架在运行时可以调整一些运行参数。比如:开启二级缓存、开启延迟加载…

全局参数将会影响mybatis的运行行为。具体参考官网:

http://www.mybatis.org/mybatis-3/configuration.html#settings

3、typeAliases(类型别名)(重点)

需求:在mapper.xml中,定义很多的statement,statement需要parameterType指定输入参数的类型、需要resultType指定输出结果的映射类型。

如果在指定类型时输入类型全路径,不方便进行开发,可以针对parameterTyperesultType指定的类型定义一些别名,在mapper.xml中通过别名定义,方便开发。别名是java类的缩写。

别名可以分为默认别名、单个类的别名和整个模块的别名

别名的分类:

  • mybatis默认别名
  • 自定义单个别名定义
  • 自定义批量定义别名(常用)
<!-- 别名定义 -->
<typeAliases>
    <!-- 针对单个别名定义
    type:类型的路径
    alias:别名 -->
    <typeAlias type="cn.itcast.mybatis.po.User" alias="user"/>
    
    <!-- 批量别名定义
    指定包名,mybatis自动扫描【包中】的po类,自动定义别名,别名就是类名(首字母大写或小写都可以) user User 一般都小写了-->
    <package name="com.iot.mybatis.po"/>

</typeAliases>

也可以使用注解的方式声明别名:

@Alias("author")
public class Author {
    ...
}

默认别名表:

http://www.mybatis.org/mybatis-3/configuration.html#typeAliases

默认别名映射的类型
_bytebyte
_longlong
_shortshort
_intint
_integerint
_doubledouble
_floatfloat
_booleanboolean
stringString
byteByte
longLong
shortShort
intInteger
integerInteger
doubleDouble
floatFloat
booleanBoolean
dateDate
decimalBigDecimal
bigdecimalBigDecimal

4、typeHandlers(类型处理器)

mybatis中通过typeHandlers完成jdbc类型和java类型的转换。例如:

<select id="findUserById" parameterType="int" resultType="user">
		select * from user where id = #{id}
</select>

mybatis自带的类型处理器基本上满足日常需求,不需要单独定义。

mybatis支持类型处理器http://www.mybatis.org/mybatis-3/configuration.html#typeHandlers

类型处理器Java类型JDBC类型
BooleanTypeHandlerBoolean,boolean任何兼容的布尔值
ByteTypeHandlerByte,byte任何兼容的数字或字节类型
ShortTypeHandlerShort,short任何兼容的数字或短整型
IntegerTypeHandlerInteger,int任何兼容的数字和整型
LongTypeHandlerLong,long任何兼容的数字或长整型
FloatTypeHandlerFloat,float任何兼容的数字或单精度浮点型
DoubleTypeHandlerDouble,double任何兼容的数字或双精度浮点型
BigDecimalTypeHandlerBigDecimal任何兼容的数字或十进制小数类型
StringTypeHandlerStringCHAR和VARCHAR类型
ClobTypeHandlerStringCLOB和LONGVARCHAR类型
NStringTypeHandlerStringNVARCHAR和NCHAR类型
NClobTypeHandlerStringNCLOB类型
ByteArrayTypeHandlerbyte[]任何兼容的字节流类型
BlobTypeHandlerbyte[]BLOB和LONGVARBINARY类型
DateTypeHandlerDate(java.util)TIMESTAMP类型
DateOnlyTypeHandlerDate(java.util)DATE类型
TimeOnlyTypeHandlerDate(java.util)TIME类型
SqlTimestampTypeHandlerTimestamp(java.sql)TIMESTAMP类型
SqlDateTypeHandlerDate(java.sql)DATE类型
SqlTimeTypeHandlerTime(java.sql)TIME类型
ObjectTypeHandler任意其他或未指定类型
EnumTypeHandlerEnumeration类型VARCHAR-任何兼容的字符串类型,作为代码存储(而不是索引)

你也可以重写类型处理器或者新建你自己的非标准类型。需要继承BaseTypeHandler这个类,实现 TypeHandler 这个接口。

5、mappers(映射配置)

  • 通过resource加载单个映射文件
<!--通过resource方法一次加载一个映射文件 -->
<mappers>
  <mapper resource="org/mybatis/builder/AuthorMapper.xml"/>
  <mapper resource="org/mybatis/builder/BlogMapper.xml"/>
  <mapper resource="mapper/UserMapper.xml"/>
</mappers>
  • 通过mapper接口加载单个mapper
 <!-- 通过mapper接口加载单个 映射文件
        遵循一些规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录中
        上边规范的前提是:使用的是mapper代理方法
         -->
<mappers>
  <mapper class="com.iot.mybatis.mapper.UserMapper"/> 
  <mapper class="org.mybatis.builder.AuthorMapper"/>
  <mapper class="org.mybatis.builder.BlogMapper"/>
  <mapper class="org.mybatis.builder.PostMapper"/>
</mappers>

目录示例

com.iot.mybatis.mapper------------------package包
           |----UserMapper.java
           |----UserMapper.xml
  • 批量加载mapper(推荐使用)
<!-- 批量加载mapper
		指定mapper接口的包名,mybatis自动扫描包下边所有mapper接口进行加载
		遵循一些规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录 中
		上边规范的前提是:使用的是mapper代理方法
		 -->
<mappers>
  <package name="com.iot.mybatis.mapper"/>
  <package name="org.mybatis.builder"/>
</mappers>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值