MYbatis-全局配置

 

目录

1、属性:properties

2、设置:settings

3、类型别名:typeAliases(推荐不用)

4、类型处理器:typeHandlers

5、对象工厂:objectFactory(一般没人使用)

6、插件:plugins

7、环境配置:environments

8、数据库厂商标识:databaseIdProvider(一般不用)

9、映射器:mappers



1、属性:properties

和spring的context : placeholder一样的,引用外部配置文件

    <!--
    resource:从类路径下开始引用
    url:引用磁盘路径或者网络路径的资源
    -->
    <properties resource="" url=""/>

引用使用${}


2、设置:settings

 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为


3、类型别名:typeAliases(推荐不用

类型别名可为 Java 类型设置一个缩写名字。 它仅用于 XML 配置,意在降低冗余的全限定类名书写

别名默认就是类名(不区分大小写),这样配置文件中就可以使用别名了。

可以用alias指定别名

<typeAliases>
    <typeAlias alias="Book" type="com.bookStore.bean.Book"/>
</typeAliases>

可以批量起别名,com.bookStore.bean包下的所有类都自动使用类名作为别名(不区分大小写)

<typeAliases>
  <package name="com.bookStore.bean"/>
</typeAliases>

也可以使用注解@Alias

@Alias("author")
public class Author {
    ...
}

4、类型处理器:typeHandlers

MyBatis 在设置预处理语句(PreparedStatement)中的参数或从结果集中取出一个值时, 都会用类型处理器将获取到的值以合适的方式转换成 Java 类型。下表描述了一些默认的类型处理器。

从 3.4.5 开始,MyBatis 默认支持 JSR-310(日期和时间 API) 。


5、对象工厂:objectFactory(一般没人使用

每次 MyBatis 创建结果对象的新实例时,它都会使用一个对象工厂(ObjectFactory)实例来完成实例化工作。 默认的对象工厂需要做的仅仅是实例化目标类,要么通过默认无参构造方法,要么通过存在的参数映射来调用带有参数的构造方法。 如果想覆盖对象工厂的默认行为,可以通过创建自己的对象工厂来实现。


6、插件:plugins

Mybatis里非常强大的机制

MyBatis 允许你在映射语句执行过程中的某一点进行拦截调用。默认情况下,MyBatis 允许使用插件来拦截的方法调用包括:

  • Executor (update, query, flushStatements, commit, rollback, getTransaction, close, isClosed)
  • ParameterHandler (getParameterObject, setParameters)
  • ResultSetHandler (handleResultSets, handleOutputParameters)
  • StatementHandler (prepare, parameterize, batch, update, query)

我们可以通过插件来修改Mybatis的一些核心行为。插件通过动态代理机制,可以介入四大对象的任何一个方法的执行。


7、环境配置:environments

environments:配置环境

environment:配置一个具体的环境,都需要一个事务管理器和一个数据源

    <!--default:默认使用哪一个环境-->
    <environments default="testDevelopment">
        <!--id="testDevelopment"是当前环境的唯一标识-->
        <environment id="testDevelopment">
            <transactionManager type="JDBC"/>
            <!--配置数据库连接池-->
            <dataSource type="POOLED">
                <property name="driver" value="${dataSource.driver}"/>
                <property name="url" value="${dataSource.url}"/>
                <property name="username" value="${dataSource.username}"/>
                <property name="password" value="${dataSource.password}"/>
            </dataSource>
        </environment>
    </environments>

后来的数据源和事务控制都是spring来做(使用 Spring + MyBatis,则没有必要配置事务管理器,因为 Spring 模块会使用自带的管理器来覆盖前面的配置


8、数据库厂商标识:databaseIdProvider(一般不用

Mybatis用来考虑数据库移植性。

    <!--type="DB_VENDOR写死的-->
    <databaseIdProvider type="DB_VENDOR">
        <!--
        name:数据库厂商标识
        value:给这个标识起一个好用的名字
        -->
        <property name="MYSQL Server" value="mysql"/>
        <property name="SQL Server" value="sqlserver"/>
        <property name="DB2" value="db2"/>
        <property name="Oracle" value="oracle" />
    </databaseIdProvider>

使用

    <insert id="insertBook" databaseId="mysql">
        INSERT INTO book(ISBN,bookName,author,price) VALUES(#{ISBN},#{bookName},#{author},#{price})
    </insert>

    <insert id="insertBook" databaseId="oracle">
        .......
    </insert>

如果能精确匹配,就精确,不能就使用模糊。

一般在项目初期,就确定数据库的,所以一般不会用到。


9、映射器:mappers

写好的sql映射文件,需要使用mappers注册进来

建议注解和xml配置混合使用,重要的sql使用配置,简单的,基础的使用注解。

    <!--
    resource:在类路径下找sql映射文件(用的多)
    class:直接引用接口的全类名(将xml放在和Dao接口同目录下,并且文件名和接口一致)
           class的另一种用法:使用注解(不推荐使用,耦合性太高)
    url:从磁盘或者网络路径引用(用的少)
    -->
    <mappers>
        <mapper resource=""/>
        <mapper class=""/>
        <mapper url=""/>
    </mappers>

批量注册:配置文件必须和接口放在一个文件夹中且同名

    <mappers>
        <!--name:dao所在的包名-->
        <package name="com.bookStore.dao"/>
    </mappers>

猜你喜欢

转载自blog.csdn.net/weixin_44134725/article/details/112974395
今日推荐