Mybatis整理

什么是 MyBatis?

MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO为数据库中的记录。

编写第一个mybatis程序

首先创建配置文件mybatis-config.xml

 定义接口:

    public interface UserDaoMapper{

              //根据用户名Id来查询用户

                public User getUserById(integer id);

                //根据用户名来查找用户列表

                 List<User> getByUserName(String username);

                 //添加用户

                 void intsertUser(User user);

}

user.xml文件

SqlsessionFactoryutils工具类:

测试:

 

 注意:增,删,改别忘了提交事务,sqlsession.commit();

同时都不要忘记关闭session

SqlSessionFactoryBuilder:

一旦创建了 SqlSessionFactory,就不再需要它了。
局部变量
SqlSessionFactory:

说白就是可以想象为:数据库连接池。
SqlSessionFactory 一旦被创建就应该在应用的运行期间一直存在,没有任何理由丢弃它或重新创建另一个实例。
SqlSessionFactory 的最佳作用域是应用作用域。
最简单的就是使用单例模式或者静态单例模式。
SqlSession:

连接到连接池的一个请求!
SqlSession 的实例不是线程安全的,因此是不能被共享的,所以它的最佳的作用域是请求或方法作用域。
用完后需要赶紧关闭,否则资源被占用!
 

 传递包装的pojo

 

 

 查询用户的总记录数:

Integer getUserBycount();

 if标签和foreach标签的使用:

if:

 foreach:

 解决属性名和字段名不一致的问题

 resultMap解决:(重要)

 一对一关联查询

 一对多关联查询

 缓存(了解即可)
 简介
1. 什么是缓存[Cache]?
存在内存中的临时数据。
将用户经常查询的数据放在缓存(内存)中,用户去查询数据就不用从磁盘上(关系型数据库查询文件)查询,从缓存中查询,从而提高查询效率,解决了高并发系统的性能问题。


2. 为什么使用缓存?
减少和数据库的交互次数,减少系统开销,提高系统效率。
3. 什么样的数据能使用缓存?
经常查询并且不经常改变的数据。【可以使用缓存】
Mybatis缓存
Mybatis包含一个非常强大的查询缓存特性,它可以非常方便地定制和配置缓存。缓存可以极大的提升查询效率。
Mybatis系统中默认定义了两级缓存:一级缓存和二级缓存
默认情况下,只有一级缓存开启。(SqlSession级别的缓存,也称为本地缓存)
二级缓存需要手动开启和配置,它是基于namespace级别的缓存。
为了提高扩展性,Mybatis定义了缓存接口Cache,我们可以通过实现Cache接口来自定义二级缓存。
13.3 一级缓存
一级缓存也叫本地缓存:
与数据库同一次会话期间查询到的数据会放在本地缓存中。
以后如果需要获取相同的数据,直接从缓存中拿,没必要再去查询数据库

13.4 二级缓存
二级缓存也叫全局缓存,一级缓存作用域太低了,所以诞生了二级缓存;
基于namespace级别的缓存,一个名称空间,对应一个二级缓存;
工作机制
一个会话查询一条数据,这个数据就会被放在当前会话的一级缓存中;
如果当前会话关闭了,这个会话对应的一级缓存就没了;但是我们想要的是,会话关闭了,一级缓存中的数据被保存到二级缓存中;
新的会话查询信息,就可以从二级缓存中获取内容;
不同的mapper查出的数据就会放在自己对应的缓存(map)中;
步骤:

在mybatis-config.xml开启全局缓存
        <!--显示的开启全局缓存-->
        <setting name="cacheEnabled" value="true"/>
小结:

只要开启了二级缓存,在同一个Mapper下就有效;
所有的数据都会先放在一级缓存中;
只有当会话提交或者关闭的时候,才会提交到二级缓存中!
 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值