Mybatis总结:mybatis的配置详解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mybatis总结:mybatis的配置详解相关的知识,希望对你有一定的参考价值。

 1.environments:它是配置mybatis当前工作的数据库环境的地方。

  2. dataSource:表示的是数据源:至少会包括该链接数据库的各种信息。

        dataSource的类型type属性可以配置成其内置类型之一,如UNPOOLED,POOLED,JNDI。

            UNPOOLED:mybatis会为每一个数据库创建一个新的链接,使用完了并关闭,该方式只适用于只有小规模数量并发用户的简单应用程序上。

            POOLED:mybatis会创建一个数据库连接池,连接池中的一个连接将会被用作数据库操作。一旦数据库操作完成,mybatis会将此连接返回给连接池。

             JNDI:MyBatis从在应用服务器向配置好的JNDI数据源dataSource获取数据库连接。在生产环境中,优先考虑这种方式。(Web应用项目开发建议使用JNDI)。

  1. transactionManager元素 :事务管理器

MyBatis支持两种类型的事务管理器:JDBC 和 MANAGED.

  1. properties元素:用来定义配置文件中可以使用的变量名和变量值。
  2. typeAliases元素: 类型别名

              <typeAliases>

                          <typeAlias type="com.zzuli.bean.Student" alias="Student" />

       </typeAliases>

还有另外一种方式为JavaBeans起别名,使用注解 @Alias:

         @Alias("stu")

         public class Student{

                ....

         }

         @Alias注解将会覆盖配置文件中的<typeAliases>定义。

          注意: @Alias 要和<package name=""/>标签配合使用,Mybatis会自动查看指定包内的类别名注解,如果没有这个注解,那么默认的别名就是类的名字

<!--<package name="com.briup.mappers"/>  -->

  1. typeHandlers元素: 自定义类型处理器

            <!-- 注册自定义类型处理器 -->

               <typeHandlers>

                    <typeHandler handler="com.briup.handler.Phonehandler"/>

    </typeHandlers>

  处理器有两种:

Mybatis内置的类型处理器                        

自定义类型处理器

   //自定义的类处理器

//泛型参数时用来指定需要

public class Phonehandler extends BaseTypeHandler<PhoneNumber>{

    //告诉mybatis遇到PhoneNumber类型时,如何封装

       @Override

       public PhoneNumber getNullableResult(ResultSet rs, String name) throws SQLException {

              // TODO Auto-generated method stub

              return new PhoneNumber(rs.getString(name));

       }

       @Override

       public PhoneNumber getNullableResult(ResultSet rs, int index) throws SQLException {

              // TODO Auto-generated method stub

              return new PhoneNumber(rs.getString(index));

       }

       @Override

       public PhoneNumber getNullableResult(CallableStatement arg0, int arg1) throws SQLException {

              // TODO Auto-generated method stub

              return null;

       }

//告诉mybatis遇到PhoneNUMBER之后如何给PreparedStatement

       @Override

       public void setNonNullParameter(PreparedStatement pst, int index, PhoneNumber phone, JdbcType arg3) throws SQLException {

              // TODO Auto-generated method stub

              pst.setString(index, phone.getAsString());

       }  

}

  1. settings元素: 全局参数设置
  2. mappers元素: SQL映射
  3. 结果集映射 ResultMaps:

  它是用来将select语句的结果集映射到java对象的属性中

  简单的ResultMaps:

  <resultMap id="StudentResult" type="com.zzuli.bean.Student">

    <id property="studId" column="stud_id" /> //id代表主键

    <result property="name" column="name" />

    <result property="email" column="email" />

    <result property="phone" column="phone" />

   </resultMap>

      id:代表主键,应该在此命名空间内是唯一的。

      type:完全限定类名或者是返回类型的别名。

      <result>子元素被用来将一个resultset列映射到对象的一个属性中。

resultType和resultMap两者之间的区别:

    resultType和resultMap二者只能用其一,不能同时使用。

           对应的接口中的方法,你写什么类型的集合,mybatis就会返回什么样的集合,但是要注意使用SortedSet的时候,Student类需要实现Comparable接口,否则不能进行排序的。

resultType:当使用resultType做SQL语句返回结果类型处理时,对于SQL语句查询出的字段在相应的pojo中必须有和它相同的字段对应,而resultType中的内容就是pojo在本项目中的位置。

resultMap:当使用resultMap做SQL语句返回结果类型处理时,通常需要在mapper.xml中定义resultMap进行pojo和相应表字段的对应。

  1.  association是关联的意思

       元素<association>被用来导入“有一个”(has-one)类型的关联。

   11.一对多,collection;

  1. 12.  selectKey一对多;

13. 缓存

将从数据库中加载的数据缓存到内存中,是很多应用程序为了提高性能而采取的一贯做法。默认情况下,mybatis会启用一级缓存;即,如果你使用同一个SqlSession接口对象调用了相同的SELECT语句,则直接会从缓存中返回结果,而不是再查询一次数据库。注意:session调用commit或close方法后,一级缓存就会被清空

二级缓存: 在不同的session对象之间可以共享缓存数据

1.mybatis-config.xml文件中保证<setting name="cacheEnabled" value="true"/>设置中是缓存功能是开启的, 默认就是开启的true

2.在需要二级缓存的xml映射文件中,手动开启缓存功能,在根元素中加入一个标签即可:<cache/>

3.一个session查询完数据之后,需要调用commit或者close方法后,这个数据才会进入到缓存中,然后其他session就可以共享到这个缓存数据了

注意:默认情况下,被二级缓存保存的对象需要实现序列化接口,可以通过cache标签的readOnly属性进行设置

14. 使用RowBounds对结果集进行分页

以上是关于Mybatis总结:mybatis的配置详解的主要内容,如果未能解决你的问题,请参考以下文章

MyBatis(详)

MyBatis(详)

Mybatis全面详解——上(学习总结)

MyBatis配置文件 —— 相关标签详解

mybatis基本配置详解

Mybatis Generator最完整配置详解[mybatis代码自动生成配置]