MyBatis学习笔记——全局配置文件

各种配置项

可以在官方文档http://www.mybatis.org/mybatis-3/zh/configuration.html中查看。

properties

mybatis可以使用properties来引入外部properties配置文件的内容;
—–resource:引入类路径下的资源
—–url:引入网络路径或磁盘路径下的资源
示例代码:

    <properties resource="dbconfig.properties"></properties>
    <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>

使用${xxx.xxx}进行获取值。

settings

settings包含很多重要的设置项
—–setting:用来设置没一个设置项
———name:设置项名
———-value:设置项取值
示例代码:

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

具体可以在官方文档中看到具体说明。

typeAliases

typeAliases,类型别名,可以为我们的java类型起别名,别名不区分大小写
—–type:指定要起别名的类型全类名;默认别名就是类名小写,属性alias,指定新的别名。
—–package:为某个包下的所有类批量起别名,属性name,指定包名(为当前包以及下面所有的后代包的每一个类都起一个默认值(类名小写))。
注意:若在使用package起别名的的时候,发生类名冲突的情况下,我们可以使用@Alias注解为某个类型指定新的别名。
JAVA的基本数据类型在mybatis中已经规定了别名:
这里写图片描述
建议:对于其他类,最好使用全类名,若要起名别,要避免与上述表格的别名发生冲突。
示例代码:

    <typeAliases>
        <!-- typeAliases:为某个java类型起别名
                type:指定要起别名的类型全类名;默认别名就是类名小写
                alias:指定新的别名
        -->
    <!--     <typeAlias type="com.shen.mybaties.bean.Employee" alias="emp"/> -->
        <!-- package:为某个包下的所有类批量起别名 
                name:指定包名(为当前包以及下面所有的后代包的每一个类都起一个默认值(类名小写))
        -->
        <package name="com.shen.mybaties.bean"/>
        <!-- 批量起别名的情况下,可以使用@Alias注解为某个类型指定新的别名 -->
    </typeAliases>

typeHandlers

类型处理器,负责将Java中的数据类型和数据库中的数据类型进行转换。
比如String和Varchar类型的转换等,类似于SpringMVC的converters数据转换功能。

objectFactory

没讲,略过。

plugins

利用插件机制,对以下四大组件的各个方法进行拦截,底层原理就是动态代理的方法实现的。

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

environments(了解,Spring负责)

environments,环境们,mybatis可以配置多种环境 ,default指定使用某种环境。可以达到快速切换。
—–environment:配置一个具体的环境环境,必须有两个子标签,id代表当前环境的唯一标识。
———transactionManager:事务管理器,属性type:事务管理器的类型可以是如下几种:
JDBC(JdbcTransactionFactory)|MANAGED(ManagedTransactionFactory)
自定义事务管理:实现TransactionFactory接口,type指定为全类名即可。
———-dataSource:数据源;属性type:数据源类型可以是如下几种:
UNPOOLED(UnpooledDataSourceFactory)|POOLED(PooledDataSourceFactory)|JNDI(JndiDataSourceFactory)
自定义数据源:实现DataSourceFactory接口,type是全类名。
示例代码:

    <environments default="development">
        <environment id="test">
           <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>
        <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>

databaseIdProvider

MyBatis 可以根据不同的数据库厂商执行不同的语句,这种多厂商的支持是基于映射语句中的 databaseId 属性。

配置全局文件

databaseIdProvider:支持对数据库厂商的,其中属性type=”DB_VENDOR”(VendorDatabaseIdProvider类),作用就是得到数据库厂商的标识(驱动getDatabaseProductName()),mybatis就能根据数据库厂商标识来执行不同的sql(MySql,Oracle,SQL Server,xxxxxxx)

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

这里一定要注意name大小写敏感。

修改SQL映射文件

需要在具体操作的语句上,指定databaseId,来标明使用的数据库类型。
示例代码如下:

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

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

  <select id="getEmpById" resultType="emp" databaseId="oracle">
    select id,lastName,email from tbl_employee where id = #{id}
  </select>

其中,第二条适用于mysql,第三条适用于oracle。
若当前是mysql环境,则mybatis会加载所有带mysql标识的sql语句和不带任何标识的sql语句,若两个id相同,则会选择更加精确的sql语句进行执行。

mappers(重要)

mapper:注册一个sql映射
—–resource:引用类路径下的sql映射文件
—–url:引用网络或磁盘路径下的sql映射文件

—–注册接口,class:引用(注册)接口
(1)有sql映射文件,映射文件名必须和接口同名,并且放在与接口同一目录下;
(2)没有sql映射文件,所有的sql都是利用注解写在接口上。

推荐:
重要的:复杂的Dao接口我们来写sql映射文件;
不重要:简单的Dao接口为了开发快速,可以使用注释的方法

    <!-- 将我们写好的sql映射文件(EmployeeMapper.xml)一定要注册到全局配置文件(mybatis-config.xml)中 -->
    <!-- 6. mappers:将sql映射注册到全局配置中 -->
    <mappers>
        <!-- mapper:注册一个sql映射
                resource:引用类路径下的sql映射文件
                url:引用网络或磁盘路径下的sql映射文件

                注册接口
                class:引用(注册)接口
                    1. 有sql映射文件,映射文件名必须和接口同名,并且放在与接口同一目录下;
                    2. 没有sql映射文件,所有的sql都是利用注解写在接口上.
                        推荐:比较重要的,复杂的Dao接口我们来写sql映射文件
                        不重要:简单的Dao接口为了开发快速,可以使用注释的方法
        -->
<!--         <mapper resource="mybatis/mapper/EmployeeMapper.xml" /> -->
<!--         <mapper class="com.shen.mybaties.dao.EmployeeMapperAnnotation"/> -->
        <!-- 批量注册:需要放在一个包下,且名字需要相同 -->
        <package name="com.shen.mybaties.dao"/>
    </mappers>

注意:包扫描,基于注解的方式都没问题,但是没加注解的接口,配置文件和接口需要放在同一个包下,且需要同名才行。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值