mybatis配置文件属性的详解和db.propertis文件的使用

    技术2022-07-10  171

    Mybatis核心配置文件SqlMapConfig.xml配置

    核心配置文件中标签的顺序如下图所示:

    1.properties(属性):

    将核心配置文件的某些属性(连接池的四大基本属性),可以在外部的properties核心配置文件中通过表达式引用。

    配置步骤:

    第一步:定义properties文件,配置属性信息 第二步:核心配置文件中引入外部属性文件 ​ 注意:标签顺序,properties处在跟标签configuration下,第一顺位的位子。

    第三步:在核心配置文件中使用表达式直接引用属性值(因为properties文件中存放的对象都是以键值对的形式存放),可以通过$符号,从中取出来。

    2.settings(设置)(了解)

    这是mybatis中极为重要的调整设置,他们会改变mybatis的运行时行为。一般不做操作

    一个完整的settings配置如下所示:

    <settings> <setting name="cacheEnabled" value="true"/> <setting name="lazyLoadingEnabled" value="true"/> <setting name="multipleResultSetsEnabled" value="true"/> <setting name="useColumnLabel" value="true"/> <setting name="useGeneratedKeys" value="false"/> <setting name="autoMappingBehavior" value="PARTIAL"/> <setting name="autoMappingUnknownColumnBehavior" value="WARNING"/> <setting name="defaultExecutorType" value="SIMPLE"/> <setting name="defaultStatementTimeout" value="25"/> <setting name="defaultFetchSize" value="100"/> <setting name="safeRowBoundsEnabled" value="false"/> <setting name="mapUnderscoreToCamelCase" value="false"/> <setting name="localCacheScope" value="SESSION"/> <setting name="jdbcTypeForNull" value="OTHER"/> <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/> </settings>

    3.typealiases(别名)

    含义:给类名起别名,小名。**(使用简短的单词代替java类型的全限定名:包名+类名)**仅用于 XML 配置,意在降低冗余的全限定类名书写

    使用:

    typeAliases:别名标签

    type:类的全限定名

    alias:别名

    第二种方式起别名:

    代指给当前包下所有的实体类起别名,当前包下类型的别名是类名,忽略大小写。

    第三种方式:下面是一些为常见的 Java 类型内建的类型别名。它们都是不区分大小写的,注意,为了应对原始类型的命名重复,采取了特殊的命名风格

    4.对象工厂(objectfactory)

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

    // ExampleObjectFactory.java public class ExampleObjectFactory extends DefaultObjectFactory { public Object create(Class type) { return super.create(type); } public Object create(Class type, List<Class> constructorArgTypes, List<Object> constructorArgs) { return super.create(type, constructorArgTypes, constructorArgs); } public void setProperties(Properties properties) { super.setProperties(properties); } public <T> boolean isCollection(Class<T> type) { return Collection.class.isAssignableFrom(type); }} <!-- mybatis-config.xml --> <objectFactory type="org.mybatis.example.ExampleObjectFactory"> <property name="someProperty" value="100"/> </objectFactory>

    ObjectFactory 接口很简单,它包含两个创建实例用的方法,一个是处理默认无参构造方法的,另外一个是处理带参数的构造方法的。 另外,setProperties 方法可以被用来配置 ObjectFactory,在初始化你的 ObjectFactory 实例后, objectFactory 元素体中定义的属性会被传递给 setProperties 方法。

    5.环境配置(environments)

    Mybatis可以配置适应多种环境,这种机制有助于将SQL映射应用于多种数据库之中,现实情况也有多种理由这么做。例如:开发、测试和生产环境需要有不同的配置;或者想在具有相同 Schema 的多个生产数据库中使用相同的 SQL 映射。还有许多类似的使用场景。

    不过要记住:尽管可以配置多个环境,但每个SqlSessionFactory实例只能选择一种环境。

    所以,如果你想连接两个数据库,就需要创建两个SqlSessionFactory 实例,每个数据库对应一个。而如果是三个数据库,就需要三个实例,依此类推,记起来很简单。

    environments元素定义了如何配置环境

    <environments default="development"> <environment id="development"> <transactionManager type="JDBC"> <property name="..." value="..."/> </transactionManager> <dataSource type="POOLED"> <property name="driver" value="${driver}"/> <property name="url" value="${url}"/> <property name="username" value="${username}"/> <property name="password" value="${password}"/> </dataSource> </environment> </environments>

    注意:

    默认使用的环境ID(比如:default=“development”)

    每个environment元素定义的环境ID(比如:id=“development”)

    事务管理器的配置(比如:type=“JDBC”)

    数据源的配置(比如:type=“POOLED”)

    6.映射器(mappers)

    1.使用相对于类路径的资源引用:mapper–resource 2.使用完全限定资源定位符(URL)

    3.使用映射器接口实现类的完全限定类名

    映射器接口实现类的完全限定类名:映射文件中的namespace属性值,接口的全限定名

    将映射文件放到接口包下,代替了实现类。

    使用Eclipse开发过程中, 通常情况下,映射文件与接口在同一包下,名称相同

    4.将包内的映射器接口实现全部注册为映射器 将映射文件放到接口包下,代替了实现类。*

    使用Eclipse开发过程中, 通常情况下,映射文件与接口在同一包下,名称相同

    Processed: 0.033, SQL: 9