-
MyBatis的配置文件包含了影响MyBatis行为甚深的设置(settings)和属性(properties)信息。文档的顶层结构如下:
-
configuration配置
-
properties属性:首先这里有一个dbconfig.properties
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/mybatis jdbc.username=root jdbc.password=etron
mybatis-config.xml
<?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="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" /> </mappers> </configuration>
-
settings设置(重要,一定要清楚每个设置项的涵义,请参照使用手册的文档,这里举个驼峰命名的例子)但mapUnderscoreToCamelCase:是否开启驼峰命名规则(camel case)映射:即从数据库列名A_COLUMN到javaBean的属性名aColumn.(比如我们的tbl_employee表中的last_name直接可以对应javaBean的lastName属性)
<?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="dbconfig.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.username}" /> <property name="password" value="${jdbc.password}" /> </dataSource> </environment> </environments> <!-- 将我们写好的sql映射文件(EmployeeMapper.xml)一定要注册到全局配置文件(mybatis-config.xml)中 --> <mappers> <mapper resource="EmployeeMapper" /> </mappers> </configuration>
-
typeAliases类型命名:首先在mybatis-config.xml中写好了一个javaBean的别名,然后在EmployeeMapper.xml中的resultType就可以直接使用这个别名来指定为那个JavaBean
<!--3、typeAliases:别名处理器:可以为我们的java类型起别名 别名不区分大小写 --> <typeAliases> <!--typeAlias:为某个java类型起别名 type:指定要起别名的类型 全类名;默认别名就是类名小写:employee alias:指定新的别名 --> <!--<typeAlias type="com.mybatis.bean.Employee" alias="emp"/>--> <!--package:为某个包下的所有类批量起别名 name:指定包名(为当前包以及下面所有的后代包的每一个类都起一个默认别名(类名小写)。) --> <package name="com.mybatis.bean"/> <!--批量起别名的情况下,使用@Alias注解为某个类型指定新的别名--> </typeAliases>
-
typeHandlers类型处理器:这里只是简单的了解下作用在于将java的String很好的转为数据库的char,varchar类型等等。但是像日期处理,在MyBatis一些版本需要自己引入一些typeHandlers处理器去处理…
-
objectFactory对象工厂
-
plugins插件:通过插件mybatis允许我们拦截数据库操作的一些内部步骤
-
environments环境
扫描二维码关注公众号,回复: 4918767 查看本文章-
environment 环境变量
-
transactionManager事务管理器
-
dataSource数据源
<!-- 4.environments:环境们,mybatis可以配置多种环境,default指定使用某种环境。可以达到快速切换的效果。 environment:配置一个具体的环境信息:必须有两个标签;id代表当前环境的唯一标识 transactionManager:事务管理器; type:事务管理器的类型;JDBC(JdbcTransactionFactory)|MANAGED 自定义事务管理器:实现TransactionFactory接口 .type指定为全类名 dataSource:数据源; type:数据源类型:UNPOOLED(UnpooledDataSourceFactory |POOLED(PooledDataSourceFactory) |JNDI(JndiDataSourceFactory) 自定义数据源 :实现DataSourceFactory接口,type是全类名 --> <environments default="development"> <environment id="test"><!--假设这个时测试用的数据源,那么上面的default写上test就可以快捷地切换--> <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> <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>
-
-
-
databaseldProvider 数据库厂标识:能够支持多数据库厂商的查询(如oracle,mysql等等…)
-
mappers 映射器:将我们写好的sql映射文件注册到全局配置文件中
注册配置文件
mapper:注册一个sql映射 resource:引用类路径下的sql映射文件 mybatis/mapper/EmployeeMapper url:引用网路路径或者磁盘路径下的sql映射文件 file:///var/mappers/AuthorMapper.xml
<mappers> <!--mapper:注册一个sql映射 注册配置文件 resource:引用类路径下的sql映射文件 mybatis/mapper/EmployeeMapper url:引用网路路径或者磁盘路径下的sql映射文件 file:///var/mappers/AuthorMapper.xml --> <mapper resource="mybatis/mapper/EmployeeMapper" /> </mappers>
引用(注册)接口:必须把接口和配置文件放在同一目录下,并且必须同名(如:映射文件EmployeeMapper.xml和接口EmployeeMapper.java)
<mappers> <!--mapper:注册一个sql映射 注册配置文件 resource:引用类路径下的sql映射文件 mybatis/mapper/EmployeeMapper url:引用网路路径或者磁盘路径下的sql映射文件 file:///var/mappers/AuthorMapper.xml class:直接引用(注册)接口 --> <!--<mapper resource="mybatis/mapper/EmployeeMapper" />--> <mapper class="com.mybatis.dao.EmployeeMapper"/> </mappers>
**没有sql映射文件,所有的sql都是利用注解写在接口上** ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190114224018694.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MjAzNjY0Nw==,size_16,color_FFFFFF,t_70)
1.在com.mybatis.dao包中创建一个类EmployeeMapperAnnotation
EmployeeMapperAnnotation.java
package com.mybatis.dao; import com.mybatis.bean.Employee; import org.apache.ibatis.annotations.Select; public interface EmployeeMapperAnnotation { @Select("select * from tbl_employee where id = #{id}") public Employee getEmpById(Integer id); }
mybatis-config.xml
2.新增一个test方法测试这个注解
@Test public void test02() throws IOException{ SqlSessionFactory sqlSessionFactory = getSqlSessionFactory(); SqlSession openSession = sqlSessionFactory.openSession(); try{ EmployeeMapperAnnotation mapper = openSession.getMapper(EmployeeMapperAnnotation.class); Employee empById = mapper.getEmpById(1); System.out.println(empById); }finally { openSession.close(); } }
还有一种批量注册:省略
-
-
mybatis-config.xml
不懂的注意看注解即可。
<?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="dbconfig.properties"> </properties>
<!--
2.settings包含很多重要的设置项
setting:用来设置每一个设置项
name:设置项名
value:设置取项值
-->
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<!--3、typeAliases:别名处理器:可以为我们的java类型起别名
别名不区分大小写
-->
<typeAliases>
<!--typeAlias:为某个java类型起别名
type:指定要起别名的类型 全类名;默认别名就是类名小写:employee
alias:指定新的别名
-->
<!--<typeAlias type="com.mybatis.bean.Employee" alias="emp"/>-->
<!--package:为某个包下的所有类批量起别名
name:指定包名(为当前包以及下面所有的后代包的每一个类都起一个默认别名(类名小写)。)
-->
<package name="com.mybatis.bean"/>
<!--批量起别名的情况下,使用@Alias注解为某个类型指定新的别名-->
</typeAliases>
<!--
4.environments:环境们,mybatis可以配置多种环境,default指定使用某种环境。可以达到快速切换的效果。
environment:配置一个具体的环境信息:必须有两个标签;id代表当前环境的唯一标识
transactionManager:事务管理器;
type:事务管理器的类型;JDBC(JdbcTransactionFactory)|MANAGED
自定义事务管理器:实现TransactionFactory接口 .type指定为全类名
dataSource:数据源;
type:数据源类型:UNPOOLED(UnpooledDataSourceFactory
|POOLED(PooledDataSourceFactory)
|JNDI(JndiDataSourceFactory)
自定义数据源 :实现DataSourceFactory接口,type是全类名
-->
<environments default="development">
<environment id="test"><!--假设这个时测试用的数据源,那么上面的default写上test就可以快捷地切换-->
<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>
<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)中 -->
<!--6、mappers:将sql映射注册到全局配置中-->
<mappers>
<!--mapper:注册一个sql映射
注册配置文件
resource:引用类路径下的sql映射文件
mybatis/mapper/EmployeeMapper
url:引用网路路径或者磁盘路径下的sql映射文件
file:///var/mappers/AuthorMapper.xml
注册接口
class:直接引用(注册)接口
1.有sql映射文件,映射文件名必须和接口同名,并且放在与接口同一目录下;
2.没有sql映射文件,所有的sql都是利用注解写在接口上
推荐:
比较重要的,复杂的Dao接口我们来写sql映射文件
不重要,简单的Dao接口为了开发快速可以使用注解
-->
<mapper resource="mybatis/mapper/EmployeeMapper" />
<!--<mapper class="com.mybatis.dao.EmployeeMapper"/>-->
<mapper class="com.mybatis.dao.EmployeeMapperAnnotation"/>
</mappers>
</configuration>