MyBatis_3_全局配置文件

  • MyBatis的配置文件包含了影响MyBatis行为甚深的设置(settings)和属性(properties)信息。文档的顶层结构如下:

    • configuration配置

      1. 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>
        
      2. 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>
        
      3. 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>
        

        在这里插入图片描述

      4. typeHandlers类型处理器:这里只是简单的了解下作用在于将java的String很好的转为数据库的char,varchar类型等等。但是像日期处理,在MyBatis一些版本需要自己引入一些typeHandlers处理器去处理…
        在这里插入图片描述

      5. objectFactory对象工厂

      6. plugins插件:通过插件mybatis允许我们拦截数据库操作的一些内部步骤8

      7. 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>
            
      8. databaseldProvider 数据库厂标识:能够支持多数据库厂商的查询(如oracle,mysql等等…)

      9. 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>

猜你喜欢

转载自blog.csdn.net/weixin_42036647/article/details/86485260