Mybatis---配置文件元素属性详解
来源:互联网 发布:疯狗软件50 编辑:程序博客网 时间:2024/05/23 21:01
- Mybatis配置文件详解
- Mybatis配置文件层次结构层次结构顺序不能改变否则会报错
- Properties子元素
- 设置settings
- 类型别名typeAliases
- 系统定义别名
- 自定义别名
- typeHandler类型处理器
- 系统定义的typeHandler
- 用户自定义typeHandler
- 枚举类型typeHandler
- ObjectFactory
- 定制特定的工厂
- 插件
- Environments配置环境
- 数据源
- 自定义数据源必须实现oraapacheibatisdatasourceDataSourceFactory接口即可配置自定义数据源datasource typeXXXXXXXXDataSourceFactory
- 数据源
- DatabaseIdProvider数据库厂商标识
- 使用系统默认规则
- 不使用系统默认规则
- 引入映射器的方法
- 用文件路径引入映射器
- 用包名引入映射器
- 用类注册引入映射器
- 用userMapperxml引入映射器
Mybatis配置文件详解
Mybatis配置文件层次结构,层次结构顺序不能改变,否则会报错。
<configuration><!-- 配置 --> <properties/><!-- 属性 --> <settings><!-- 设置 --> <setting name="" value=""/> </settings> <typeAliases/><!-- 类型命名 --> <typeHandlers/><!-- 类型处理器 --> <objectFactory type=""/><!-- 对象工厂 --> <plugins><plugin interceptor=""></plugin></plugins><!-- 插件 --> <environments default=""><!-- 配置环境 --> <environment id=""><!-- 环境变量 --> <transactionManager type=""></transactionManager><!-- 事务管理器 --> <dataSource type=""></dataSource><!-- 数据源 --> </environment> </environments> <databaseIdProvider type=""/><!-- 数据库厂商标识 --> <mappers/><!-- 映射器 --></configuration>
Properties子元素
Properties元素是配置属性的,可以在配置文件的上下文中使用它。
三种方式设置Properties:
- Property子元素
- Properties配置文件(建议使用)
- 程序参数传递
- 三种方式的优先级:
先加载property子元素;后加载properties配置文件,如果属性相同,properties的属性值会覆盖property元素的值;最后加载程序参数传递,如果属性相同,程序中的值会覆盖properties配置文件的属性值。
设置(settings)
设置是Mybatis中最复杂的配置,同时也是最重要的配置内容之一,它会改变Mybatis运行时的行为。
Settings的配置内容如下:
- NONE: 不做任何反应
- WARNING: 输出提醒日志 (‘org.apache.ibatis.session.AutoMappingUnknownColumnBehavior’ 的日志等级必须设置为 WARN)
- FAILING: 映射失败 (抛出 SqlSessionException)
一个完整的settings示例如下:
<settings> <setting name="cacheEnabled" value="true"/> <setting name="lazyLoadingEnabled" value="true"/> <setting name="multipleResultSetsEnabled" value="true"/> <setting name="useColumnLabel" value="true"/> <setting name="useGeneratedKeys" value="false"/> <setting name="autoMappingBehavior" value="PARTIAL"/> <setting name="autoMappingUnknownColumnBehavior" value="WARNING"/> <setting name="defaultExecutorType" value="SIMPLE"/> <setting name="defaultStatementTimeout" value="25"/> <setting name="defaultFetchSize" value="100"/> <setting name="safeRowBoundsEnabled" value="false"/> <setting name="mapUnderscoreToCamelCase" value="false"/> <setting name="localCacheScope" value="SESSION"/> <setting name="jdbcTypeForNull" value="OTHER"/> <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/></settings>
类型别名(typeAliases)
别名是一个指代的名称。这个名称可以在Mybatis上下文使用。
别名分为两类:系统定义别名、自定义别名。
Mybatis中别名是不区分大小写的。
系统定义别名
常用的类型别名:
别名 映射的类型 支持数组
自定义别名
- 使用typeAliases配置别名:
<typeAliases> <typeAlias type="com.shop.Role" alias="role"/> </typeAliases>
代表:com.shop.Role的别名为:role
- 代码注册别名:
<typeAliases><package name="com.shop"/></typeAliases>@Alias(“role”)public class Role {}
代表:扫描包com.shop,使用注解@Alias;不使用@Alias注解,则将类名的第一个字母变小写作为别名。
typeHandler类型处理器
Mybatis在预处理语句(PreparedStatement)中设置一个参数时,或者从结果集(ResultSet)中取出一个值时,都会用注册了的typeHandler进行处理。
TypeHandler分为两种:系统定义和用户自定义。
TypeHandler常用的配置为Java类型(javaType)、JDBC类型(jdbcType)。TypeHandler的作用就是将参数从javaType转化为jdbcType,或者从数据库取出结果时把jdbcType转化为javaType。
系统定义的typeHandler
注意以下几点:
数值类型的精度,数据库int、double、decimal这些类型和Java的精度、长度都是不一样的。
时间精度,取数据到日用DateOnlyTypeHandler即可,用到精度为秒的用SqlTimestampTypeHandler等。
用户自定义typeHandler
必须实现接口:TypeHandler.(也可以继承BaseTypeHandler,BaseTypeHandler已经实现了TypeHandler接口)
自定义typeHandler里用注解配置JdbcType和JavaType。注解是:
- @MappedTypes 定义的是JavaType类型,可以指定哪些Java类型被拦截。
- @MappedJdbcTypes 定义的是JdbcType类型,需要满足枚举类org.apache.ibatis.type.JdbcType所列的枚举类型。
枚举类型typeHandler
Mybatis中枚举类型的typeHandler有自己的特殊规则,Mybatis内部提供了两个转化枚举类型的typeHandler。
Org.apache.ibatis.type.EnumTypeHandler
Org.apache.ibatis.type.EnumOrdinalTypeHandler
EnumTypeHandler是使用枚举字符串名称作为参数传递的,EnumOrdinalTypeHandler使用整数下标作为参数传递的。
ObjectFactory
当Mybatis在构建一个结果返回的时候,都会使用ObjectFactory(对象工厂)去构建POJO,在Mybatis中可以构建自己的工厂。一般来说我们使用默认的ObjectFactory即可,Mybatis中默认的ObjectFactory是由org.apache.ibatis.reflection.factory.DefaultObjectFactory来提供服务的。
定制特定的工厂
<objectFactory type=”com.learn.chapter03.objectFactory.MyObjectFactory”> <property name=”name” value=”MyObjectFactory”/></objectFatory>
- 自定义工厂—条件:
实现ObjectFactory接口。(可以通过继承DefaultObjectFactory简化编程)。
插件
Environments配置环境
配置环境可以注册多个数据源(DataSource)。每个数据源分为两部分:一个是数据库源的配置;一个是数据库事务(transactionManager)的配置。
<environments default="development"> <environment id="development"> <transactionManager type="JDBC"> <property name="..." value="..."/> </transactionManager> <dataSource type="POOLED"> <property name="driver" value="${driver}"/> <property name="url" value="${url}"/> <property name="username" value="${username}"/> <property name="password" value="${password}"/> </dataSource> </environment></environments>
Environments中的属性default,表明在缺省的情况下,启用哪个数据源配置。
Environment元素是配置一个数据源的开始,属性id是设置这个数据源的标志,以便Mybatis上下文使用它。
transactionManager配置的是数据库事务,其中type有3种配置方式:
JDBC,采用JDBC管理事务,在独立编码中常常使用。
MANAGED,采用容器方式管理事务,在JNDI数据源中常用。
自定义,由使用者定义数据库事务管理方法,适用于特殊应用。
Property元素则是可以配置数据源的各类属性,我们这里可以配置autoCommit=false,要求数据源不自动提交。
DataSource标签,是配置数据源连接的信息,type属性是提供我们对数据库连接方式的配置,同样Mybatis提供这么几种配置方式:
UNPOOLED,非连接池数据库(UnpooledDataSource)
POOLED,连接池数据库(PooledDataSource)
JNDI,JNDI数据源(JNDIDataSource)
自定义数据源
其中,配置的property元素,就是定义数据库的各类参数。
数据库事务Mybatis是交由SqlSession去控制的,可以通过SqlSession提交或者回滚。
数据源
Mybatis内部为我们提供了3种数据源的实现方式:
- UNPOOLED,非连接池,使用Mybatis提供的org.apache.ibatis.datasouce.unpooled.UnpooledDataSource实现。
- POOLED,连接池,使用Mybatis提供的org.apache.ibatis.datasource.pooled.PooledDataSource实现。
- JNDI,使用Mybatis提供的org.apache.ibatis.datasource.jndi.JndiDataSourceFactory获取数据源。
只需要把数据源的属性type属性定义为UNPOOLED,POOLED,JNDI即可。
自定义数据源:必须实现ora.apache.ibatis.datasource.DataSourceFactory接口即可。配置自定义数据源:<datasource type=”XXX.XXX.XXDataSourceFactory”>。
DatabaseIdProvider数据库厂商标识
相同的数据库厂商的环境下,数据库厂商标识没什么意义。但Mybatis可能会运行在不同厂商的数据库中,它为此提供一个数据标识,并提供自定义,它的作用在于指定SQL到对应的数据库厂商提供的数据库中运行。
使用系统默认规则
<databaseIdProvider type="DB_VENDOR"> <property name="SQL Server" value="sqlserver"/> <property name="DB2" value="db2"/> <property name="Oracle" value="oracle" /></databaseIdProvider>
type=”DB_VENDOR”是启动Mybatis内部注册的策略器。首先Mybatis会将你的配置读入Configuration类中,在连接数据库后调用getDatabaseProductName()方法去获取数据库的信息,然后用我们配置的name值去做匹配来得到DatabaseId。可以指定SQL在哪个数据厂商执行。
不使用系统默认规则
Mybatis提供规则允许自定义,需要实现DatabaseIdProvider接口,并且实现配置即可。
<databaseIdProvider type="全限定名自定义类"> <property name="SQL Server" value="sqlserver"/> <property name="DB2" value="db2"/> <property name="Oracle" value="oracle" /></databaseIdProvider>
引入映射器的方法
映射器是Mybatis最复杂、最核心的组件。映射器定义的命名空间是一个接口的全路径,而不是实现类。
引入映射器的方法很多,一般分为以下几种:
用文件路径引入映射器
<mappers> <mapper resource=”com/learn/chapter03/mapper/roleMapper.xml”/></mappers>
用包名引入映射器
<mappers> <package name=”com.learn.chapter03.mapper”></mappers>
用类注册引入映射器
<mappers> <mapper class="com.learn.chapter03.mapper.UserMapper"/> <mapper class="com.learn.chapter03.mapper.RoleMapper"/></mappers>
用userMapper.xml引入映射器
<mappers> <mapper url=”file:///var/mappers/com/learn/chapter03/mapper/RoleMapper.xml” /></mappers>
根据需要选择合适的引入方法。
- Mybatis---配置文件元素属性详解
- MyBatis Generator配置文件table元素的属性useActualColumnNames
- 【Mybatis】配置文件加载属性
- Mybatis配置文件属性讲解
- MyBatis配置文件属性解析
- tomcat配置文件serve.xml的元素及属性详解
- MyBatis配置文件详解
- mybatis 配置文件详解
- Mybatis Generator 配置文件详解
- orm-mybatis配置文件详解
- mybatis配置文件详解
- MyBatis xml配置文件详解
- mybatis配置文件详解
- mybatis配置文件详解
- mybatis Generator配置文件详解
- MyBatis xml配置文件详解
- mybatis核心配置文件详解
- MyBatis xml配置文件详解
- Spring AOP 20170503
- 4830: [Hnoi2017]抛硬币
- 什么是Docker?
- EventBus 源码解析
- 阿里巴巴离职DBA_35岁总结的职业生涯
- Mybatis---配置文件元素属性详解
- HDU 4333 Revolving Digits (扩展KMP)
- C++作业5:数组分离、成绩
- C++实验5:数组分离
- phpunit测试框架
- Emacs支持外部程序的粘贴
- 剑指offer-面试题 19:二叉树的镜像
- javaScript之表达式、运算符
- 分页功能的实现方法(不需要插件)