全局静态文件
全局配置文件即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写在了配置文件中,必须将配置文件与接口写在同一目录下,并且同名