MyBatis-2 全局配置文件

    xiaoxiao2021-04-11  37

      MyBatis的全局配置文件中包含了影响MyBatis行为甚深的设置(settings)和属性(properties)信息,文档的顶层结构如下:      其中,MyBatis全局配置文件的具体测试代码下载地址:http://download.csdn.net/download/bingbeichen/9813367。


    1. 引入dtd约束文件

      在Eclipse中引入XML文件的dtd约束文件,方便编写XML文件时有相应的提示;其中,dtd文件位于MyBatis所依赖jar包的org.apache.ibatis.builder.xml包中,可以通过解压文件的方式来获取。具体引入操作请自行查询完成。


    2. properties标签:引入外部属性文件

    <!-- 类路径下的db.properties资源文件 --> jdbc.username=root jdbc.password=root jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/mybatis <!-- 类路径下的mybatis-config.xml配置文件 --> <configuration> <!-- properties标签:用于引入外部properties配置文件的内容 resource属性:引入类路径下的资源文件 url属性:引入网络或磁盘路径下的资源文件 --> <properties resource="db.properties"></properties> <environments default="development"> <environment id="development"> <transactionManager type="JDBC" /> <!-- 配置数据源 --> <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> <!-- 将SQL映射文件(EmployeeMapper.xml)注册到全局配置文件(mybatis-config.xml)中 --> <mappers> <mapper resource="EmployeeMapper.xml" /> </mappers> </configuration>

    3. settings标签:设置运行时行为

      


    4. typeAliases标签:别名处理器

      可以使用typeAliases标签为某个Java类起一个简短的别名,注意别名不区分大小写。

    <typeAliases> <!-- 方式一:为某个指定的Java类型起别名,其默认别名为类名小写 --> <typeAlias type="com.qiaobc.mybatis.bean.Employee" alias="emp"/> <!-- 方式二:为某个包(包含子包)下的所有类批量其别名 --> <package name="com.qiaobc.mybatis.bean"/> <!-- 方式三:批量起别名时,若别名重复则可使用@Alias注解为某个类型指定新的别名 --> </typeAliases>

      值得注意的是,MyBatis已经为许多常见的Java类型内建了相应的类型别名;其都是大小写不敏感的,故在起别名的时候千万不要占用已有的內建别名。


    5. typeHandlers标签:类型处理器

      类型处理器可以理解为数据库类型和Java类型之间的桥梁。无论是MyBatis在预处理语句(PreparedStatement)中设置一个参数时,还是从结果集中取出一个值时, 都会用类型处理器将获取的值以合适的方式转换成Java类型。   日期类型处理:日期和时间类型的处理在JDK1.8以前一直是个头疼的问题,我们通常使用JSR310规范领导者Stephen Colebourne创建的Joda-Time来操作,而JDK1.8已经实现了全部的JSR310规范;在日期时间处理上,可以使用MyBatis基于JSR310(Date and Time API)编写的各种日期时间类型处理器;MyBatis3.4以前的版本需要手动注册这些处理器,以后的版本都是自动注册的。   自定义类型处理器:需要实现org.apache.ibatis.type.TypeHandler接口或者继承org.apache.ibatis.type.BaseTypeHandler,再指定其映射某个JDBC类型(可选操作),并在MyBatis全局配置文件中进行注册。


    6. plugins标签:插件

      插件是MyBatis提供的一个非常强大的机制,可以通过插件来修改MyBatis的一些核心行为;插件通过动态代理机制,可以介入四大对象的任意方法的执行。

    Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed)ParameterHandler (getParameterObject, setParameters)ResultSetHandler (handleResultSets, handleOutputParameters)StatementHandler (prepare, parameterize, batch, update, query)

    7. environments标签:运行环境

    <!-- environments标签:MyBatis可以配置多种环境,default指定使用某种环境,可以达到快速切换环境的效果。 environment:配置一个具体的环境信息;必须有两个标签;id代表当前环境的唯一标识 transactionManager:事务管理器; type:事务管理器的类型; JDBC(JdbcTransactionFactory) |MANAGED(ManagedTransactionFactory) 自定义事务管理器:实现TransactionFactory接口.type指定为全类名 dataSource:数据源; type:数据源类型; UNPOOLED(UnpooledDataSourceFactory) |POOLED(PooledDataSourceFactory) |JNDI(JndiDataSourceFactory) 自定义数据源:实现DataSourceFactory接口,type是全类名 -->

      需要注意的是,实际开发中使用Spring管理数据源,并进行事务控制的配置来覆盖上述配置,故上述内容了解即可。


    8. databaseIdProvider标签:多数据库支持

    <!-- 快速切换MySQL和Oracle数据库环境 --> <environments default="dev_mysql"> <environment id="dev_mysql"> <transactionManager type="JDBC"></transactionManager> <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> <environment id="dev_oracle"> <transactionManager type="JDBC" /> <dataSource type="POOLED"> <property name="driver" value="${orcl.driver}" /> <property name="url" value="${orcl.url}" /> <property name="username" value="${orcl.username}" /> <property name="password" value="${orcl.password}" /> </dataSource> </environment> </environments> <!-- databaseIdProvider标签:支持多数据库厂商; type="DB_VENDOR":VendorDatabaseIdProvider 作用:获取数据库厂商的标识(根据驱动),MyBatis据此来执行不同的SQL语句 --> <databaseIdProvider type="DB_VENDOR"> <!-- 为不同的数据库厂商起别名 --> <property name="MySQL" value="mysql"/> <property name="Oracle" value="oracle"/> <property name="SQL Server" value="sqlserver"/> </databaseIdProvider> <!-- EmployeeMapper.xml:为不同的数据库厂商提供不同的SQL语句 --> <select id="getEmpById" resultType="com.atguigu.mybatis.bean.Employee" databaseId="mysql"> select * from tbl_employee where id = #{id} </select> <select id="getEmpById" resultType="com.atguigu.mybatis.bean.Employee" databaseId="oracle"> select EMPLOYEE_ID id,LAST_NAME lastName,EMAIL email from employees where EMPLOYEE_ID=#{id} </select>

    9. mappers标签:注册SQL映射文件

    <!-- 6、mappers:将sql映射文件注册到全局配置中 --> <mappers> <!-- mapper注册配置文件: resource:引用类路径下的sql映射文件,如mybatis/mapper/EmployeeMapper.xml url:引用网路路径或者磁盘路径下的sql映射文件,如file:///var/mappers/AuthorMapper.xml mapper注册接口: class:引用(注册)接口, 1、有sql映射文件,映射文件名必须和接口同名,并且放在同一目录下; 2、没有sql映射文件,所有的sql都是利用注解写在接口上; 推荐:比较重要的,复杂的Dao接口我们来写sql映射文件 不重要,简单的Dao接口为了开发快速可以使用注解; --> <!-- <mapper resource="mybatis/mapper/EmployeeMapper.xml"/> --> <!-- <mapper class="com.atguigu.mybatis.dao.EmployeeMapperAnnotation"/> --> <!-- 批量注册: --> <package name="com.atguigu.mybatis.dao"/> </mappers>
    转载请注明原文地址: https://ju.6miu.com/read-666944.html

    最新回复(0)