java框架---MyBatis全局配置文件
Posted liujingche00
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java框架---MyBatis全局配置文件相关的知识,希望对你有一定的参考价值。
以下均放在configuration标签下
1.properties标签
可以使用properties标签引入外部properties配置文件的内容
两个属性:
resource:引入类路径下的资源
url:引入网络路径或者磁盘路径下的资源
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <!-- 导入配置文件 --> <properties resource="dbconfig.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>
jdbc.driver=com.mysql.cj.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/books?serverTimezone=GMT%2B8 jdbc.username=root jdbc.password=root
2.settings标签
运行时行为设置,其中包含了许多重要的设置项
<settings> <!-- 将自动驼峰命名规则映射打开 --> <setting name="mapUnderscoreToCamelCase" value="true" /> </settings>
3.typeAliasese标签
别名处理器可以为java类型起别名
<!-- 别名处理器,别名不区分大小写 --> <typeAliases> <!-- typeAlias:为某一个类起别名 type:被起别名类的全类名 默认别名就是类名小写 alias: 别名 --> <!-- <typeAlias type="com.bird.mybatis.bean.Employee" alias="emp"/> --> <!-- package: 为某个包下所有的类其别名 name: 指定包名(为当前包以及所有后代包的每一个类都起一个默认别名:类名小写 --> <package name="com.bird.mybatis.bean"/> <!-- @alias:在批量起别名的情况下使用@Alias注解为某个类指定别名 --> </typeAliases>
注:1.最好少用起别名,全路径类名结构更清晰,而且可以快速切换到指定类中
2.myBatis为java的一些常用类型已经起好了别名,注意不要重复
4.typeHandlers标签:
类型处理器,是数据库和java之间类型转换的桥梁,将数据库的类型与java的数据类型分别映射
5.plugins标签
插件,拦截4大对象:
执行器 Executor(update,query,flushStatements,commit,rollback,getTransaction)
参数处理器 ParameterHandler(getParameterObject,setParameterObject)
结果集处理器 ResultSetHandler(handleResultSets,handleOutputParameters)
sql语句处理器 StatementHandler(prepare,parameterize,batch,update,query)
6.environmenst标签
MyBatis可以配置多种环境,default属性指定使用某种环境,可以达到快速切换环境
每个environment标签配置一个具体的环境信息,id代表当前环境唯一标识,其中必须包含两个标签:
transactionManager 事务管理器,其中type属性是事务管理器的类型:
JDBC(JdbcTransactionFactory) | MANAGED(ManagedTransactionFactory) | 自定义事务管理器:实现TransactionFactory接口,type为全类名
dataSource 数据源 type取值:UNPOOLED | POOLED | JNDI | 自定义数据源:实现DataSourceFactory接口,type值为全类名
<environments default="development"> <environment id="test"> <transactionManager type="MANAGED"></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="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>
7.databaseIdProvider标签:
支持多i数据库厂商, type属性值为"DB_VENDOR" 作用是得到数据库厂商的标识(驱动),MyBatis就可以根据不同的厂商执行不同的sql
<!-- 数据库厂商支持 --> <databaseIdProvider type="DB_VENDOR"> <!-- 为不同数据库厂商起别名 --> <property name="Mysql" value="mysql"/> <property name="Oracle" value="oracle"/> <property name="SQL Server" value="sqlserver"/> </databaseIdProvider>
在sql映射文件中可以使用databaseId属性来标明此sql语句是运行在哪个数据库下的
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- namespace:名称空间(若使用接口式编程,与EmployeeMapper接口全类名一致) id:唯一标识(与接口中的方法名对应) resultType:返回值类型(与对应方法的返回值对应) databaseId: 执行的sql语句的数据库厂商环境 #{id}:从传递过来的参数中取出id值 --> <mapper namespace="com.bird.mybatis.dao.EmployeeMapper"> <select id="getEmpById" resultType="emp"> <!-- select id,last_name lastName,gender,email from tbl_employee where id = #{id} --> select * from tbl_employee where id = #{id} </select> <select id="getEmpById" resultType="emp" databaseId="mysql"> <!-- select id,last_name lastName,gender,email from tbl_employee where id = #{id} --> select * from tbl_employee where id = #{id} </select> <select id="getEmpById" resultType="emp" databaseId="orcle"> select id,last_name lastName,gender,email from tbl_employee where id = #{id} </select> </mapper>
注:若一个环境下有多个不同的方法实现,则取范围最精确的,比如上面代码中在mysql环境下getEmpById有两个实现可用,使用第二个更精确的
8.mappers标签
注册sql映射文件:
将sql映射注册到全局配置中,mapper标签注册一个sql映射,其属性有:
resource: 引用类路径下的sql映射文件 <mapper resource="org/mybatis/builder/BlogMapper.xml"/>
url: 引用网路路径或者磁盘路径下的sql映射文件 <mapper url="file:///var/mappers/BlogMapper.xml"/>
注册接口:
class: 注册(引用)接口 <mapper class="org.mybatis.builder.BlogMapper"/>
方法1:有sql映射文件,映射文件名必须与接口同名,并且放在同一目录下
方法2:没有sql映射文件,所有sql利用注解写在接口中
注:重要的,复杂的Dao接口推荐使用sql映射文件,简单的,不重要的为了开发方便则使用注解
package标签批量注册:
和方法1是一样的,但是一次性注册一个包的接口
<!-- 一定要将写好的sql映射文件(EmployeeMapper.xml)注册到全局配置文件(mybatis-config.xml)中 --> <mappers> <!-- 如果映射文件在包下,则用"包名/文件名" --> <mapper resource="mybatis/mappers/EmployeeMapper.xml" /> <!-- 注册接口 --> <mapper class="com.bird.mybatis.dao.EmployeeMapperAnnotation" /> </mappers>
接口:
package com.bird.mybatis.dao; import org.apache.ibatis.annotations.Select; import com.bird.mybatis.bean.Employee; public interface EmployeeMapperAnnotation { @Select("select * from tbl_employee where id = #{id}") public Employee getEmpById(Integer id); }
配置标签的顺序是固定的,顺序不对编译会报错
以上是关于java框架---MyBatis全局配置文件的主要内容,如果未能解决你的问题,请参考以下文章
Java框架之MyBatis 06-全局配置-mapper映射-分步查询