MyBatis核心配置文件概述
- 配置文件的层级关系
- 常用配置的解析
-
- properties(属性)
- settings(设置)
- typeAliases(类型别名)
- environments(环境配置)
- mapper(映射器)
配置文件的层级关系 MyBatis的配置文件包括了会深深影响MyBatis行为的设置和属性信息。配置文档的层级结构如下:
文章图片
注意:一定要按照层级关系来写标签,不然会报错(比如:将mapper(映射器)写在environments(环境配置前面),就会出错)
常用配置的解析 properties(属性) 实际开发中,习惯将数据源的配置文件信息单独抽取成一个properties文件,该标签可以加载额外配置的properties文件。
properties文件配置:
文章图片
整个配置文件中用来替换需要动态配置的属性值:
文章图片
在上面的例子中的driver和url属性将会由jdbc.properties文件中对应的值来替换,这样就为了配置提供了更多的灵活选择。
链接:https://mybatis.org/mybatis-3/zh/configuration.html#settings
一个配置完整的 settings 元素的示例如下:
>
="cacheEnabled" value="https://www.it610.com/article/true"/>
="lazyLoadingEnabled" value="https://www.it610.com/article/true"/>
="multipleResultSetsEnabled" value="https://www.it610.com/article/true"/>
="useColumnLabel" value="https://www.it610.com/article/true"/>
="useGeneratedKeys" value="https://www.it610.com/article/false"/>
="autoMappingBehavior" value="https://www.it610.com/article/PARTIAL"/>
="autoMappingUnknownColumnBehavior" value="https://www.it610.com/article/WARNING"/>
="defaultExecutorType" value="https://www.it610.com/article/SIMPLE"/>
="defaultStatementTimeout" value="https://www.it610.com/article/25"/>
="defaultFetchSize" value="https://www.it610.com/article/100"/>
="safeRowBoundsEnabled" value="https://www.it610.com/article/false"/>
="mapUnderscoreToCamelCase" value="https://www.it610.com/article/false"/>
="localCacheScope" value="https://www.it610.com/article/SESSION"/>
="jdbcTypeForNull" value="https://www.it610.com/article/OTHER"/>
="lazyLoadTriggerMethods" value="https://www.it610.com/article/equals,clone,hashCode,toString"/>
settings(设置) 这是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为。 下表描述了设置中各项设置的含义、默认值等。
typeAliases(类型别名) 这个标签可以为java类型设置一个缩写名字。他仅用于xml配置,主要为了降低冗余的权限类名。
文章图片
我们可以使用配置typeAliases,定义别名:
文章图片
这样我们就可以在resultType下使用我们定义好的别名,而不用使用权限类名的书写。
environments(环境配置) MyBatis 可以配置成适应多种环境,这种机制有助于将 SQL 映射应用于多种数据库之中, 现实情况下有多种理由需要这么做。例如,开发、测试和生产环境需要有不同的配置;或者想在具有相同 Schema 的多个生产数据库中使用相同的 SQL 映射。还有许多类似的使用场景。
注意:尽管可以配置多个环境,但每个SqlSessionFactory实例只能选择一种环境
如果你想连接两个数据库,就需要创建两个 SqlSessionFactory 实例,每个数据库对应一个。而如果是三个数据库,就需要三个实例,依此类推。
每个数据库对应一个 SqlSessionFactory 实例
为了指定创建哪种环境,只要将它作为可选的参数传递给 SqlSessionFactoryBuilder 即可。可以接受环境配置的两个方法签名是:
SqlSessionFactory build = new SqlSessionFactoryBuilder().build(reader, environment);
SqlSessionFactory build = new SqlSessionFactoryBuilder().build(reader, environment, properties);
如果忽略了环境参数,那么将会加载默认环境,如下所示:
SqlSessionFactory build = new SqlSessionFactoryBuilder().build(reader);
SqlSessionFactory build = new SqlSessionFactoryBuilder().build(reader, properties);
environments元素定义了如何配置环境变量
文章图片
其中,事务管理器(transactionManager)类型有两种:
- JDBC:这个配置就是直接使用了JDBC的提交和回滚事物,他依赖于从数据源得到的连接来管理事物作用域。
- MANAGED:这个配置几乎没做什么,他从来不提交或回滚一个连接,而是让容器来管理事物的整个生命周期(比如JEE应用服务器的上下文)。默认情况下它会关闭连接,然而一些容器并不希望这样,因此需要将closeConnection属性设置为false来阻止它默认的关闭行为。
- UNPOOIED:这个数据源的实现只是每次被请求时打开和关闭连接。
- POOLED:这种数据源的实现利用 ”池“ 的概念将JDBC连接对象组织起来。
- JNDI:这个数据源的实现是为了能在EJB或应用服务器这类容器中使用,容器可以集中或在外部配置数据源,然后放置一个JNDI上下文的引用。
该标签的作用是加载映射的,加载方式有如一下几种:
使用相对于类路径的资源引用,例如:
使用完全限定资源定位符(URL),例如:
使用映射器接口实现类的完全限定类名,例如:
【SSM框架集|MyBatis核心配置文件概述】将包内的映射器接口实现全部注册为映射器,例如:
推荐阅读
- Java基础|初始Java(一篇带你走进Java的世界)
- Log4j和SLF4J的区别
- Log4j Maven配置
- Log4j日志Appenders解释
- Log4j-PatternLayout日志
- Log4j属性详细解释
- Log4J日志文件
- 2022全新版!Java分布式架构设计与开发实战一起fen享
- 【JAVA基础】== 与 equals区别