Mybatis全局配置文件篇

目录

1、<properties>:在的里使用,引入配置文件

                             (.properties)标签,有俩个属性。

2、<mappers>:注册sql映射文件,或直接注册接口标签,注册sql映射文件的地方

3、<environments>:环境配置,mybatis可以配置多种环境 (如mysql,oracle)

                                     , 达到快速切换环境的效果。和一起

                                     使用, 缺一不可。

4、<databaseIdProvider>:加载不同的数据库,和一起使用,缺一

                                               不可。

                                               相当于下载软件

                                               相当于配置软件

5、<typeAliases>:别名总标签,以下标签都包含在此标签内,为类起别名,类的别名

                                  可以在sql映射文件中使用,在返回全类名处(resultType)改为别名。

6、<settings>:包含很多重要的,用来设置每一个设置项。

 


以下介绍的标签都是放在<configuration>目录下。

1、<properties>:在<environments>的<environment>里使用,引入配置文件

                             (.properties)标签,有俩个属性。

  •                   resource:引入类路径下的文件,如以.properties结尾的文件
  •                   url:引入网络路径或者磁盘路径下的文件

我们都知道配置文件使用键值对方式存储,即(键名=值)的存储方式,全局配置文件取出配置文件值使用<environment>的<dataSource>下面标签<property>  name属性设置要设置的数据库属性,value属性为${键名}

    <!-- 引入配置文件标签,有俩个属性。 
    	resource:引入类路径下的文件,如以.properties结尾的文件
                  	url:引入网络路径或者磁盘路径下的资源 -->
	<properties resource="dbconfig.properties"></properties>

2、<mappers>:注册sql映射文件,或直接注册接口标签,注册sql映射文件的地方

                      <mapper>:注册一个sql映射 

  •                                 resource:设置类路径下的sql映射文件路径 
  •                                                   如: mybatis/mapper/EmployeeMapper.xml(包名用" / "分割)
  •                                 url:设置网络路径或者磁盘路径下的sql映射文件路径 
  •                                                   如: file:///var/mappers/AuthorMapper.xml
	    <mappers>
	    	<mapper resource="包名/文件名.xml"/> 
	    </mappers>

 

  •                                  class:设置sql映射文件路径,也可以直接设置注册接口路径。(不注册sql映射文件,直接注册接口)
  •                                            1、注册接口有对应sql映射文件,映射文件名必须和接口同名,并且放在与接口同一目录下;
  •                                             2、注册接口没有对应sql映射文件,所有的sql都是利用注解写在接口上;
  •                                   推荐:
  •                                         比较重要的,复杂的Dao接口我们来写sql映射文件
  •                                         不重要,简单的Dao接口为了开发快速可以使用注解;

  不使用sql映射文件直接注册接口:

        <mappers>
            <mapper class="包名.类名"/>
        </mappers>

  没有sql映射文件的接口需要通过注册编写sql语句,如下:

package mybatis.dao;

import org.apache.ibatis.annotations.Select;

import mybatis.bean.Employee;

public interface EmployeeMapperAnnotation {
	@Select("select* from tb1_employee where id=#{id}")
	public Employee getEmpById(Integer id);
}

3、<environments>:环境配置,mybatis可以配置多种环境 (如mysql,oracle)

                                     , 达到快速切换环境的效果。和<databaseIdProvider>一起

                                     使用, 缺一不可。

  •                default:指定使用某种环境,使用哪个环境就写哪个环境的id值
  •                 <environment>:配置一个具体的环境信息;必须有两个标签;
  •                                id:当前环境的标识
  •                                <transactionManager>:事务管理器;
  •                                          type:事务管理器的类型,使用JDBC即可
  •                                <dataSource>:设置环境数据源;
  •                                          type:数据源类型;有三种值可选:
  •                                                 UNPOOLED:不使用数据库连接池
  •                                                 POOLED:使用数据库连接池
  •                                                 JNDI:JNDI方式
        <!--取出配置文件里的值方法:${键名}     键名一般自取    -->
    	<environments default="mysql">
		<environment id="mysql">
		<transactionManager type="JDBC"/>
			<dataSource type="POOLED">
				<property name="driver" value="${MyDriver}"/>
				<property name="url" value="${database}"/>
				<property name="username" value="${user}"/>
				<property name="password" value="${password}"/>
			</dataSource>
		</environment>
	</environments>

4、<databaseIdProvider>:加载不同的数据库,和<environments>一起使用,缺一

                                               不可。

                                               <databaseIdProvider>可以理解为下载软件,下载了不一

                                                                                     定配置使用

                                               <environments>可以理解为配置软件,需要先下载才能配

                                                                           置使用

	<databaseIdProvider type="DB_VENDOR">
	    <property name="数据库厂商的名字(如MySQL,Oracle,SQL Server)" value="数据库别名"/>
	</databaseIdProvider>

           接着我们需要在sql映射文件中的操作标签(如<select>)添加一个databaseId属性:

	<select id="getEmpById" resultType="com.atguigu.mybatis.bean.Employee"
		databaseId="数据库别名">
		select * from tbl_employee where id = #{id}
	</select>

5、<typeAliases>:别名总标签,以下标签都包含在此标签内,为类起别名,类的别名

                                  可以在sql映射文件中使用,在返回全类名处(resultType)改为别名。

  •       <typeAlias>:别名标签,可以为Java类取别名,注意:别名不区分大小写
  •                 type:被指定的类的全类名(即包含包名的类名);默认别名就是类名。
  •                 alias:给类指定新的别名
  •       <package>:给某个包下的所有类起一个默认别名(类名小写),当包下不同目录有同名类导致别名冲突可以使用
  •                             @Alias注解给类 起一个新别名,注解用法:@Alias("新别名")class 类名{.........}
  •                 name:指定包名

6、<settings>:包含很多重要的<setting>,<setting>用来设置每一个设置项。

  •                      name:设置项名
  •                      value:设置项取值

以下列表就是各种设置项的功能:

项名功能取值默认值
cacheEnabled全局地开启或关闭配置文件中的所有映射器已经配置的任何缓存。true | falsetrue
lazyLoadingEnabled延迟加载的全局开关。当开启时,所有关联对象都会延迟加载。 特定关联关系中可通过设置fetchType属性来覆盖该项的开关状态。true | falsefalse
aggressiveLazyLoading当开启时,任何方法的调用都会加载该对象的所有属性。否则,每个属性会按需加载(参考lazyLoadTriggerMethods).true | falsefalse (true in ≤3.4.1)
multipleResultSetsEnabled是否允许单一语句返回多结果集(需要兼容驱动)。true | falsetrue
useColumnLabel使用列标签代替列名。不同的驱动在这方面会有不同的表现, 具体可参考相关驱动文档或通过测试这两种不同的模式来观察所用驱动的结果。true | falsetrue
useGeneratedKeys允许 JDBC 支持自动生成主键,需要驱动兼容。 如果设置为 true 则这个设置强制使用自动生成主键,尽管一些驱动不能兼容但仍可正常工作(比如 Derby)。true | falseFalse
autoMappingBehavior指定 MyBatis 应如何自动映射列到字段或属性。 NONE 表示取消自动映射;PARTIAL 只会自动映射没有定义嵌套结果集映射的结果集。 FULL 会自动映射任意复杂的结果集(无论是否嵌套)。NONE, PARTIAL, FULLPARTIAL
autoMappingUnknownColumnBehavior指定发现自动映射目标未知列(或者未知属性类型)的行为。
  • NONE: 不做任何反应
  • WARNING: 输出提醒日志 ('org.apache.ibatis.session.AutoMappingUnknownColumnBehavior'的日志等级必须设置为 WARN)
  • FAILING: 映射失败 (抛出 SqlSessionException)
NONE, WARNING, FAILINGNONE
defaultExecutorType配置默认的执行器。SIMPLE 就是普通的执行器;REUSE 执行器会重用预处理语句(prepared statements); BATCH 执行器将重用语句并执行批量更新。SIMPLE REUSE BATCHSIMPLE
defaultStatementTimeout设置超时时间,它决定驱动等待数据库响应的秒数。任意正整数Not Set (null)
defaultFetchSize为驱动的结果集获取数量(fetchSize)设置一个提示值。此参数只可以在查询设置中被覆盖。任意正整数Not Set (null)
safeRowBoundsEnabled允许在嵌套语句中使用分页(RowBounds)。如果允许使用则设置为false。true | falseFalse
safeResultHandlerEnabled允许在嵌套语句中使用分页(ResultHandler)。如果允许使用则设置为false。true | falseTrue
mapUnderscoreToCamelCase是否开启自动驼峰命名规则(camel case)映射,即从经典数据库列名 A_COLUMN 到经典 Java 属性名 aColumn 的类似映射。true | falseFalse
localCacheScopeMyBatis 利用本地缓存机制(Local Cache)防止循环引用(circular references)和加速重复嵌套查询。 默认值为 SESSION,这种情况下会缓存一个会话中执行的所有查询。 若设置值为 STATEMENT,本地会话仅用在语句执行上,对相同 SqlSession 的不同调用将不会共享数据。SESSION | STATEMENTSESSION
jdbcTypeForNull当没有为参数提供特定的 JDBC 类型时,为空值指定 JDBC 类型。 某些驱动需要指定列的 JDBC 类型,多数情况直接用一般类型即可,比如 NULL、VARCHAR 或 OTHER。JdbcType 常量. 大多都为: NULL, VARCHAR and OTHEROTHER
lazyLoadTriggerMethods指定哪个对象的方法触发一次延迟加载。用逗号分隔的方法列表。equals,clone,hashCode,toString
defaultScriptingLanguage指定动态 SQL 生成的默认语言。一个类型别名或完全限定类名。org.apache.ibatis.scripting.xmltags.XMLLanguageDriver
defaultEnumTypeHandler指定 Enum 使用的默认 TypeHandler 。 (从3.4.5开始)一个类型别名或完全限定类名。org.apache.ibatis.type.EnumTypeHandler
callSettersOnNulls指定当结果集中值为 null 的时候是否调用映射对象的 setter(map 对象时为 put)方法,这对于有 Map.keySet() 依赖或 null 值初始化的时候是有用的。注意基本类型(int、boolean等)是不能设置成 null 的。true | falsefalse
returnInstanceForEmptyRow当返回行的所有列都是空时,MyBatis默认返回null。 当开启这个设置时,MyBatis会返回一个空实例。 请注意,它也适用于嵌套的结果集 (i.e. collectioin and association)。(从3.4.2开始)true | falsefalse
logPrefix指定 MyBatis 增加到日志名称的前缀。任何字符串Not set
logImpl指定 MyBatis 所用日志的具体实现,未指定时将自动查找。SLF4J | LOG4J | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGINGNot set
proxyFactory指定 Mybatis 创建具有延迟加载能力的对象所用到的代理工具。CGLIB | JAVASSISTJAVASSIST (MyBatis 3.3 or above)
vfsImpl指定VFS的实现自定义VFS的实现的类全限定名,以逗号分隔。Not set
useActualParamName允许使用方法签名中的名称作为语句参数名称。 为了使用该特性,你的工程必须采用Java 8编译,并且加上-parameters选项。(从3.4.1开始)true | falsetrue
configurationFactory指定一个提供Configuration实例的类。 这个被返回的Configuration实例用来加载被反序列化对象的懒加载属性值。 这个类必须包含一个签名方法static Configuration getConfiguration(). (从 3.2.3 版本开始)类型别名或者全类名.Not set

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值