回过头来重新梳理一下几个基础框架 一 持久层的变迁历史 想一想,我最原始的最初的持久层是jdbc,我大二不会框架用了很久原生的.... // 打开连接 conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/gp-mybatis // 打开连接 conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/gp-mybatis 半自动的Mybatis,之前的hibernate和springdata jpa对各种代码封装程度要高一点,提供了比较完整的工具,但是这也意味些我们对其自定义开发程度不高. 强大的Mybatis优点或者特性 1、 使用连接池对连接进行管理 2、 SQL 和代码分离,集中管理 3、 结果集映射 4、 参数映射和动态 SQL 5、 重复 SQL 的提取 6、 缓存管理
10. MyBatis缓存 前言 上一篇章我们已经了解了 MyBatis 加载策略,本篇章再来认识一下 MyBatis 缓存。 什么是缓存? # 缓存和缓冲的区别 1. “经常访问但又不经常修改的数据... ” 缓存是用来提高再次查询效率的,所有的持久层框架基本上都有缓存机制 Mybatis也提供了缓存策略,分为一级缓存,二级缓存 一级缓存 介绍 MyBatis 一级缓存是 DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis 知识小结 1. mybatis的缓存,都不需要我们手动存储和获取数据。mybatis自动维护的。 2. 使用mybatis,如果是中小型项目,使用自带缓存的机制是可以满足需求的。 如果是大型(分布式)项目,mybatis的缓存灵活性不足,需要使用第三方的缓存技术解决问题。
@toc一、MyBatis简介1.1 MyBatis历史MyBatis最初是Apache的一个开源项目iBatis, 2010年6月这个项目由Apache Software Foundation迁移到了 1.2 MyBatis特性MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集MyBatis可以使用简单的 ,则去镜像网站中下载没有,则去中央仓库中下载本人其他相关文章链接1.一、MyBatis简介:MyBatis历史、MyBatis特性、和其它持久化层技术对比、Mybatis下载依赖包流程2.二、搭建MyBatis 采用xml方式,验证CRUD(增删改查操作)3.三、MyBatis核心配置文件详解4.四、MyBatis获取参数值的两种方式(重点)5.五、MyBatis的增删改查模板(参数形式包括:String、对象 )9.九、MyBatis动态SQL10.十、MyBatis的缓存11.十一、MyBatis的逆向工程12.十二、MyBatis分页插件
来说都是可以自动类型识别的: 也就是说对于mybatis来说,它是可以自动推断出ps.setXxxx()方法的。 因为mybatis它有强大的自动类型推断机制。 javaType:可以省略 jdbcType:可以省略 parameterType:可以省略 如果参数只有一个的话,#{} 里面的内容就随便写了。 StudentMapper接口 , 需求:根据name查、根据id查、根据birth查、根据sex查 package com.north.mybatis.mapper; import com.north.mybatis.pojo.Student DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis ; import com.north.mybatis.mapper.StudentMapper; import com.north.mybatis.pojo.Student; import com.north.mybatis.utils.SqlSessionUtil
一级缓存的理解: Mybatis 的一级缓存是指默认开启的、基于 SqlSession 的缓存。 通过开启 Mybatis 的二级缓存,可以避免因为一级缓存的使用不当而导致的数据不一致问题,提高应用程序的性能。 Mybatis 的二级缓存是由一个叫做 Cache 的接口来定义的,可以通过配置相关的 Cache 实现来进行二级缓存的管理。 MyBatis 缓存查询的顺序 先查询二级缓存,因为二级缓存中可能会有其他程序已经查出来的数据,可以拿来直接使用。 -- Mybatis EHCache整合包 --> <dependency> <groupId>org.mybatis.caches</groupId> <artifactId>mybatis-ehcache
PrivilegeProvider类 2.PrivilegeMapper接口增加接口方法 3.单元测试 小结 概述 除了@Select @Insert @Update @Delete四种注解可以使用简单的SQL外,MyBatis 下面通过@SelectProvider来了解下Provider注解方式的基本用法 @SelectProvider 1.开发PrivilegeProvider类 package com.artisan.mybatis.xml.provider ; import org.apache.ibatis.annotations.SelectProvider; import com.artisan.mybatis.xml.domain.SysPrivilege ; import com.artisan.mybatis.xml.provider.PrivilegeProvider; /** * * * @ClassName: PrivilegeMapper id=1, privilegeName=用户管理, privilegeUrl=/users] ---- 小结 最常用的注解我们简单的介绍了下使用方式,但是注解方式并不是主流,因此不深究,更多用法请参考MyBatis
今天就从浅入深,分享 10 个让人眼前一亮的 MyBatis 开发技巧,每一个都配上具体的场景和代码示例,务求通俗易懂,希望对你会有所帮助。 1. MyBatis-Plus 的分页功能 很多小伙伴在做分页的时候,习惯自己写 LIMIT 的 SQL,这样不仅麻烦,还容易出错。 其实,用 MyBatis-Plus 的分页插件能省不少事。 示例:MyBatis-Plus 分页功能 Page<User> page = new Page<>(1, 10); // 第 1 页,每页 10 条 IPage<User> userPage = userMapper.selectPage 10. 多数据源支持 当系统需要连接多个数据库时,可以通过 MyBatis 的多数据源配置轻松搞定。 总结 MyBatis 的魅力在于简单、高效,但很多时候我们用得太“基础”,没有发挥它的全部潜力。 希望这 10 个技巧能帮你更高效地使用 MyBatis,也让你的代码看起来更“惊艳”。
如果你查过万年历,会发现1582年10月居然少了10天! ? Linux上有个cal命令可以查日历,如果你查过1752年,可能会奇怪,为什么9月2号后面是14号,却是丢失了11天! 11 2 3 4 5 6 7 8 8 9 10 11 12 13 14 12 13 14 15 16 17 18 9 10 11 12 13 14 15 15 16 11 3 4 5 6 7 8 9 7 8 9 10 11 12 13 12 13 14 15 16 17 18 10 11 12 13 14 15 16 14 15 因此,格里历开始实行时,将儒略历1582年10月4日星期四的次日,为格里历1582年10月15日星期五,即有10天被删除,但原星期的周期保持不变。 1582年2月,罗马教廷要求从1582 年10月中减去10天,因此1852 年10月4日后面紧跟着就是15日。在意大利、西班牙等国家都这样处理了。
-- mybatis核心包 --> <dependency> <groupId>org.mybatis</groupId> <artifactId DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org /dtd/mybatis-3-config.dtd"> <configuration> <! DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis
代码直接放在Github仓库【https://github.com/Damaer/Mybatis-Learning/tree/master/mybatis-06-resultMap】,可直接运行,就不占篇幅了 -- mybatis核心包 --> <dependency> <groupId>org.mybatis</groupId> <artifactId DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis
Windows 10今天正式退出历史舞台,标志着微软进入了全面推广Windows 11的新阶段。这是一个标志性时刻,因为Windows 10自2015年发布以来,已经成为全球最广泛使用的操作系统之一。 微软宣布,Windows 10将在2025年10月14日结束技术支持,也就是今天。 全球Windows 10设备数量根据多个来源的统计,Windows 10在全球的用户数量曾一度接近15亿台,成为全球最常用的桌面操作系统。 不过随着Windows 11逐步普及,预计Windows 10的市场份额将会有所下降。据最近的统计数据,目前全球约有10亿台左右的设备仍在运行Windows 10。 企业和教育机构的影响:许多企业和教育机构还在使用Windows 10,尤其是大型企业,因为Windows 10的稳定性使得这些组织不急于升级。
com.softwareMan.dao.OrdersDao.findByUserId") //执行那个接口的那个方法 ) }) List<User> findone_two(); 二、Mybatis --开启Mybatis支持延迟加载--> <setting name="lazyLoadingEnabled" value="true"/> <setting name="aggressiveLazyLoading " value="false"></setting> </settings> 二、Mybatis 缓存 1.
Mybatis 手撸专栏 第21章:Mybatis 框架源码10种设计模式分析本文是《Mybatis 手撸专栏》系列的第21章,将深入探讨 Mybatis 框架源码中使用的10种设计模式。 我们将一起通过代码分析和解释,了解这些设计模式在 Mybatis 中的运用,以及它们对框架的贡献。1. 在 Mybatis 框架中,SqlSessionFactory 类就是使用单例模式创建的。它负责创建和管理 SqlSession 对象,是整个 Mybatis 框架的核心。 10. 外观模式(Facade)外观模式是一种结构型设计模式,它提供了一个统一的接口,用于访问子系统中的一组接口。通过使用外观模式,我们可以简化复杂系统的使用,并隐藏系统的复杂性。 希望这篇文章帮助您更好地理解 Mybatis 框架中的设计模式应用。如果您还有任何问题,请随时向我提问。感谢阅读!
墨墨导读:通过历史控制文件恢复数据库,只需这10步。 1. 使用rman恢复历史备份的控制文件 RMAN> restore controlfile from autobackup; Starting restore at 2020-03-13 12:51:11 allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=10 device type=DISK recovery area destination set channel ORA_DISK_1: restoring control file from AUTOBACKUP /u01/app/fra/ENMO/autobackup/2020_03_10 123_1033390448.arc' no longer needed for this recovery ORA-00279: change 18293343 generated at 03/10
参考链接: Java的历史 java的历史 Java is an object-oriented programming language. Java的历史 (History of Java) Java was started as a project called “Oak” by James Gosling in June 1991. Java版本历史 (Version History of Java) Java is a general-purpose programming language. 下图显示了Java编程语言的版本历史。 /33218/history-of-java java的历史
使用rman恢复历史备份的控制文件 RMAN> restore controlfile from autobackup; Starting restore at 2020-03-13 12:51:11 allocated channel: ORA_DISK_1 channel ORA_DISK_1: SID=10 device type=DISK recovery area destination unique name) used for search: ENMO channel ORA_DISK_1: AUTOBACKUP /u01/app/fra/ENMO/autobackup/2020_03_10 set channel ORA_DISK_1: restoring control file from AUTOBACKUP /u01/app/fra/ENMO/autobackup/2020_03_10 _123_1033390448.arc' no longer needed for this recovery ORA-00279: change 18293343 generated at 03/10
直至 2017 年底,上游 Ceph 项目都采取每年发布两个稳定版本的做法。自“Mimic”发行版起,Ceph 项目将按 9 个月发布计划运作。直至“Luminous”发行版,上游项目都是开发版和长期稳定 (LTS) 版交替发布。例如,“Kraken”属于开发版,而“Luminous”则属于 LTS 版。在 LTS 版本达到 GA 时,上游项目停止更新开发版。在过去,红帽都使红帽 Ceph 存储的发行版与上游 Ceph 的 LTS 版一致。自“Infernalis”稳定发行版起,上游 Ceph 项目已采用了新的版本号编号方案。每一稳定发行版递增主要版本号。如果次要版本为 0,则该版本尚在开发之中。如果是 1,则表示此版本为候选发行版。如果次要版本为 2,则该版本已经稳定,可供普通用户使用。
Mybatis注解开发 注解开发只需要写mapper接口即可,无需再书写对应的xxMapper.xml映射文件 对于单表操作还是比较方便的,但对多表操作就维护起来就比较麻烦了 数据库准备 添加依赖 <! -- mybatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org /dtd/mybatis-3-config.dtd"> <configuration> <! </mappers> </configuration> jdbc.properties driverClass=com.mysql.jdbc.Driver url=jdbc:mysql:///mybatis
如果传入的参数是多个的时候,我们就需要把它们封装成一个Map了,当然单参数也可以封装成map,实际上如果你在传入参数的时候,在MyBatis里面也是会把它封装成一个Map的,map的key就是参数名,所以这个时候 针对最后一条,我们来看一下官方说法: 注意 你可以将一个 List 实例或者数组作为参数对象传给 MyBatis,当你这么做的时候,MyBatis 会自动将它包装在一个 Map 中并以名称为键。 如果传递的是一个List,则mybatis会封装为一个list为key,list值为object的map,如果是array,则封装成一个array为key,array的值为object的map,如果自己封装呢 使用myBatis的selectKey标签可以实现这个效果。 注意:你可以传递一个List实例或者数组作为参数对象传给MyBatis。当你这么做的时候,MyBatis会自动将它包装在一个Map中,用名称在作为键。
2019年5月 ¶2019.5.30 add:Journal: 2019-5 commit:Journal: 2019-5 ¶2019.5.26 new:高数2-十大定理 new:高数1-常用公式 add:Journal: 2019-5 ¶2019.5.24 commit:Journal: 2019-5 ¶2019.5.21 add: Journal: 2019-5 ¶2019.5.20 add: Journal: 2019-5 ¶2019.5.19 add:Journal:2019-5 add:模式识别从