mybatis-config.xml文件的常用标签
<!ELEMENT configuration (properties?, settings?, typeAliases?, typeHandlers?, objectFactory?, objectWrapperFactory?, reflectorFactory?, plugins?, environments?, databaseIdProvider?, mappers?)>
properties标签
加载properties资源文件
##db.properties文件
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/数据库的名称
jdbc.user=账户
jdbc.password=密码
<!--加载properties配置文件-->
<properties resource="db.properties"></properties>
<environments default="development">
<!-- 可以配置多个environment -->
<environment id="development">
<!--<environment id="development1">-->
<!-- 使用jdbc事务管理-->
<transactionManager type="JDBC" />
<!-- 数据库连接池-->
<dataSource type="POOLED">
<property name="driver" value="${jdbc.driverClass}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.user}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment>
<environment id="development1">
....
</environment>
</environments>
settings标签
对mybatis的全局设置
比如后面开启二级缓存, 使用settings设置开启二级缓存
因为mybatis有默认设置
<settings>
<!--关闭二级缓存-->
<setting name="cacheEnable" value="false"/>
</settings>
typeAliases标签
对实体类设置别名: 在sql映射文件中不需要写包.类名, 只需要写别名就可以, 方便
自定义别名: 对我们定义的实体类设置别名
<!--设置别名-->
<typeAliases>
<!--对某个具体的类设置别名
type: 实体类包.类
alias: 别名
-->
<!--将在com目录下的fs目录下的entity目录下的User.java取别名为User-->
<typeAlias type="com.fs.entity.User" alias="User"/>
<!--对某个包下所有的实体类统一设置别名
name: 包名
默认的别名: 类名 或者是类名第一个字母小写的类名 User /user
-->
<package name="com.fs.entity"/>
</typeAliases>
mybatis 自带的别名
别名 | 映射的类型 |
---|---|
_byte | byte |
_long | long |
_short | short |
_int | int |
_integer | int |
_double | double |
_float | float |
_boolean | boolean |
string | String |
byte | Byte |
long | Long |
short | Short |
int | Integer |
integer | Integer |
double | Double |
float | Float |
boolean | Boolean |
date | Date |
decimal | BigDecimal |
bigdecimal | BigDecimal |
typeHandlers标签
MyBatis 中的 TypeHandler 类型处理器用于 JavaType 与 JdbcType 之间的转换
MyBatis 内置了大部分基本类型的类型处理器,所以对于基本类型可以直接处理,当我们需要处理其他类型的时候就需要自定义类型处理器。
类型处理器 | java 类型 | jdbc 类型 |
---|---|---|
BooleanTypeHandler | boolean | bit、boolean |
ByteTypeHandler | byte | TINYINT |
ShortTypeHandler | short | SMALLINT |
IntegerTypeHandler | INTEGER | INTEGER |
LongTypeHandler | long | long |
FloatTypeHandler | FLOAT | FLOAT |
DoubleTypeHandler | double | double |
StringTypeHandler | string | CHAR、VARCHAR |
ArrayTypeHandler | ARRAY | |
BigDecimalTypeHandler | BigDecimal | REAL、DECIMAL、NUMERIC |
DateTypeHandler | Date | TIMESTAMP |
DateOnlyTypeHandler | Date | DATE |
TimeOnlyTypeHandler | Date | TIME |
objectFactory标签
MyBatis 每次创建结果对象的新实例时,它都会使用一个对象工厂(ObjectFactory)实例来完成。 默认的对象工厂需要做的仅仅是实例化目标类,要么通过默认构造方法,要么在参数映射存在的时候通过参数构造方法来实例化。 如果想覆盖对象工厂的默认行为,则可以通过创建自己的对象工厂来实现。
<objectFactory type="org.mybatis.example.MyObjectFactory"></objectFactory>
<objectFactory type="org.mybatis.example.MyObjectFactory">
<property name="email" value="undefined"/>
</objectFactory>
其子标签 property 会在加载全局配置文件 SqlMapConfig.xml 时通过 setProperties 方法被初始化到 MyObjectFactory 中,作为该类的全局参数使用。
ps:使用该标签时,你所导入的type的类最好继承 org.apache.ibatis.reflection.factory.DefaultObjectFactory 工厂
objectWrapperFactory标签
reflectorFactory标签
plugins标签
environments标签
该标签表示运行环境是什么,environments表示多个环境,environment表示单个环境,在environment中配置单个环境的具体信息
例如数据库的配置
<environments default="development">
<!-- 可以配置多个environment -->
<environment id="development">
<!--<environment id="development1">-->
<!-- 使用jdbc事务管理-->
<transactionManager type="JDBC" />
<!-- 数据库连接池-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver" />
<property name="url" value="jdbc:mysql://localhost:3306/数据库的名称" />
<property name="username" value="账户" />
<property name="password" value="密码" />
</dataSource>
</environment>
<environment id="development1">
....
</environment>
</environments>
environments : default属性
该属性是environments用来识别运行环境的,他所代表的值与后面的environment标签中的id值是相同的,通过environment的id来切换不同的运行环境
environment : id属性
该属性用来标识environment的,一个id对应一个environment
transactionManager标签
事务管理标签
transactionManager:type属性(有JDBC,JTA ,External三种值)
JDBC:使用数据库自己的事务(局部事务),connect.beginTranstion(), connect.commit()等
JTA :使用jta 事务管理器管理事务(全局事务),使用userTranstion对象
External:自己(Ibatis)不控制事务,事务交由外部控制,一般在CTM,或spring托管事务中使用
dataSource标签
数据源
dataSource:type属性(有UNPOOLED,POOLED,JNDI)
unpooled:这个数据源的实现会每次请求时打开和关闭连接。
pooled:这种数据源的实现利用“池”的概念将 JDBC 连接对象组织起来,避免了创建新的连接实例时所必需的初始化和认证时间。 这种处理方式很流行,能使并发 Web 应用快速响应请求。
jndi:这个数据源实现是为了能在如 EJB 或应用服务器这类容器中使用,容器可以集中或在外部配置数据源,然后放置一个 JNDI 上下文的数据源引用。
property标签
配置数据源的属性
databaseIdProvider标签
mappers标签
<!--加载sql映射文件-->
<mappers>
<mapper resource="UserDao.xml"/>
<!--<mapper resource="UserMapper.xml"/>-->
<!--class写的mapper接口的包名.类名
要求: sql映射文件必须与mapper接口在同一个包下
根据mapper接口到当前包下,查找与Mapper接口同名的sql映射文件
-->
<!-- <mapper class="com.fs.mapper.UserMapper" />-->
<!--把某个mapper接口所在的包下的sql映射文件加载进来
要求: sql映射文件必须与mapper接口在同一个包下
-->
<package name="com.fs.mapper"/>
</mappers>