
本文共 3028 字,大约阅读时间需要 10 分钟。
MyBatis配置包含对MyBatis行为有显著影响的设置和属性。文件的高级结构如下:

文章目录
1,properties
properties是可外部化的、可替换的属性,可以在典型的Java属性文件实例中配置,也可以通过properties元素的子元素传递。例如:
如果一个属性存在于其中一个以上的地方,MyBatis会按如下顺序加载它们:
- 属性中指定的主体属性元素读取第一,
- 属性从类路径加载资源或url属性的属性元素读取第二,并覆盖任何重复的属性已经指定,
- 读取属性作为方法参数传递,并覆盖任何重复的属性可能被从身体和资源属性加载/ url属性。 因此,优先级最高的属性是那些作为方法参数传入的属性,然后是资源/ url属性,最后是properties元素主体中指定的属性。
2,settings
settings是非常重要的调整,它们修改了MyBatis在运行时的行为方式。
3,typeAliases
- 类型别名是Java类型的短名称。它只与XML配置相关,它的存在只是为了减少完全限定类名的冗余类型化。
有了这个配置,别名(emp)现在可以在任何地方使用。代替了type(com.mybatis.bean.Employee)
- 我们还可以指定一个包,MyBatis将在其中搜索beans。
- 使用@Alias注解为某个类型指定新的别名
@Alias("emp")public class Employee{ ... }
4,environments
MyBatis可以配置多个环境。这有助于我们出于各种原因将SQL映射应用到多个数据库。例如,我们的开发、测试和生产环境可能有不同的配置。或者,我们可能有多个共享相同模式的生产数据库,我们希望对这两个数据库使用相同的SQL映射。有许多用例。
虽然我们可以配置多个环境,但是您只能为每个SqlSessionFactory实例选择一个。 因此,如果希望连接两个数据库,需要创建SqlSessionFactory的两个实例,每个实例一个。对于三个数据库,您需要三个实例,等等。- 每个数据库一个SqlSessionFactory实例 要指定要构建的环境,只需将其作为一个可选参数传递给SqlSessionFactoryBuilder
SqlSessionFactory factory = sqlSessionFactoryBuilder.build(reader, environment); SqlSessionFactory factory = sqlSessionFactoryBuilder.build(reader, environment,properties
如果省略环境,则加载默认环境,如下所示:
SqlSessionFactory factory = sqlSessionFactoryBuilder.build(reader); SqlSessionFactory factory =sqlSessionFactoryBuilder.build(reader,properties);
环境元素定义如何配置环境。
-
environments:环境,mybatis可以配置多种环境 ,default指定使用某种环境。可以达到快速切换环境。
-
environment:配置一个具体的环境信息;必须有两个标签;id代表当前环境的唯一标识
-
transactionManager:事务管理器;type:事务管理器的类型;
JDBC(JdbcTransactionFactory)|MANAGED(ManagedTransactionFactory) 自定义事务管理器:实现TransactionFactory接口.type指定为全类名 -
dataSource:数据源; type:数据源类型;
UNPOOLED(UnpooledDataSourceFactory) |POOLED(PooledDataSourceFactory) |JNDI(JndiDataSourceFactory) 自定义数据源:实现DataSourceFactory接口,type是全类名
5,databaseIdProvider
MyBatis能够根据您的数据库供应商执行不同的语句。多数据库供应商的支持基于映射语句databaseId属性。MyBatis将加载所有没有databaseId属性或具有与当前属性匹配的databaseId的语句。如果发现有和没有databaseId时相同的语句,则将丢弃后者。
要启用多供应商支持,请按如下方式将databaseIdProvider添加到mybatis-config.xml文件中DB_VENDOR实现databaseIdProvider将databaseId设置为databaseId,这是DatabaseMetaData#getDatabaseProductName()返回的字符串。考虑到该字符串通常太长,同一产品的不同版本可能会返回不同的值,
您可能希望通过添加如下属性将其转换为更短的字符串:6, mappers
既然MyBatis的行为已经用上面的配置元素配置好了,我们就可以定义映射的SQL语句了。 但是首先,我们需要告诉MyBatis在哪里可以找到它们。在这方面,Java并没有提供任何好的自动发现方法,所以最好的方法就是告诉MyBatis在哪里可以找到映射文件。您可以使用
-
类路径相关的资源引用、
-
完全限定的url引用(包括文件:/// url)、
resource:引用类路径下的sql映射文件 mybatis/mapper/EmployeeMapper.xml url:引用网路路径或者磁盘路径下的sql映射文件 file:///var/mappers/AuthorMapper.xml -
类名
注册接口 class:引用(注册)接口, 1、有sql映射文件,映射文件名必须和接口同名,并且放在与接口同一目录下; 2、没有sql映射文件,所有的sql都是利用注解写在接口上; 推荐: 比较重要的,复杂的Dao接口我们来写sql映射文件 不重要,简单的Dao接口为了开发快速可以使用注解; -
包名。(批量注册)
这些语句只是告诉MyBatis从这里到哪里。其余的细节都在每个SQL映射文件中,这正是下面将要讨论的内容。
发表评论
最新留言
关于作者
