Mybatis xml配置

本文详细介绍了Mybatis的xml配置顺序,从外部数据源配置到动态加载,以及SqlSessionFactory的构建方法。重点讲解了Environment环境配置,包括数据源和事务管理器,以及不同参数对配置优先级的影响。同时,提到了typeAliases和typeHandlers的作用,前者用于减少类全名的冗余,后者负责Java类型与JDBC类型的转换。最后,讨论了mapper的配置,它是Mybatis的重要组成部分。

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

mybatis.cfg.xml配置顺序.

这里写图片描述

可以从外部导入配置 例如数据源配置文件

<properties resource="mysql.properties"></properties>

这里写图片描述

然后在<dataSource>里面进行动态加载

<dataSource type="POOLED">
            <!-- 可以动态加载  也可以直接配置
              <property name="driver" value="com.mysql.jdbc.Driver" />
               在      
             -->
                <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>

也可以把属性作为参数进行传递.

SqlSessionFactory build(Reader reader)—最常用的方法,直接配置好,直接读入使用


Environment environment=new Environment(id, transactionFactory, dataSource);
SqlSessionFactory build(Reader reader, String environment)—-把Environment分出来
Environment决定加载哪种环境,包括数据源和事务管理器。例如

<environments default="development">  
    <environment id="development">  
        <transactionManager type="JDBC"><dataSource type="POOLED"></environment>  
    ---------------------------------------------
    <environment id="pro">  
        <transactionManager type="EXTERNAL"><dataSource type="JNDI"></environment>  
</environments>  

当把environment当参数传入时,configuration会配置environment,如果没有这个参数,将会调用默认的environment.

<environments default="development">  
    <environment id="development">  `

SqlSessionFactory build(Reader reader, Properties properties)—
如果你调用了使用properties实例的方法,那么MyBatis就会加载那些properties(属性配置文件),并你在你配置中可使用它们。那些属性可以用${xxx}语法形式多次用在配置文件中。

这里写图片描述
通过方法参数传递的属性具有最高优先级,resource/url 属性中指定的配置文件次之,最低优先级的是 properties 属性中指定的属性。

在3.4.2版本后,可以为占位符 设置一个默认值,但是默认是关闭的.

<!--开启默认值--!>
<property name="org.apache.ibatis.parsing.PropertyParser.enable-default-value" value="true"/>
<properties resource="mysql.properties">
<!--使用 ":" 作为属性键    value="?:"--!>
 <property name="org.apache.ibatis.parsing.PropertyParser.default-value-separator" value="?:"/>
</properties>

<dataSource type="POOLED">
  <!-- .... -->

  <property name="username" value="${db:username?:ut_user}"/>
   <!--  也可以使用三目运算符--!>
  <property name="username" value="${username!= null ? username: 'ut_user'}"/>
</dataSource>

完整settings元素

<settings>
   <!--映射器缓存开关--!>
  <setting name="cacheEnabled" value="true"/>
  <!--设置关联对象加载的形态,此处为按需加载字段(加载字段由SQL指                             定),不会加载关联表的所有字段,以提高性能
     <setting name="aggressiveLazyLoading" value="true"/>
   --!>
   <!-- 查询时,关闭关联对象即时加载以提高性能--!>
  <setting name="lazyLoadingEnabled" value="true"/>
  <!--是否允许单一语句返回多结果集(需要兼容驱动)。 默认true--!>
  <setting name="multipleResultSetsEnabled" value="true"/>
  <!-- 允许使用列标签代替列名 --> 
  <setting name="useColumnLabel" value="true"/>
  <!--允许JDBC自动生成主键 开启强制生成主键--!>
  <setting name="useGeneratedKeys" value="false"/>
  <!--给予被嵌套的resultMap以字段-属性的映射支持--!>
  <setting name="autoMappingBehavior" value="PARTIAL"/>

  <setting name="autoMappingUnknownColumnBehavior" value="WARNING"/>
  <!--置默认的执行器。SIMPLE 就是普通的执行器;REUSE 执行器会重用预处理语句(prepared statements); BATCH 执行器将重用语句并执行批量更新。--!>
  <setting name="defaultExecutorType" value="SIMPLE"/>
   <!-- 数据库超过25秒仍未响应则超时 --> 
  <setting name="defaultStatementTimeout" value="25"/>
  <!--为驱动的结果集获取数量(fetchSize)设置一个提示值--!>
  <setting name="defaultFetchSize" value="100"/>
  <!--允许在嵌套语句中使用分页--!>
  <setting name="safeRowBoundsEnabled" value="false"/>
  <!--是否开启自动驼峰命名规则(camel case)映射 数据库A_USER-->java aUser--!>
  <setting name="mapUnderscoreToCamelCase" value="false"/>
  <!--本地缓存机制--!>
  <setting name="localCacheScope" value="SESSION"/>
  <!--为空值指定 JDBC 类型--!>
  <setting name="jdbcTypeForNull" value="OTHER"/>
  <!--指定哪个对象的方法触发一次延迟加载。--!>
  <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/>
</settings>

typeAliases

类型别名是为 Java 类型设置一个短的名字。它只和 XML 配置有关,存在的意义仅在于用来减少类完全限定名的冗余

<typeAliases>
  <typeAlias alias="User" type="com.kx.domain.User"/>
  <!--也可以指定一个包名,MyBatis 会在包名下面搜索需要的 Java Bean--!>
   <package name="domain.blog"/>
</typeAliases>
<!--
  <resultMap id="UserMapper"  type="com.kx.domain.User">
--!>
 <resultMap id="UserMapper"  type="User">

typeHandlers

java类型转为 JDBC类型 例如 java.lang.Boolean, boolean —>数据库兼容的 BOOLEAN

映射器(mappers)

<mappers>
  <mapper resource="org/mybatis/builder/AuthorMapper.xml"/>
  <mapper url="file:///var/mappers/AuthorMapper.xml"/>
 <mapper class="org.mybatis.builder.AuthorMapper"/>
 <!--加载包下面的所有接口--!>
 <package name="org.mybatis.builder"/>
</mappers>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值