Mybatis学习总结(一) 介绍

1.什么是Mybatis?    

MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以对配置和原生Map使用简单的 XML 或注解,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。

2.Mybatis需要的包

<dependency>
	<groupId>org.mybatis</groupId>
	<artifactId>mybatis</artifactId>
	<version>3.2.6</version>
</dependency>
<!-- 导入Mysql数据库链接jar包 -->    
<dependency>    
        <groupId>mysql</groupId>    
        <artifactId>mysql-connector-java</artifactId>    
        <version>5.1.39</version>    
</dependency>  

3. 获取 SqlSession

    每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为中心的。SqlSessionFactory 的实例可以通过SqlSessionFactoryBuilder 获得。而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先定制的 Configuration 的实例构建出 SqlSessionFactory 的实例。
    从 XML 文件中构建 SqlSessionFactory 的实例非常简单,建议使用类路径下的资源文件进行配置。但是也可以使用任意的输入流(InputStream)实例,包括字符串形式的文件路径或者 file:// 的 URL 形式的文件路径来配置。MyBatis 包含一个名叫 Resources 的工具类,它包含一些实用方法,可使从 classpath 或其他位置加载资源文件更加容易。

Reader reader = Resources.getResourceAsReader("mybatis.xml");
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader);
sqlSession = factory.openSession(true); // true 参数代表自动提交事务,否则需要手动管理事务,不然更改数据库的操作不能COMMIT


mybatis.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>
	<environments default="development">
		<environment id="development">
			<transactionManager type="JDBC" />
			<dataSource type="POOLED">
				<property name="driver" value="com.mysql.jdbc.Driver" />
				<property name="url" value="jdbc:mysql://localhost:3306/db_nba?allowMultiQueries=true" /><!-- allowMultiQueries 允许一次性执行多个SQL,否则在一个映射文件中执行多个条SQL时会报格式错误 -->
				<property name="username" value="root" />
				<property name="password" value="123456" />
				<property name="defaultAutoCommit" value="true"/> <!-- 配置事务自动提交,但是没有用 -->
			</dataSource>
		</environment>
	</environments>
	<mappers>
		<mapper resource="resources/mybatis/PlayerMapper.xml" />
	</mappers>
</configuration>


4. Mybatis的缓存机制
    MyBatis 包含一个非常强大的查询缓存特性,它可以非常方便地配置和定制。MyBatis 3 中的缓存实现的很多改进都已经实现了,使得它更加强大而且易于配置。默认情况下是没有开启缓存的,除了局部的 session 缓存,可以增强变现而且处理循环 依赖也是必须的。要开启二级缓存,你需要在你的SQL 映射文件中添加一行

<cache/>

MyBatis支持二级缓存:

一级缓存:基于porpetualCache的HashMap本地缓存,存储作用域为session,当session被close或者flush后会被清空。

二级缓存:基于porpetualCache的HashMap本地缓存,存储作用域为Mapper(文件域),可自定义存储源。

当一个作用域(session,Mapper)内进行了CUD操作后,作用域下所有select缓存将被update。

三种情况下不能使用一级缓存:

1.执行了session.clearCache()

2.执行了CUD操作

3.不是同一个session

4.当不是一个session时只要使用同一个mapper文件中的select,使用二级缓存。

关于缓存的其他知识点:

1.映射语句文件中的所有 select 语句将会被缓存。
2.映射语句文件中的所有 insert,update 和 delete 语句会刷新缓存。
3.缓存会使用 Least Recently Used(LRU,最近最少使用的)算法来收回。
4.根据时间表(比如 no Flush Interval,没有刷新间隔), 缓存不会以任何时间顺序 来刷新。
5.缓存会存储列表集合或对象(无论查询方法返回什么)的 1024 个引用。
6.缓存会被视为是 read/write(可读/可写)的缓存,意味着对象检索不是共享的,而 且可以安全地被调用者修改,而不干扰其他调用者或线程所做的潜在修改。


参考文献:

http://www.yiibai.com/mybatis/

http://www.mybatis.org/mybatis-3/zh/index.html



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值