zoukankan      html  css  js  c++  java
  • mybatis之全局配置文件中的标签

    mybatis的全局配置文件是在configuration标签下进行配置的,在其中可以配置以下标签:

    • properties:属性配置
    • settings:设置
    • typeAliases:类型命名
    • typeHandlers:类型处理器
    • objectFactory:对象工厂
    • plugins:插件
    • environments:环境
          enviroment:环境变量
              transactionManager:事务管理器
              dataSource:数据源
    • databaseIdProvider:数据库厂商标识
    • mappers:映射器

    1、properties:引入外部properties配置文件的内容

    2、settings:设置项,可以影响mybatis运行的行为

    3、typeAliases:为java类型取一个别名:

    <typeAliases>
        <typeAlias alias="emp" type="com.gong.mybatis.bean.Employee"/>
        <!--批量取别名,会为某个包下的所有类取别名,别名为类名小写-->
        <package name="com.gong.mybatis.bean"/>
    </typeAliases>

    另外,我们也可以用@Alias("名字")注解,直接在java文件中为类取别名。注意:别名不区分大小写。

    4、typeHandlers:java数据类型和数据库数据类型的桥梁。

    5、plugins:拦截sql语句执行的一些步骤。

    6、environments:

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

    我们可以通过id来切换不同的环境。

    7、databaseIdProvider:支持多数据库,根据数据库厂商的标识发送不同的sql语句。

    8、mappers:将sql映射文件注册到全局配置文件中。

    mappers中的子标签为mapper,在mapper中有以下属性:

    • url:引用网络路径或者磁盘路径
    • resource:引用类路径下的sql映射文件
      假设在类路径下有mabtis.mapper专门放置mapper.xml,那么可以这么使用resource
      <mappers>
          <mapper resource="mybatis/mapper/EmployeeMapper.xml"/>
      </mappers>
    • class:注册接口。使用这种方式时:
      (1)若有映射文件,需要将mapper.xml文件放置在和接口的同一目录下,同时接口名和mapper文件名要保持一致:
          <mappers>
              <mapper class="com.gong.mybatis.dao.EmployeeMapper" />
          </mappers>
    • (2)若没有映射文件,需要将sql语句利用注解写在接口的方法中:
          <mappers>
              <mapper class="com.gong.mybatis.dao.EmployeeMapperAnnotation" />
          </mappers>

      EmployeeMapperAnnotation.java

      package com.gong.mybatis.dao;
      
      import org.apache.ibatis.annotations.Select;
      
      import com.gong.mybatis.bean.Employee;
      
      public interface EmployeeMapperAnnotation {
          @Select("select * from tbl_employee where id=#{id}")
          public Employee getEmpById(Integer id);
          
      }

      在TestMybatis.java中进行测试:

      package com.gong.mybatis.test;
      
      import java.io.IOException;
      import java.io.InputStream;
      
      import org.apache.ibatis.io.Resources;
      import org.apache.ibatis.session.SqlSession;
      import org.apache.ibatis.session.SqlSessionFactory;
      import org.apache.ibatis.session.SqlSessionFactoryBuilder;
      import org.junit.Test;
      
      import com.gong.mybatis.bean.Employee;
      import com.gong.mybatis.dao.EmployeeMapper;
      import com.gong.mybatis.dao.EmployeeMapperAnnotation;
      
      public class TestMybatis {
          
          public SqlSessionFactory getSqlSessionFactory() throws IOException {
              String resource = "mybatis-config.xml";
              InputStream is = Resources.getResourceAsStream(resource);
              return new SqlSessionFactoryBuilder().build(is);
          }
          
          @Test
          public void test02() throws IOException {
              // 1、获取sqlSessionFactory对象
              SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
              // 2、获取sqlSession对象
              SqlSession openSession = sqlSessionFactory.openSession();
              try {
                  // 3、获取接口的实现类对象
                  //会为接口自动的创建一个代理对象,代理对象去执行增删改查方法
                  EmployeeMapperAnnotation mapper = openSession.getMapper(EmployeeMapperAnnotation.class);
                  Employee employee = mapper.getEmpById(1);
                  System.out.println(mapper.getClass());
                  System.out.println(employee);
              } finally {
                  openSession.close();
              }
      
          }
      
      }

      输出:

  • 相关阅读:
    GDC动手做-战争机器的高性能动画过渡技术(1)
    Unity开发笔记-使用AssetDatabase.AddObjectToAsset函数,正确序列化ScriptableObject的多态数组,修复TypeMissMatch错误
    Unity开发笔记-Editor自动生成Animator Controller State,使用new ChildAnimatorState()状态保存无效的问题
    Unity开发笔记-Editor扩展用GraphView实现逻辑表达式(2)表达式逻辑Node扩展
    Unity开发笔记-Editor扩展用GraphView实现逻辑表达式(1)UI基础逻辑实现
    Unity开发笔记-Editor扩展用GraphView实现逻辑表达式(0)简介
    Unity开发笔记-Unity2019使用AssetDatabase.CreateAsset创建TimelineAsset保存不正常的问题
    Unity开发笔记-UGUI Text通过修改顶点颜色实现打字机效果
    56.数组中数字出现的次数 II
    卡特兰数
  • 原文地址:https://www.cnblogs.com/xiximayou/p/12209235.html
Copyright © 2011-2022 走看看