zoukankan      html  css  js  c++  java
  • Mybatis的全局配置文件标签介绍(mybatis-config.xml)

    全局配置文件中本人只记录了常用的几个

     typeHandlers, objectFactory,objectWrapperFactory, reflectorFactory, plugins, databaseIdProvider

    这几个只是作为了解,没做记录

    mybatis-config.xml:

     1 <?xml version="1.0" encoding="UTF-8" ?>
     2 <!DOCTYPE configuration
     3  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
     4  "http://mybatis.org/dtd/mybatis-3-config.dtd">
     5 <configuration>
     6 
     7 <!-- 
     8 1:mybatis可以用properties引入外部properties文件内容
     9     resource:引入的是项目的类路径,即项目中的文件
    10     url:引入的是网络路径或者是磁盘路径
    11  -->
    12 <properties resource="dbconfig.properties"></properties>
    13 
    14 <!-- 
    15 2:settings标签含有很多重要的设置项
    16 setting用来设置每一个设置项
    17     name:设置项名
    18     value:设置项值
    19  -->
    20  <settings>
    21      <setting name="mapUnderscoreToCamelCase" value="true"/>
    22  </settings>
    23  
    24 <!-- 
    25 3:typeAliases别名处理器,可以为我们的java类型起别名(别名不区分大小写,也就是即使你制定了别名无论大小写,只要字母对的上就可以)
    26     1)typeAlias为指定java类型起别名,
    27         type:被指定的java类型全类名,默认别名是类名的小写(employee,此时mapper文件中用到的全类名都能写成此别名)
    28         alias:指定全新别名
    29     2)package为某包下以及该子包下的所有类起别名(默认别名是类名的小写)
    30         name:指定包的全路径
    31     3)当批量起别名的时候,若子包中有类名与父包中类名相同时,会发生冲突报错,
    32           这时可以在冲突的bean文件中添加@Alias标签来制定冲突类别名;
    33  -->
    34 <typeAliases>
    35     <typeAlias type="com.yinfu.mybatis.beans.Employee"/>
    36     <!-- <package name="com.yinfu.mybatis.beans"/> -->
    37 </typeAliases>
    38  
    39 <!-- 
    40 4:environments环境配置  mybatis可以配置多种环境    default指定使用某种环境,他的值对应的是环境的id
    41     environment配置一个具体的环境信息,(必须包含俩标签),id代表当前环境的唯一标识
    42         transactionManager:事务管理器
    43             type:事务管理器的类型两种:JDBC(JdbcTransactionFactory事务管理器)|MANAGED(ManagedTransactionFactory事务管理器),
    44         dataSource:数据源
    45             type:数据源类型
    46  -->
    47      <environments default="development">
    48          <environment id="development">
    49              <transactionManager type="JDBC"/>
    50              <dataSource type="POOLED">
    51                  <property name="driver" value="${jdbc.driver}"/>
    52                  <property name="url" value="${jdbc.url}"/>
    53                  <property name="username" value="${jdbc.username}"/>
    54                  <property name="password" value="${jdbc.password}"/>
    55              </dataSource>
    56          </environment>
    57      </environments>
    58 
    59 <!-- 
    60 5:databaseIdProvider用来设置多数据库厂商(mysql,oracle,sqlServer等)
    61     当配置环境中有其他数据库的链接配置,并且default来切换查询环境(用的那个数据库),
    62     并且mapper文件中有对SQL语句指定查询环境的属性,这样mybatis可移植性大大增强
    63  -->
    64 <databaseIdProvider type="DB_VENDOR">
    65     <!-- 为不同数据库厂商指定别名 -->
    66     <property name="MySQL" value="mysql"/>
    67     <property name="Oracle" value="oracle"/>
    68 </databaseIdProvider>
    69      
    70      <!-- 寫好的的SQL映射文件(mapper文件)一定要注册到mybatis-config.xml中 -->
    71  <!-- 
    72 6:mappers:将SQL映射(mapper文件或mapper接口)注册到全局映射中(mybatis-config.xml)
    73     [1]mapper:注册指定的sql映射
    74         1)配置文件(mapper.xml文件)注册
    75             resource:引入的是项目的类路径,即项目中的文件
    76             url:引入的是网络路径或者是磁盘路径
    77         2)接口注册
    78             class:接口名全路径
    79             ①有SQL映射文件(mapper.xml),映射文件名要与接口名同名,并且俩文件要在同一目录下;
    80             ②没有SQL映射文件,利用注解将SQL语句写在接口中对应的方法上(@Select @Delete等)
    81             推荐:比较重要的Dao接口用SQL映射文件的方式,不太重要的可以用注解的方式,但是注解修改了源代码;
    82     [2]package:批量注册
    83         name:包的全路径名称;
    84             有SQL映射文件(mapper.xml),映射文件名要与接口名同名,并且俩文件一定要在同一包下
    85 
    86  -->
    87      <mappers>
    88      <mapper resource="com/yinfu/mybatis/dao/EmployeeMapper.xml"/>
    89      </mappers>
    90 </configuration>

    对应的mapper映射文件:

    <?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对应的是接口的全类名 -->
    <mapper namespace="com.yinfu.mybatis.dao.EmployeeMapper">
    <!-- 
        接口式编程,id对应的是接口中的方法名
         databaseId是在mybatis-config.xml中databaseIdProvider标签中定义的
         即:这条SQL语句是运行在哪个数据库环境下的(mysql,oracle,sql severd等)
         此时程序是运行在mysql环境下的,指定了mysql数据库名的和没指定名称的都会执行,如果mapper文件
         存在两个相同id方法名的     两条SQL语句,mybatis会自动舍弃没指定数据库名的那条;
    -->
        <select id="getObjById" resultType="employee" databaseId="mysql(数据库类型的别名)">
            select * from tbl_employee where id = #{id}
        </select>
    </mapper>

    对应的mapper接口:

     1 package com.yinfu.mybatis.dao;
     2 
     3 import com.yinfu.mybatis.beans.Employee;
     4 
     5 public interface EmployeeMapper {
     6 
     7     /**
     8      * 
     9      * 还有一种注解式mapper,没有对应的mapper.xml文件,而是将SQL语句写在了注解里
    10      * 例:
    11      *         @Select("select * from tbl_employee where id = #{id}")
    12      *         public Employee getObjById(Integer id);
    13      * 
    14      * @param id
    15      * @return
    16      */
    17     
    18     public Employee getObjById(Integer id);
    19 }
  • 相关阅读:
    docker镜像加速
    Job for network.service failed because the control process exited with error code
    python单例模式
    python实现简单算法
    Python母版使用
    Python中自定义filter用法
    linux挂载Windows共享文件夹
    重写用户模型时报错AttributeError: type object ‘自定义类’ has no attribute ‘USERNAME_FIELD’
    2020年3月10日 socket2
    2020年2月27日 socket 1
  • 原文地址:https://www.cnblogs.com/lubolin/p/7464730.html
Copyright © 2011-2022 走看看