MyBatis全局配置文件参数

MyBatis全局配置文件参数

  MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

mybatis的全局配置文件SqlMapConfig.xml,配置内容如下(以下的标签属性要按照从上到下的顺序编写进全局配置文件):

  • properties(属性)
  • settings(全局配置参数)
  • typeAliases(类型别名)
  • typeHandlers(类型处理器)
  • objectFactory(对象工厂)
  • plugins(插件)
  • environments(环境集合属性对象)
  • environment(环境子属性对象)
  • transactionManager(事务管理)
  • dataSource(数据源)
  • mappers(映射器)

下面介绍一些常用的属性

1、properties属性

说明:mybatis可以使用properties来引入外部properties配置文件的内容;

  • resource:引入类路径下的资源
  • url:引入网络路径或者磁盘路径下的资源

  需求:将数据库连接参数配置在dbconfig.properties中,只需要在mybatis-config.xml中加dbconfig.properties的属性值,在mybatis-config.xml中就不需要对数据库参数进行硬编码。

  将数据库参数配置在dbconfig.properties的原因:数据库参数同一管理,方便其他xml引用该dbconfig.properties,例如当系统庞大形成集群的时候,系统升级需要修改数据库连接信息,需要脚本来操作,只需要操作dbconfig.properties即可.

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis
jdbc.username=root
jdbc.password=123456

  在mybatis-config.xml中加载配置文件并引用配置文件中参数

 <!-- 加载属性文件 -->
<!-- 元素体,properties中还可以配置一些属性名和属性值
 <property name="jdbc.driver" value=""/>-->
<properties resource="dbconfig.properties"></properties>
<!-- 和spring整合后将会移除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>

注意:Mybatis会按照下面的顺序来加载属性:

  • properties元素体内的值首先会被读取
  • 然后会读取properties 元素中resouce或url加载的属性,它会覆盖已加载的同名属性
  • 最后读取parameterType(sql配置文件中的)传递的属性,它会覆盖已读取的同名属性。

2、settings属性

  settings包含了很多重要的设置项
  setting用来设置每一个设置项

  • name:设置项
  • value:设置项取值

  mapUnderscoreToCamelCase:驼峰命名规则

    <settings>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>

3、tpyeAliases(别名)属性

  如果在指定类型时输入类型全路径,不方便进行开发,可以针对parameterType或resultType指定的类型定义一些别名,在全局配置文件中通过别名定义,方便开发。可以为我们的java类起别名 ,别名不区分大小写。

typeAlias:为某个java类型起别名

  • type:指定要起别名的类型全类型名;默认别名就是类名小写;employee
  • alias:指定新的别名;

package:为某个包下的所有类批量取别名

  • name:指定包名(为当前包以及下面所有的后代包的每一个类都起一个默认别名(类名小写)

定义单个别名:

    <typeAliases>
        <typeAlias type="dao.Employee" alias="employee"/>
    </typeAliases>

在sql映射文件中的使用:

    <select id="getEmpById" resultType="employee">
    select * from tbl_employee where id = #{id}
  </select>

批量定义别名:

    <typeAliases>
        <package name="dao"/>
        <!--批量起别名的情况下,使用@Alias注解为我们某个类型指定新的别名-->
    </typeAliases>

mybatis默认支持的别名:

在这里插入图片描述

4、environments(环境们)属性

  mybatis可以配置多种环境,default指定使用某种环境。可以达到快速切换环境。

environment(一个环境): 配置一个具体的环境信息;必须要有下面的两个标签;id代表当前的唯一标识。

transactionManager:事务管理器;

  • type:事务管理器的类JDBC(JdbcTransactionFactory)|MANAGED(ManagedTransacationFactory)

自定义事务管理器:实现TransactionFactory接口.type指定为全类名。
dataSource:数据源;

  • type:数据源的类型;UNPOOLED(不使用连接池的方式)|POOLED(使用连接池技术)|JNDI(使用JNDI技术)
  • 自定义数据源:像我们之前要根据c3p0的数据源的方法,需要我们实现DataSourceFactory接口,type是全类名。
    <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>

5、databaseIdProvider属性:

  支持多数据库厂商的 type="DB_VENDOR"就是得到数据库厂商的标识(驱动getDatabaseProductName()),mybatis就能根据数据库厂商标识来执行不同的sql;MySQL,Oracle,SQL Server

    <databaseIdProvider type="DB_VENDOR">
        <!--为不同的数据库厂商起别名-->
        <property name="MYSQL" value="mysql"/>
        <property name="Oracle" value="oracle"/>
        <property name="SQL Server" value="sqlserver"/>
    </databaseIdProvider>

6、mappers(映射配置)

将sql映射注册映射到全局配置中

mapper: 注册一个sql映射
注册配置文件

  • resource:引用类路径下的sql映射文件
  • url:引用网络路径下或者磁盘路径下的sql映射文件

注册接口
class: 引用(注册)接口,

  • 有sql映射文件,映射文件名必须和接口同名,并且放在与接口同一目录下;
  • 没有sql映射文件,所有的sql都是利用注解写在接口上.

推荐:比较重要的,复杂的Dao接口我们来写sql映射文件。

不重要的,简单的Dao接口为了开发快速可以使用注解。

  <mappers>
      <!--注册加载单个sql映射文件-->
        <mapper resource="EmployeeMapper.xml"/>
      
        <mapper class="dao.EmployeeMapperAnnotation"/>
        <!--批量注册:-->
       <package name="dao"/>
    </mappers>

使用class加载接口:

  <mappers> 
      <!--注册带sql语句的函数的接口-->
        <mapper class="dao.EmployeeMapperAnnotation"/>
    </mappers>

带sql语句的接口:

public interface EmployeeMapperAnnotation {
    @Select("select * from tbl_employee where id = #{id}")
    public Employee getEmpById(Integer id);

    @Insert("insert into tbl_employee(last_name,gender,email) value(#lastName},#{gender},#{email})")
    public void addEmp(Employee employee);

}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值