返回顶部
首页 > 资讯 > 后端开发 > Python >MyBatis 的 XML 配置文件和缓存使用步骤
  • 534
分享到

MyBatis 的 XML 配置文件和缓存使用步骤

2024-04-02 19:04:59 534人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录mybatis缓存介绍MyBatis的XML整体介绍一、整体配置文件介绍二、Mybatis拦截器【不做要求】参考案例三、缓存使用步骤MyBatis缓存介绍 正如大多数持久层框架一

MyBatis缓存介绍

正如大多数持久层框架一样,MyBatis 同样提供了一级缓存和二级缓存的支持

1.一级缓存: 基于PerpetualCache 的 HashMap本地缓存,其存储作用域为 Session,当 Session flush 或 close 之后,该Session中的所有 Cache 就将清空。
2. 二级缓存与一级缓存其机制相同,默认也是采用 PerpetualCache,HashMap存储,不同在于其存储作用域为 Mapper(Namespace),并且可自定义存储源,如 Ehcache。

3. 对于缓存数据更新机制,当某一个作用域(一级缓存Session/二级缓存Namespaces)的进行了 C/U/D 操作后,默认该作用域下所有 select 中的缓存将被clear。

MyBatis 包含一个非常强大的查询缓存特性,它可以非常方便地配置和定制。MyBatis 3 中的缓存实现的很多改进都已经实现了,使得它更加强大而且易于配置。下面给大家详细介绍 MyBatis 的 XML 配置文件和缓存使用步骤,内容如下所示:

MyBatis的XML整体介绍

MyBatis 的 XML 配置文件结构如下: 
configuration 配置 
	properties 属性
	settings 设置
	typeAliases 类型命名
	typeHandlers 类型处理器
	objectFactory 对象工厂
	plugins 插件
	environments 环境 
		environment 环境变量 
		transactionManager 事务管理器
	dataSource 数据源

	databaseIdProviderchinese?
	mappers 映射器

一、整体配置文件介绍

<properties resource="jdbc.property">
	<property name="passWord" value="123456"/>
</properties>

<?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>
    <!--其他地方可以使用${password}来引用这个变量-->
    <properties resource="jdbc.property">
        <property name="password" value="123456"/>
    </properties>
    <!--MyBatis设置信息-->
    <settings>
        <!--启用延迟加载数据、cacheEnabled,lazyLoadingEnabled-->
        <!--
			1、延迟加载:用的时候就查询、不用的时候并不会查询
			2、即使加载:不管你用不用、都会去数据库查询出来
		-->
        <setting name="cacheEnabled" value="true"/>
        <setting name="lazyLoadingEnabled" value="true"/>
        <!--选择日志、选择后需要导入对应的jar包和配置-->
        <setting name="logImpl" value="log4j"/>
    </settings>
    <!--别名扫描包-->
    <typeAliases>
        <package name="package.mybatis.bean"/>
    </typeAliases>
    <!--数据源设置、可以设置多个数据源environment---
    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="${driver}"/>
                <property name="url" value="${url}"/>
                <property name="username" value="${username}"/>
                <property name="password" value="${password}"/>
            </dataSource>
        </environment>
    </environments>
	<!--Mapper映射文件设置-->
    <mappers>
        <!--XML配置-->
        <mapper resource="package/mybatis/mapper/StudentMapper.xml"/>
        <!--单个接口配置-->
        <mapper class="package.mybatis.dao.StudentDao"/>
        <!--多个接口配置、包扫描模式、一次性配置package.mybatis.dao包下面的所有接口-->
        <package name="package.mybatis.dao"/>
    </mappers>
</configuration>

二、Mybatis拦截器【不做要求】

拦截器名作用
Executor拦截执行器的方法
ParameterHandler拦截参数的处理
ResultHandler拦截结果集的处理
StatementHandler拦截sql语法构建的处理

实际上、Executor就能处理所有、其他的并不怎么好用

参考案例

//@Intercepts:标识该类是一个拦截器
//@Signature:指明自定义拦截器需要拦截哪一个类型,哪一个方法;
//	type:对应四种类型中的一种;
//	method:对应接口中的哪类方法(因为可能存在重载方法);
//	args:方法参数
@Intercepts({
	@Signature(type = Executor.class, method = "update", args = { MappedStatement.class,Object.class }),
	@Signature(type = Executor.class, method = "query", args = { 				MappedStatement.class,Object.class,RowBounds.class,ResultHandler.class })
})
public class MyPlugin implements Interceptor {
	@Override
	public Object intercept(Invocation invocation) throws Throwable {
		if ("update".equals(invocation.getMethod().getName())) {
			MappedStatement mstt = (MappedStatement) invocation.getArgs()[0];
			Object object = invocation.getArgs()[1];
			Student info=(Student)object;
            //修改用户sql语句的参数
			info.setName("我不是汉武帝");
		}
		System.out.println("方法执行");
		return invocation.proceed();
	}
	@Override
	public Object plugin(Object target) {
		return Plugin.wrap(target, this);
	}
	@Override
	public void setProperties(Properties properties) {
	}
}
<!--配置文件-->
<plugins>
	<plugin interceptor="package.plugin.MyPlugin">
	    <property name="name" value="admin"/>
	</plugin>
</plugins>

三、缓存

一级缓存 session级别、【默认开启】、增删改默认刷新一级缓存(一定要commit哦)

一级缓存是SqlSession级别的缓存。在操作数据库时需要构造 sqlSession对象,mybatis 使用HashMap 来存储缓存数据。不同的sqlSession之间的缓存数据区域(HashMap),所以是互不影响的

二级缓存【默认是关闭、不常用】

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

使用步骤


1、修改mybatis-config.xml的setting设置
	<setting name="cacheEnabled" value="true"/>
2、Mapper.XML:加入:<cache/>
3、缓存的bean要实现序列化接口 Serializable
4、一定要关闭第一个sqlSession

//SqlSession:连接对象Connection、mybatis的session并不是会话,指的就是Sql的Connection
		SqlSession session1 = sqlSessionFactory.openSession();
		SqlSession session2 = sqlSessionFactory.openSession();
		
		//为了使用缓存、sql语句一定要统一规范
		StudentDao dao1=session1.getMapper(StudentDao.class);
		System.out.println("查询一次数据");
		List<Student> list1 = dao1.getStudentAll();
		for (Student student : list1) {
			System.out.println(student);
		}
		session1.close();
		System.out.println("第二次查询数据");
		Thread.sleep(10000);
		StudentDao dao2=session2.getMapper(StudentDao.class);
		System.out.println("查询一次数据");
		List<Student> list2 = dao2.getStudentAll();
		for (Student student : list2) {
			System.out.println(student);
		}

到此这篇关于MyBatis 的 XML 配置文件和缓存的文章就介绍到这了,更多相关MyBatis XML 配置文件内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: MyBatis 的 XML 配置文件和缓存使用步骤

本文链接: https://lsjlt.com/news/162962.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • MyBatis 的 XML 配置文件和缓存使用步骤
    目录MyBatis缓存介绍MyBatis的XML整体介绍一、整体配置文件介绍二、Mybatis拦截器【不做要求】参考案例三、缓存使用步骤MyBatis缓存介绍 正如大多数持久层框架一...
    99+
    2024-04-02
  • nginx 缓存使用及配置步骤
    目录前言Nginx的web缓存Nginx缓存设置相关指令配置实例实验演示其他配置参数说明缓存配置案例展示环境准备配置步骤Nginx设置资源不缓存案例展示proxy_cache_byp...
    99+
    2024-04-02
  • IDEA创建MyBatis配置文件模板的方法步骤
    Mybatis的配置文件不像Spring的配置文件,在Maven当中添加过依赖之后就可以在下面这个地方打开,需要自己去手动去编写配置文件,但是自己编写的话会记不住要引入的DTD,所以...
    99+
    2024-04-02
  • Java缓存ehcache的使用步骤
    目录一、pom.xml二、编写ehcache.xml三、参数简介四、Ehcache的缓存数据淘汰策略五、编写spring-ehcache.xml六、与Spring整合,导入到spri...
    99+
    2024-04-02
  • 使用SpringBoot2.x配置静态文件缓存
    HTTP浏览器缓存 对这部分知识不太熟悉的,可以先看一下这篇文章:HTTP浏览器缓存机制 配置文件yml配置 spring: resources: static-loca...
    99+
    2024-04-02
  • 使用Mybatis如何实现配置二级缓存
    这篇文章给大家介绍使用Mybatis如何实现配置二级缓存,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Mybatis的二级缓存配置相当容易,要开启二级缓存,只需要在你的Mapper 映射文件中添加一行:<...
    99+
    2023-05-31
    mybatis 二级缓存
  • SpringBoot 配置文件加密的步骤
    目录SpringBoot 配置文件加密 编码 其他 SpringBoot 配置文件加密 本章将对SpringBoot配置文件中的数据加密做自定义开发. 在SpringBoot开发过...
    99+
    2024-04-02
  • 使用log4j2自定义配置文件位置和文件名(附log4j2.xml配置实例)
    目录log4j2自定义配置文件位置和文件名web.xml配置生效配置文件日志配置文件实例log4j2.xml配置及例子1.使用log4j2需要下载包2.配置文件可以有三种格式3.日志...
    99+
    2024-04-02
  • SpringBoot集成Mybatis+xml格式的sql配置文件操作
    SpringBoot集成Mybatis+xml格式的sql配置文件 最近一直在研究SpringBoot技术,由于项目需要,必须使用Mybatis持久化数据。所以就用SpringBoo...
    99+
    2024-04-02
  • Python使用LRU缓存策略进行缓存的方法步骤
    目录一、Python 缓存① 缓存作用② 使用 Python 字典实现缓存二、深入理解 LRU 算法① 查看 LRU 缓存的特点② 查看 LRU 缓存的结构三、使用 lru_cach...
    99+
    2024-04-02
  • SpringBoot使用Redis缓存MySql的方法步骤
    目录1 项目组成2 运行springboot2.1 官网download最基本的restful应用2.2 运行应用3 访问mysql4 设置redis缓存1 项目组成 应用:spri...
    99+
    2024-04-02
  • odoo中使用redis实现缓存的步骤
    Odoo中使用Redis实现缓存可以提高系统性能,避免频繁的数据库查询。下面是利用Redis实现Odoo缓存的步骤:       1、安装Redis 首先需要安装Redis数据库。可以参考官...
    99+
    2023-04-07
    odoo redis缓存 redis缓存
  • 使用TeXLive2022和VSCode安装配置步骤(LaTeX写论文)
    目录一、VS Code的下载与安装下载VS Code安装VS Code二、TeXLive2022安装1.下载TeXLive20222.安装TeXLive2022三、LaTeX Wor...
    99+
    2024-04-02
  • Mysql配置my.ini文件的步骤是什么
    这篇文章主要介绍“Mysql配置my.ini文件的步骤是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Mysql配置my.ini文件的步骤是什么”文章能帮助大家...
    99+
    2023-04-19
    mysql
  • SpringBoot使用Mybatis&Mybatis-plus文件映射配置方法
    简介: Springboot使用Mybatis&Mybatis-plus 两者文件映射配置略有不同,之前我用的是Mybatis,但公司用Mybatis-plus;自己新建了一...
    99+
    2024-04-02
  • Mybatis的一级缓存和二级缓存原理分析与使用
    目录Mybatis的一级缓存和二级缓存1 Mybatis如何判断两次查询是完全相同的查询2 二级缓存2.1 二级缓存配置2.2 二级缓存特点2.3 配置二级缓存2.4 测试Mybat...
    99+
    2024-04-02
  • Numy Linux 中 ASP 文件的安装和配置步骤是什么?
    ASP(Active Server Pages)是一种基于微软的服务器端脚本技术,可以用于创建动态网站和Web应用程序。在Numy Linux上安装和配置ASP文件需要一些特定的步骤。在本文中,我们将介绍如何在Numy Linux上安装和...
    99+
    2023-09-09
    文件 numy linux
  • mybatis Mapper的xml文件中resultType值的使用说明
    目录Mapper的xml文件中resultType值①返回一般数据类型的值②当返回类型是javaBean③当返回是List类型④返回类型数Map结构⑤说一下关于mybatis里面ma...
    99+
    2024-04-02
  • SpringBoot项目中使用redis缓存的方法步骤
    本文介绍了SpringBoot项目中使用redis缓存的方法步骤,分享给大家,具体如下:Spring Data Redis为我们封装了Redis客户端的各种操作,简化使用。 - 当Redis当做数据库或者消息队列来操作时,我们一般使用Red...
    99+
    2023-05-30
    spring boot redis
  • 部署和配置YUM软件仓库的步骤
    这篇文章主要介绍“部署和配置YUM软件仓库的步骤”,在日常操作中,相信很多人在部署和配置YUM软件仓库的步骤问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”部署和配置YUM软件仓库的步骤”的疑惑有所帮助!接下来...
    99+
    2023-06-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作