mybatis的configuration XML中的配置项

mybatis的配置文件里的配置标签

一、properties

二、settings

<settings>
    <!---mapUnderscoreToCamelCase:开启驼峰命名法,即数据库中的例字段可以按驼峰命名法对应javaBean里的属性->
    <setting  name="mapUnderscoreToCamelCase" value="true"/>
    <!--jdbcTypeForNull: null值在数据库中对应什么值,mybatis默认是other值,但是这个值有的数据库是如果
                         识别的比如orcal-->
    <setting name="jdbcTypeForNull" value="NULL"/>
    <!--lazyLoadingEnabled:懒加载开启,开启之后关联的值可以在使用的时候再进行加载 -->
    <setting name="lazyLoadingEnabled" value="true"/>
    <!-- aggressiveLazyLoading:开启后会完全加载,如果false时会按需加载-->
    <setting name="aggressiveLazyLoading" value="false"/>
</settings>

三、typeAliases

别名处理器,见

别名处理器简介

四、typeHandlers

处理java数据于数据库数据类型的对应

<typeHandlers>

</typeHandlers>

五、plugins

插件可能拦截以下四大对象:

Executor:执行器
ParameterHandler:参数处理器
ResultSetHandler:结果集处理器
StatementHandler:sql语句的处理器

六、 environments 环境配置

mybatis可以配置多个环境,用default指定使用某个环境,进行环境的切换;
environment标签里必须有 transactionManager和dataSource子标签,其id表示一个environment的标识
            transactionManager:事物管理器
                              type:事物管理器的类型,有JDBC(JdbcTransactionFactory)|MANAGED(ManagedTransactionFactory)两种形式
                              自定义事物管理器:实现TransactionFactory接口.type指定为全类名
             dataSource:数据源
                         type:UNPOOLED|POOLED|JNDI
                         自定义:type类全名
<environments default="dev_mysql">
        <environment id="dev_mysql">
            <transactionManager type="JDBC"></transactionManager>
            <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>

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

事务控制,数据库配置在结合spring后,基本都是由spring做控制管理的

七、databaseIdProvider

 支持多数据库厂商,mybatist移值控制,比如在mysql和 oracle不现数据库
   type="DB_VENDOR":VendorDatabaseIdProvider
            作用就是得到数据库厂商的标识(驱动getDatabaseProductName()),mybatis就能根据数据库厂商标识来执行不同的sql;
     <databaseIdProvider type="DB_VENDOR">
        <property name="MySql" value="mysql"/>
        <property name="Oracle" value="oracle"/>
        <property name="SQL Server" value="sqlserver"/>
    </databaseIdProvider>

在mapper映射文件里可以通过(databaseId)指定上面通过 databaseIdProvider定义的数据库厂商的别名来确定现在链接的哪种数据库,则执行相应数据库对应的sql语句,eg:

 <select id="getEmpById" resultType="com.duanrong.mybatis.bean.Employee  databaseId = 'mysql'>
     select * from employee where id=#{id}
 </select>
 <select id="getEmpById" resultType="com.duanrong.mybatis.bean.Employee  databaseId = 'oracle'>
     select * from employee where id=#{id}
 </select>

如果当前链接的是mysql数据库,则加载sql语句时加载不带databaseId属性的和带databaseId=’mysql’属性的语句

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

 <mappers>
        <!-- 
            mapper:注册一个sql映射 
                注册配置文件
                resource:引用类路径下的sql映射文件
                    mybatis/mapper/EmployeeMapper.xml
                url:引用网路路径或者磁盘路径下的sql映射文件
                    file:///var/mappers/AuthorMapper.xml

                注册接口
                class:引用(注册)接口,
                    1、有sql映射文件,映射文件名必须和接口同名,并且放在与接口同一目录下;
                    2、没有sql映射文件,所有的sql都是利用注解写在接口上;
                    public interface EmployeeMapperAnnotation {
                                        @Select("select * from tbl_employee where id=#{id}")
                                        public Employee getEmpById(Integer id);
                                          }
                                         @Test
                                    public void test02() throws IOException{
                         SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();
                         SqlSession openSession = sqlSessionFactory.openSession();
                         try{
                           EmployeeMapperAnnotation mapper =                                                    openSession.getMapper(EmployeeMapperAnnotation.class);
                           Employee empById = mapper.getEmpById(1);
                           System.out.println(empById);
                         }finally{
                           openSession.close();
                         }
                           }
                    推荐:
                        比较重要的,复杂的Dao接口我们来写sql映射文件
                        不重要,简单的Dao接口为了开发快速可以使用注解;
        -->
        <!-- <mapper resource="mybatis/mapper/EmployeeMapper.xml"/> -->
        <!-- <mapper class="com.atguigu.mybatis.dao.EmployeeMapperAnnotation"/> -->

        <!-- 批量注册: -->
        <package name="com.atguigu.mybatis.dao"/>
    </mappers>

九 注意在配置文件里这些标签在书写的时候有先后顺序,不然会报错,顺序如下

 Content Model : (properties?, settings?, typeAliases?, typeHandlers?, objectFactory?, 

objectWrapperFactory?, reflectorFactory?, plugins?, environments?, databaseIdProvider?, mappers?)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章