Mybatis--XML配置

需要重点说明的是mybatis配置文件中各个类型标签的的配置顺序一定要遵从一定的顺序,即properties,settings,typeAliases,typeHandlers,objectFactory,objectWrapperFactory,plugins,environments,databaseIdProvider,mappers。否者会报错。
1 Properties:从外部获取配置文件的信息,并且设置字段名称为全局。调用格式如${driver},

<properties resource="config.properties">
        <property name="driver" value="driver" />
        <property name="url" value="url" />
        <property name="username" value="username" />
        <property name="password" value="password" />
    </properties>

使用案例:

<environments default="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <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>

当然还可在Properties设置非外部导入字段,value设置为想设置的值即可。

2 Setting:在Setting中可设置一些重要的调整设置,
例如:

<!-- - - - - - - 懒加载和缓存 - - - - - - - - - - -->
    <settings>
        <setting name="cacheEnabled" value="true"/>
        <setting name="lazyLoadingEnabled" value="true"/>
        <setting name="aggressiveLazyLoading" value="false"/>
    </settings>

更多属性设置可查看官方文档。

3 typeAliases:类型别名是为 Java 类型设置一个短的名字。可为包和类设置一个别名,存在的意义仅在于用来减少类完全限定名的冗余。

<typeAliases>
<typeAlias alias="Author" type="domain.blog.Author"/>
<typeAlias alias="Blog" type="domain.blog.Blog"/>
</typeAliases>

4 typeHandlers:自定义类型处理器

<typeHandlers>
<typeHandler handler="org.mybatis.example.ExampleTypeHandler"/>
</typeHandlers>

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

public class ExampleObjectFactory extends DefaultObjectFactory {

    public Object create(Class type) {
        return super.create(type);
    }

    public void setProperties(Properties properties) {
        super.setProperties(properties);
    }

    public <T> boolean isCollection(Class<T> type) {
        return Collection.class.isAssignableFrom(type);
    }
}

<objectFactory type="org.mybatis.example.ExampleObjectFactory">
    <property name="someProperty" value="100"/>
</objectFactory>

6 Plugins:MyBatis 允许你在已映射语句执行过程中的某一点进行拦截调用。实现Intercept接口配置拦截方法的信息即可。
说明:在拦截后先执行setProperties方法,plugin方法执行三次(至于为毛执行三次,目前暂不得知。)

//拦截UserMapper中的getUserById方法,args为配置方法参数类型信息
@Intercepts({@Signature(type=UserMapper.class,method="getUserById",args={Integer.class})})
public class ExampleIntercepor implements Interceptor {
    @Override
    public Object intercept(Invocation invocation) throws Throwable {
        // TODO Auto-generated method stub
        System.out.println("intercept");
        return invocation.getMethod();
    }
    @Override
    public Object plugin(Object target) {
        // TODO Auto-generated method stub
        System.out.println(target.getClass());
        return Plugin.wrap(target, this);
    }

    @Override
    public void setProperties(Properties properties) {
        // TODO Auto-generated method stub
        if(properties!=null){
            System.out.println(properties.size());
        }
        System.out.println("setProperties");
    }
}

接口:

public interface UserMapper {
    /**
     * 显示所有用户
     * @return
     */
    @Select("SELECT * FROM user where id=#{Id}")
    User getUserById(@Param("Id")Integer id);//使用@Param将方法参数与SQL中的参数进行关联
}

执行结果:
这里写图片描述

7 environments配置环境
MyBatis 可以配置成适应多种环境,但是会生成对于个数的SqlSessionFactory对象。创建SqlSessionFactory时可根据environment的id来设置对应的数据,默认是development。根据transactionManager配置事务管理类型,可选JDBC|MANAGED。设置为JDBC时直接使用了JDBC的提交和回滚。Managed,这个配置几乎没做什么。它从来不提交或回滚一个连接,而是让容器来管理事务的整个生命周期。如果使用Spring+Mybatis,则没必要配置事务管理器,因为 Spring 模块会使用自带的管理器来覆盖前面的配置。在Mybatis中通过实现Transaction接口自定义对事务进行管理。
如下:

<environments default="development">
        <environment id="development">
            <transactionManager type="JDBC" />
            <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>

8 databaseIdProvider:MyBatis 可以根据不同的数据库厂商执行不同的语句,

<databaseIdProvider type="DB_VENDOR">
    <property name="SQL Server" value="sqlserver"/>
    <property name="DB2" value="db2"/>
    <property name="Oracle" value="oracle" />
</databaseIdProvider>

9 mappers:映射器,告诉Mybais去哪里找SQL语句
使用xml路径:

<mappers>
    <mapper resource="org/mybatis/builder/AuthorMapper.xml"/>
    <mapper resource="org/mybatis/builder/BlogMapper.xml"/>
    <mapper resource="org/mybatis/builder/PostMapper.xml"/>
</mappers>

使用接口:

<mappers>
    <mapper class="org.mybatis.builder.AuthorMapper"/>
    <mapper class="org.mybatis.builder.BlogMapper"/>
    <mapper class="org.mybatis.builder.PostMapper"/>
</mappers>```

使用包名:

<mappers>
    <package name="org.mybatis.builder"/>
</mappers>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值