mybatis学习——config全局配置文件解析
Posted 梦天幻
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mybatis学习——config全局配置文件解析相关的知识,希望对你有一定的参考价值。
在全集配置文件中引入dtd约束“http://mybatis.org/dtd/mybatis-3-config.dtd”,主要有以下几个标签,现在详细解释下这几个标签的使用
1、properties属性----引入外部properties配置文件
<?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> <!-- 1、mybatis使用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.name}" /> <property name="password" value="${jdbc.password}" /> </dataSource> </environment> </environments> <mappers> <mapper resource="com/pjf/mybatis/mapper/hotelMapper.xml"></mapper> </mappers> </configuration>
db.properties文件
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/spring_mybatis jdbc.name=root jdbc.password=tuniu520
相当有之前写的,这里的jdbc连接信息写在datasource中的property属性下,没有引入外部配置文件
<?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> <environments default="development"> <environment id="development"> <transactionManager type="JDBC" /> <!-- 配置数据库连接信息 --> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/spring_mybatis" /> <property name="username" value="root" /> <property name="password" value="tuniu520" /> </dataSource> </environment> </environments> <mappers> <mapper resource="com/pjf/mybatis/mapper/hotelMapper.xml"></mapper> </mappers> </configuration>
2、settings 运行时行为设置
可查看mybatis文档,settings有很多配置项,如
这里试验下mapUnderscoreToCamelCase,可以自动完成hotelName到数据库中字段hotel_name的转换
<?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> <!-- 1、mybatis使用properties来引入外部properties配置文件的内容 resource 引入类路径下资源 url 引入网络路径或磁盘路径下资源 --> <properties resource="db.properties"></properties> <!-- 2、settings包含很多重要的设置项 setting标识具体的设置项 name表示设置项的名字 value表示设置项的值 --> <settings> <setting name="mapUnderscoreToCamelCase" value="true" /> </settings> <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.name}" /> <property name="password" value="${jdbc.password}" /> </dataSource> </environment> </environments> <mappers> <mapper resource="com/pjf/mybatis/mapper/hotelMapper.xml"></mapper> </mappers> </configuration>
之前写的sql语句可以直接修改成
<select id="getHotel" resultType="com.pjf.mybatis.po.Hotel"> select id,hotel_name as hotelName, hotel_address as hotelAddress, price from hotel where id=#{id} </select>
修改为
<select id="getHotel" resultType="com.pjf.mybatis.po.Hotel"> select * from hotel where id=#{id} </select>
mybatis会自动完成驼峰转换
3、typeAliases别名配置
查看代码中3的注解
<?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> <!-- 1、mybatis使用properties来引入外部properties配置文件的内容 resource 引入类路径下资源 url 引入网络路径或磁盘路径下资源 --> <properties resource="db.properties"></properties> <!-- 2、settings包含很多重要的设置项 setting标识具体的设置项 name表示设置项的名字 value表示设置项的值 --> <settings> <setting name="mapUnderscoreToCamelCase" value="true" /> </settings> <!-- 3、typeAliases 为java类型起别名,别名不区分大小写 typeAlias 为某个具体的java类型取别名 type java类的全类名,默认别名就是类名小写 alias 自定义别名 --> <typeAliases> <typeAlias type="com.pjf.mybatis.po.Hotel" alias="hotel" /> <!-- package为某个包下面所有类批量起别名 name 表示包的名称 默认别名为类名小写
这里重复配置了Hotel类,复制的时候注掉一种配置--> <package name="com.pjf.mybatis.po" /> </typeAliases> <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.name}" /> <property name="password" value="${jdbc.password}" /> </dataSource> </environment> </environments> <mappers> <mapper resource="com/pjf/mybatis/mapper/hotelMapper.xml"></mapper> </mappers> </configuration>
已经为许多常见的 Java 类型内建了相应的类型别名。它们都是大小写不敏感的,需要注意的是由基本类型名称重复导致的特殊处理,8种基本数据类型类型别名是下划线加数据类型。
4、typeHandlers 类型处理器
将java中的类型和数据库中的类型进行映射
<!-- typeHandlers 类型处理器 mybatis3.4之后,这些类型处理器都是自动注册的 --> <typeHandlers> <typeHandler handler="BooleanTypeHandler"/> </typeHandlers>
可以填写以下处理器
5、environments环境配置
<?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> <!-- 1、mybatis使用properties来引入外部properties配置文件的内容 resource 引入类路径下资源 url 引入网络路径或磁盘路径下资源 --> <properties resource="db.properties"></properties> <!-- 2、settings包含很多重要的设置项 setting标识具体的设置项 name表示设置项的名字 value表示设置项的值 --> <settings> <setting name="mapUnderscoreToCamelCase" value="true" /> </settings> <!-- 3、typeAliases 为java类型起别名,别名不区分大小写 typeAlias 为某个具体的java类型取别名 type java类的全类名,默认别名就是类名小写 alias 自定义别名 --> <typeAliases> <typeAlias type="com.pjf.mybatis.po.Hotel" alias="hotel" /> <!-- package为某个包下面所有类批量起别名 name 表示包的名称 默认别名为类名小写 <package name="com.pjf.mybatis.po" /> --> </typeAliases> <!-- 4、typeHandlers 类型处理器--> <typeHandlers> <typeHandler handler=""/> </typeHandlers> <!-- 5、environments环境配置,可以配置多种环境 default指定使用某种环境,可以达到快速切换 environment配置一个具体的环境信息,必须有如下两个标签,id表示当前环境的唯一标识 transactionManager 事物管理器 type 事物管理器的类型 有两种取值 JDBC managed dataSource 数据源 type 有三种[UNPOOLED|POOLED|JNDI] --> <environments default="development"> <environment id="test"> <transactionManager type="JDBC" /> <!-- 配置数据库连接信息 --> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.name}" /> <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.name}" /> <property name="password" value="${jdbc.password}" /> </dataSource> </environment> </environments> <mappers> <mapper resource="com/pjf/mybatis/mapper/hotelMapper.xml"></mapper> </mappers> </configuration>
6、mappers sql映射文件注册
<?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> <!-- 1、mybatis使用properties来引入外部properties配置文件的内容 resource 引入类路径下资源 url 引入网络路径或磁盘路径下资源 --> <properties resource="db.properties"></properties> <!-- 2、settings包含很多重要的设置项 setting标识具体的设置项 name表示设置项的名字 value表示设置项的值 --> <settings> <setting name="mapUnderscoreToCamelCase" value="true" /> </settings> <!-- 3、typeAliases 为java类型起别名,别名不区分大小写 typeAlias 为某个具体的java类型取别名 type java类的全类名,默认别名就是类名小写 alias 自定义别名 --> <typeAliases> <typeAlias type="com.pjf.mybatis.po.Hotel" alias="hotel" /> <!-- package为某个包下面所有类批量起别名 name 表示包的名称 默认别名为类名小写 <package name="com.pjf.mybatis.po" /> --> </typeAliases> <!-- 4、typeHandlers 类型处理器--> <typeHandlers> <typeHandler handler=""/> </typeHandlers> <!-- 5、environments环境配置,可以配置多种环境 default指定使用某种环境,可以达到快速切换 environment配置一个具体的环境信息,必须有如下两个标签,id表示当前环境的唯一标识 transactionManager 事物管理器 type 事物管理器的类型 有两种取值 JDBC managed dataSource 数据源 type 有三种[UNPOOLED|POOLED|JNDI] --> <environments default="development"> <environment id="test"> <transactionManager type="JDBC" /> <!-- 配置数据库连接信息 --> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.name}" /> <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.name}" /> <property name="password" value="${jdbc.password}" /> </dataSource> </environment> </environments> <!--6、 mappers将sql映射注册到全局配置文件中 mapper注册一个sql映射 1、注册配置文件 resource引用类路径下文件 url 引用网络上或磁盘路径下文件 2、注册mapper接口 class 有映射文件,接口和映射文件必须同名,而且放在同一个路径里 如果没有映射文件,sql语句使用注解的方式,就需要注册接口了 3、package批量注册 使用批量注册, 接口和映射文件必须同名,而且放在同一个路径里 --> <mappers> <mapper resource="com/pjf/mybatis/mapper/hotelMapper.xml"></mapper> <mapper class=""/> <package name="com.pjf.mybatis.po"/> </mappers> </configuration>
7、databaseIdProvider多数据库支持
MyBatis 可以根据不同的数据库厂商执行不同的语句,这种多厂商的支持是基于映射语句中的 databaseId 属性。 MyBatis 会加载不带 databaseId 属性和带有匹配当前数据库 databaseId 属性的所有语句。 如果同时找到带有 databaseId 和不带 databaseId 的相同语句,则后者会被舍弃。
<databaseIdProvider type="DB_VENDOR"></databaseIdProvider>
8、plugins 插件
MyBatis 允许你在已映射语句执行过程中的某一点进行拦截调用。
<plugins> <plugin interceptor=""></plugin> </plugins>
注:这些标签编写是有先后顺序的,可以吧鼠标放在configuration上,就可以看到顺序了
(properties?, settings?, typeAliases?, typeHandlers?, objectFactory?, objectWrapperFactory?, reflectorFactory?, plugins?, environments?, databaseIdProvider?, mappers?)
以上是关于mybatis学习——config全局配置文件解析的主要内容,如果未能解决你的问题,请参考以下文章
Mybatis学习关于mybatis全局配置文件SqlMapConfig.xml