我所知的Mybatis02————SqlMapConfig属性配置研究

xml约束:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
</configuration>

 

全部写在<configuration>中,听说该配置文件的中属性的存放是有顺序的,没有办法随意的乱放,因为以后和spring整合,所以没注意也不用注意,配置顺序是

<properties>
     加载属性文件
<settings>
     设置全局参数
<typeAliases>
     设置类型的别名
<typeHandlers>
     设置类型处理器
<objectFactory>
     设置对象工厂
<objectWrapperFactory>
     不知道
<reflectorFactory>
     没用过
<plugins>
     设置插件
<environments>
     环境信息集合
<databaseIdProvider>
     多数据库支持
<mappers>
     配置映射文件

 




























1. properties加载属性文件(被spring整合后就不用写了)

 

可以将数据库连接参数单独配在db.properties(file类型)文件中,然后在SqlMapConfig.xml中加载db.properties的属性值,这样可以随时变数据库地址而不用改变代码

例:db.properties:db.driver = com.mysql.jdbc.Driver    xml:<property name="driverClass" value="${db.driver}"></property>

 

========================================================================================================================================

 

2. settings全局参数配置

settings里也有很多属性,最常用的是开启二级缓存和延迟加载

延迟加载:延迟加载的意思是说在关联查询时利用延迟加载先加载主信息。需要关联信息时再去按需加载关联信息。这样会大大提高数据库性能,因为查询单表要比关联查询多张表速度要快。Mybatis默认是不开启延迟加载功能的我们需要手动开启。

 

<!-- 配置延迟加载 -->
<settings>

  <setting name="lazyLoadingEnabled" value="true"/>  //全局性设置懒加载。如果设false,则所有相关联的都会被初始化加载。默认为true

  <setting name="aggressiveLazyLoading" value="false"/> //积极的懒加载,false的话按需加载

</settings>

关于延迟加载的个人理解:比如有一个User和一个Order(主要查Order信息),有时需要两者关联查询的信息,有时只需要Order的信息,在不需要查User信息的时候就可以不连带着一起查,提示数据库查询效率。

 

<!-- 配置二级缓存 -->
<settings>

  <setting name="cacheEnabled" value="true"/>

</settings>

注:1、一级缓存是SqlSession级别的缓存。不同的sqlSession之间的缓存数据区域(HashMap)是互相不影响的。Mybatis默认开启一级缓存。

  2、二级缓存是mapper级别的缓存,多个SqlSession去操作同一个Mappersql语句,多个SqlSession可以共用二级缓存,二级缓存是跨SqlSession的。

  3、缓存原理:在操作数据库时需要构造 sqlSession对象,在对象中有一个(内存区域)数据结构(HashMap)用于存储缓存数据。

     例:查询id为1的用户——数据库查询并生成缓存;再次查询id为1的用户——不走数据库从缓存中提取;进行增删改操作——清空缓存防止脏读;

  4、在需要开启二级缓存的Mapper映射xml文件中配置:<cache/>

  5、禁用当前select语句的二级缓存:userCache=false。例<select id="findUserById" parameterType="int" resultType="com.aishang.domain.User" useCache="false">

  6、刷新(清空)二级缓存:flushCache=true。默认select语句是flase,insert/update/delete语句默认是true

 

 ========================================================================================================================================

 

3. typeAiases别名

单个定义别名:type——路径 alias——自己手动定义的别名

<typeAliases><typeAlias type="com.aishang.domain.User" alias="user"/></typeAliases>

批量配置别名:扫描该路径下的包,自动根据类名配置别名

<typeAliases>

  <package name="com.aishang.domain"/>

  <package name="其它包"/>

</typeAliases>

UserMapper.xml引用别名:

<select id="findUserById" parameterType="int" resultType="user" >

  select * from tb_user where id=#{id}

</select>

如果不配置别名,resultType就要写全称:resultType="com.aishang.domain.User"

 

 ========================================================================================================================================

 

4:mappers映射配置

<!-- 加载映射文件 -->

 <mappers>

  <!--通过resource方法一次加载一个映射文件 -->

  <mapper resource="User.xml"/>

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

  <mapper class="com.mybatis.mapper.UserMapper"/>

  <!-- 批量加载映射配置文件,需要将mapper接口类名和mapper.xml映射文件名称保持一致,且在一个目录中;-->

  <package name="com.mybatis.mapper"/> 

</mappers>

 

主要属性是以上这些,其余的属性似乎是默认的最优配置,所以不需要手动配置,大概……

posted @ 2018-02-06 17:12  输入贩卖元  阅读(168)  评论(0编辑  收藏  举报