全局静态文件

全局配置文件即mybatis-config.xml文件,关于这个文件的学习只要了解其中的一些标签即可

properties & property

mybatis可以使用properties来引入外部的properties配置文件的内容:

例:

<properties url="" resource=""></properties>
  • resource:引入类路径下的资源
  • url:引入网络路径下的资源或者磁盘路径下的资源

使用xxx.properties文件导入数据库配置

jdbc.url=jdbc:mysql://localhost:3306/database?characterencoding=utf-8
jdbc.name=root
...

使用properties导入

<!-- 引入 -->
<properties resource=”.../xxx.properties”></properties>
<!-- 使用 -->
<property name=”url” value=”${jdbc.url}”></property>
<property name=”name” value=”${jdbc.name}”></property>

不过这种导入方式稍微了解即可,因为以后会将数据库配置交给spring或者spring boot去管理

settings

settings设置了很多mybatis运行时行为的设置。

settings是一个包裹在外部的标签,对于具体的设置需要用到setting

  • name:设置项名
  • value:设置项值

例:

<settings>
    <!-- 设置驼峰命名 -->
    <setting name=”mapUnderscoreToCamelCase” value=”true” />
</settings>

typeAliases

别名处理器,可以为java类型设置一个较短的名字,而不用在引用完整的类名。例如可以将全类名设置成一个较短的名字,注意,别名不区分大小写

同样typeAliases是一个包裹在外部的标签,具体的别名处理要使用typeAlias:

  • type:要取别名的对象,默认会有一个别名——类名的小写
  • alias:如果不想使用默认的别名,也可以在这里取自定义的别名

例:

<typeAliases>
        <typeAlias type="com.jinxin.bean.Employee" />
</typeAliases>

批量起别名

package标签可以为某个包以及其子包下所有的类起别名

  • name:指定包名,别名默认为类名
<typeAliases>
        <package name="com.jinxin.bean" />
</typeAliases>

注解起别名

使用批量起别名有一定的问题,如果指定包的子包下有一个类跟该包中的一个类同名,mybatis就没有办法区分了,所以还有一种比较方便的起别名的方式就是使用注解起别名。只需要在指定的类上写上@Alias("emp")注解即可

注意:

在起别名的时候也不是什么名字都可以起,mybatis已经为java的基本类型和包装类型起好了一些别名,其中基本类型的别名规则是:下划线+基本类型名,即int的别名为_int。包装类名的别名为类名小写,即String的别名是string

typeHandlers

这个标签是用于将数据库字段的类型与java字段的类型进行转换的

environments

mybatis可以根据这个标签配置多种环境

每一个环境通过environment标签配置:

enviroments:
    default:根据id名字切换环境(数据库环境)
    environment:
        id: 代表当前环境的唯一标识,可以通过environments的default属性切换环境,使用environment必须带上transactionManager跟dataSource
        transactionManager:事务管理器
            type:设置事务管理器的类型,两种取值,JDBC(jdbcTransactionFactory) | MANAGED(ManagedTransactionFactory),自定义事务管理器,实现TransactionFactory接口,type指定为全类名即可
        dataSource:数据源
            type: 数据源类型,支持三种,UNPOOLED | POOLED | JNDI,都是别名。自定义数据源:实现DataSourceFactory接口,实现getDataSource()接口即可

databaseIdProvider

让mybatis支持多数据库厂商

type=”DB_VENDOR”DB_VENDOR是一个别名,作用就是得到数据库厂商的标识(驱动自带)mybatis就能根据数据库厂商标识来执行不同的sql

例:

<databaseIdProvider type=”DB_VENDOR”>
    <property name=”MySQL” value=”mysql” />   <!-- 给数据库厂商起别名 -->
    <property name=”Oracle” value=”oracle” /> 
</databaseIdProvider>

然后来到mapper映射文件,在对应的标签上加上数据库厂商名

只需要在对应的标签上写上databaseId属性即可,属性值对应的就是上面的数据库厂商的别名

例:

<select id=”getEmpById” resultType=”com.jinxin.Employee” databaseId=”mysql”>
    SELECT * FROM tb1 WHERE id = #{id}
</select>

mappers

sql映射注册到全局配置中

mapper:注册一个sql映射:

  • resource:引用类路径下的sql映射文件
  • url:引用网络路径或者磁盘路径下的sql映射文件

  • class:引用接口 <mapper class=”com.jinxin.EmployeeMapper” />

    • 必须有sql映射文件,跟接口在同一目录下,而且名字相同

    • 也可以没有映射文件,所有sql写在注解上

批量注册

name: 书写包名

<package name=””>

注意:批量注册时,SQL写在注解上没问题,但是如果SQL写在了配置文件中,必须将配置文件与接口写在同一目录下,并且同名

posted @ 2018-11-08 17:05  Jin同学  阅读(162)  评论(0)    收藏  举报