SqlMapConfig.xml配置文件的内容和配置顺序如下

① properties(读取配置文件):定义配置,配置的属性可以在整个配置文件中其他位置进行引用;
② settings(全局配置参数):用于指定MyBatis的一些全局配置属性,这些属性非常重要,它们会改变MyBatis的运行时行为;
③ typeAliases(类型别名):用于配置多个数据源,每个数据源分为数据库源和事务的配置;
④ typeHandlers(类型处理器):定义类型处理,也就是定义java类型与数据库中的数据类型之间的转换关系
⑤ objectFactory(对象工厂):
⑥ plugins(插件):Mybatis的插件,插件可以修改Mybatis内部的运行规则
⑦ environments(环境集合属性对象,与Spring框架整合后Say Good Bye):用于配置多个数据源,每个数据源分为数据库源和事务的配置;
  1、environment(环境子属性对象)
  2、transactionManager(事务管理)
  3、dataSource(数据源)
⑧ mappers(配置映射器位置):配置引入映射器的方法。

properties属性

作用:将数据连接单独配置在db.properties中,只需要在SqlMapConfig.xml中加载db.properties的属性值,在SqlMapConfig.xml中就不需要对数据库连接参数进行硬编码。

数据库连接参数只配置在db.properties中,方便对参数进行统一管理,其它xml可以引用该db.properties。

● db.properties的内容:

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/games_db?useUnicode=true&characterEncoding=UTF-8&useSSL=true
jdbc.username=root
jdbc.password=123456

● 在SqlMapConfig.xml中加载db.properties

<!-- 引入外部配置文件 -->
<properties resource="db.properties"></properties> <!-- 配置mybatis运行环境 ; 在集成Spring是不用 -->
<environments default="development">
<environment id="development">
<!-- type="JDBC" 代表使用JDBC的提交和回滚来管理事务 -->
<transactionManager type="JDBC" />
<!-- 使用连接池连接数据库 - mybatis提供了3种数据源类型,分别是:POOLED,UNPOOLED,JNDI -->
<!-- POOLED 表示支持JDBC数据源连接池 ; UNPOOLED 表示不支持数据源连接池 ; JNDI 表示支持外部数据源连接池 -->
<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> <!--配置映射器的位置 -->
<mappers>
<!-- 单个配置 -->
<!-- <mapper resource="com/sikiedu/mapper/UserMapper.xml" /> -->
<!-- <mapper url="file:\\\D:\Java\WorkSpace\JavaEE_SSM_Test\ssm_mybatis\src\com\sikiedu\mapper\UserMapper.xml" /> -->
<!-- <mapper class="com.sikiedu.mapper.UserMapper" /> -->
<!-- 多配置-以包的形式;推荐使用 -->
<package name="com.sikiedu.mapper" />
</mappers>

● properties特性:

- 注意:

在properties元素体内定义的属性优先读取。
然后读取properties元素中resource或url加载的属性,它会覆盖已读取的同名属性。
最后读取parameterType传递的属性,它会覆盖已读取的同名属性

- 建议:

不要在properties元素体内添加任何属性值,只将属性值定义在properties文件中。
在properties文件中定义属性名要有一定的特殊性,如xxxx.xxxx(jdbc.driver)

settings - 全局参数配置

mybatis框架运行时可以调整一些运行参数。比如,开启二级缓存,开启延迟加载等等。全局参数会影响mybatis的运行行为。

 <!-- 参数设置 -->
<settings> <!-- 这个配置使全局的映射器启用或禁用缓存 -->
<setting name="cacheEnabled" value="true" /> <!-- 全局启用或禁用延迟加载。当禁用时,所有关联对象都会即时加载 -->
<setting name="lazyLoadingEnabled" value="true" /> <!-- 当启用时,有延迟加载属性的对象在被调用时将会完全加载任意属性。否则,每种属性将会按需要加载 -->
<setting name="aggressiveLazyLoading" value="true" /> <!-- 允许或不允许多种结果集从一个单独的语句中返回(需要适合的驱动) -->
<setting name="multipleResultSetsEnabled" value="true" /> <!-- 使用列标签代替列名。不同的驱动在这方便表现不同。参考驱动文档或充分测试两种方法来决定所使用的驱动 -->
<setting name="useColumnLabel" value="true" /> <!-- 允许JDBC支持生成的键。需要适合的驱动。如果设置为true则这个设置强制生成的键被使用,尽管一些驱动拒绝兼容但仍然有效(比如Derby) -->
<setting name="useGeneratedKeys" value="true" /> <!-- 指定MyBatis如何自动映射列到字段/属性。PARTIAL只会自动映射简单,没有嵌套的结果。FULL会自动映射任意复杂的结果(嵌套的或其他情况) -->
<setting name="autoMappingBehavior" value="PARTIAL" /> <!--当检测出未知列(或未知属性)时,如何处理,默认情况下没有任何提示,这在测试的时候很不方便,不容易找到错误。 NONE : 不做任何处理 (默认值) WARNING : 警告日志形式的详细信息 FAILING : 映射失败,抛出异常和详细信息 -->
<setting name="autoMappingUnknownColumnBehavior" value="WARNING" /> <!-- 配置默认的执行器。SIMPLE执行器没有什么特别之处。REUSE执行器重用预处理语句。BATCH执行器重用语句和批量更新 -->
<setting name="defaultExecutorType" value="SIMPLE" /> <!-- 设置超时时间,它决定驱动等待一个数据库响应的时间 -->
<setting name="defaultStatementTimeout" value="25000" /> <!--设置查询返回值数量,可以被查询数值覆盖 -->
<setting name="defaultFetchSize" value="100" /> <!-- 允许在嵌套语句中使用分页 -->
<setting name="safeRowBoundsEnabled" value="false" /> <!--是否开启自动驼峰命名规则(camel case)映射,即从经典数据库列名 A_COLUMN 到经典 Java 属性名 aColumn 的类似映射。 -->
<setting name="mapUnderscoreToCamelCase" value="false" /> <!--MyBatis 利用本地缓存机制(Local Cache)防止循环引用(circular references)和加速重复嵌套查询。 默认值为 SESSION,这种情况下会缓存一个会话中执行的所有查询。 若设置值为 STATEMENT,本地会话仅用在语句执行上,对相同 SqlSession 的不同调用将不会共享数据。 -->
<setting name="localCacheScope" value="SESSION" /> <!-- 当没有为参数提供特定的 JDBC 类型时,为空值指定 JDBC 类型。 某些驱动需要指定列的 JDBC 类型,多数情况直接用一般类型即可,比如 NULL、VARCHAR OTHER。 -->
<setting name="jdbcTypeForNull" value="OTHER" /> <!-- 指定哪个对象的方法触发一次延迟加载。 -->
<setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString" /> </settings>

typeAiases - 别名

在mapper.xml中,定义很多的statement,statement需要parameterType指定输入参数的类型、需要resultType指定输出结果的映射类型。

如果在指定类型时输入类型全路径,不方便进行开发,可以针对parameterType或resultType指定的类型定义一些别名,在mapper.xml中通过别名定义,方便开发。

● mybatis默认支持的别名

别名 映射的类型          别名 映射的类型          别名 映射的类型
_byte  byte  _boolean boolean double Double
_long long  string String float Float
_short  short  byte Byte boolean Boolean
_int  int  long Long date Date
_integer  int  short Short decimal BigDecimal
_double double int Integer bigdecimal Bigdecimal
_float float integer Integer    

● 自定义别名

- 单个别名定义

<typeAliases>
<typeAlias type="com.sikiedu.beans.User" alias="user" />
</typeAliases>

- 批量定义别名:推荐

使用package包形式来配置别名,包的形式会扫描主包及子包中所有文件;

以对象类名为别名,大小写不限,推荐使用小写。

<typeAliases>
<package name="com.sikiedu.beans" />
</typeAliases>

- UserMapper.xml引用别名

<select id="findUserById" parameterType="int" resultType="user" >
  select * from t_user where id=#{id}
</select>

typeHandlers - 类型处理器

mybatis中通过typeHandlers完成jdbc类型和java类型的转换。

通常情况下,mybatis提供的类型处理器满足日常需要,不需要自定义.

mybatis支持类型处理器:

类型处理器

Java类型

JDBC类型

BooleanTypeHandler

Boolean,boolean

任何兼容的布尔值

ByteTypeHandler

Byte,byte

任何兼容的数字或字节类型

ShortTypeHandler

Short,short

任何兼容的数字或短整型

IntegerTypeHandler

Integer,int

任何兼容的数字和整型

LongTypeHandler

Long,long

任何兼容的数字或长整型

FloatTypeHandler

Float,float

任何兼容的数字或单精度浮点型

DoubleTypeHandler

Double,double

任何兼容的数字或双精度浮点型

BigDecimalTypeHandler

BigDecimal

任何兼容的数字或十进制小数类型

StringTypeHandler

String

CHAR和VARCHAR类型

ClobTypeHandler

String

CLOB和LONGVARCHAR类型

NStringTypeHandler

String

NVARCHAR和NCHAR类型

NClobTypeHandler

String

NCLOB类型

ByteArrayTypeHandler

byte[]

任何兼容的字节流类型

BlobTypeHandler

byte[]

BLOB和LONGVARBINARY类型

DateTypeHandler

Date(java.util)

TIMESTAMP类型

DateOnlyTypeHandler

Date(java.util)

DATE类型

TimeOnlyTypeHandler

Date(java.util)

TIME类型

SqlTimestampTypeHandler

Timestamp(java.sql)

TIMESTAMP类型

SqlDateTypeHandler

Date(java.sql)

DATE类型

SqlTimeTypeHandler

Time(java.sql)

TIME类型

ObjectTypeHandler

任意

其他或未指定类型

EnumTypeHandler

Enumeration类型

VARCHAR-任何兼容的字符串类型,作为代码存储(而不是索引)。

environments - 环境集合属性对象

● environment 元素是配置一个数据源的开始,属性id是它的唯一标识
● transactionManager 元素配置数据库事务,其中type属性有三种配置方式
  - jdbc,采用jdbc的方式管理事务;
  - managed,采用容器的方式管理事务,在JNDI数据源中使用;
  - 自定义,自定义数据库事务管理办法;
● dataSource 元素配置数据源连接信息,type属性是连接数据库的方式配置,有四种配置方式
  - UNPOOLED 非连接池方式连接
  - POOLED 使用连接池连接
  - JNDI 使用JNDI数据源

mappers - 映射配置

● 加载单个映射文件

- resource、url方法一次加载一个映射文件

- class属性:mapper接口加载单个映射配置文件;遵循一定的规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录中;

上边规范的前提是:使用的是mapper代理方法;

<mappers>
<!-- 单个配置 -->
<mapper resource="com/sikiedu/mapper/UserMapper.xml" />
<mapper url="file:\\\D:\Java\WorkSpace\JavaEE_SSM_Test\ssm_mybatis\src\com\sikiedu\mapper\UserMapper.xml" />
<mapper class="com.sikiedu.mapper.UserMapper" />
</mappers>

● 批量加载mapper - 推荐使用

   批量加载映射配置文件,mybatis自动扫描包下面的mapper接口进行加载;

遵循一定的规范:需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录中;

<!--配置映射器的位置 -->
<mappers>
<package name="com.sikiedu.mapper" />
</mappers>

♦ 另外,还可以通过自定义注解。当然,系统已经为我们提供了扫码工具【mybatis与spring集成】。

<bean id="mapperSanner" class="org.mybatis.spring.mapper.MapperSannerConfigurer">
  <property name="basePackage" value="com.xxx.mapper"></property>
</bean>

还有一种情况,当我们不使用spring只使用mybatis时,那么我们就需要自定义注解来扫描mapper文件,通过mybatis的配置来使用了。

最新文章

  1. VBS 获取当前进程 ID
  2. 常用excel技巧
  3. 关于checkbox最保险和最模棱两可的方法
  4. POJ1125 Stockbroker Grapevine
  5. mongodb复制集配置
  6. Java关键字final、static使用总结(转)
  7. [物理学与PDEs]第1章 电动力学
  8. Redis操作命令
  9. ASP防注入
  10. mount命令以及mount ntfs硬盘权限权限与显示的问题 分类: shell ubuntu 2014-11-08 18:29 148人阅读 评论(0) 收藏
  11. 十二生肖&amp;天干地支
  12. [UWP]不怎么实用的Shape指南:自定义Shape
  13. Android中的服务
  14. angular4.0如何引入外部插件1:import方案
  15. ruby写一个文件内容相似性比较的代码
  16. ADB抓取内存命令
  17. tensorflow 源码编译
  18. java springboot2 jquery 抽奖项目源码
  19. shell一些不为人知的技巧
  20. centos下编译安装mysql5.5/5.6/5.7

热门文章

  1. 使用CSS为图片添加更多趣味的5种方法
  2. 纯css制作小三角
  3. 关于UIPageViewController去除边缘点击手势
  4. cpu子系统(优化)
  5. range和arange
  6. phonegap 开发指南系列(3) ----在Eclipse中Android开发环境搭建
  7. Java 基础 - 原生类型
  8. thinkphp 包含文件
  9. Myeclipse从外部导入项目时,jsp和html页面中所有的onclick=&quot;return xx()&quot;位置均出现cannot return from outside function() or method()错误
  10. mongodb操作指令(二):索引,聚合,管道