MyBatis 学习(三)之 MyBatis 全局配置文件

目录

1 MyBatis 全局配置文件

2 properties 元素

3 setting 设置

4 typeAlianses 别名处理器

5 typeHandler 类型处理器

6 objectFacotry 对象工厂(了解)

7 plugins 插件(了解)

8 environments 运行环境

9 databaseIdProvider 数据库厂商(了解)

10 mapper 加载 SQL 映射文件

11 参考文档


1 MyBatis 全局配置文件

MyBatais 全局配置文件所有配置项如下所示,配置项只能按照如下顺序进行设置

<?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> <!--配置--><properties/> <!--属性--><settings/> <!--全局配置参数--><typeAliases/> <!--类型别名--><typeHandlers/> <!--类型处理器--><objectFactory/><!--对象工厂--><plugins/><!--创建--><environments default=""><!--环境配置--><environment id=""><!--环境变量--><transactionManager type=""/><!--事务管理器--><dataSource type=""/><!--数据源--></environment></environments><databaseIdProvider type=""/><!--数据库厂商标识--><mappers/><!--映射器-->
</configuration>

2 properties 元素

mysql.properties 配置文件

url=jdbc:mysql://localhost:3306/study?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
name=root
password=123456
driver=com.mysql.cj.jdbc.Driver

通过 properties 元素导入 mysql.properties 配置文件,会在当前配置文件所在目录下查找 mysql.properties 配置文件

<properties resource="mysql.properties" />

此外,也可以用 properties 元素的 url 属性来指定属性文件的 URL

<!-- 指定一个网络上的属性文件 -->
<properties url="http://example.com/jdbc.properties" /><!-- 指定一个位于本地文件系统中的属性文件 -->
<properties url="file:///path/to/config.properties" />

如果属性在不只一个地方进行了配置,那么 MyBatis 将按照如下顺序来加载:

  • 在 properties 元素体内指定的属性首先被读取
<properties><!--property子元素定义--><property name="database.driver" value="com.mysql.cj.jdbc.Driver"/><property name="database.url" value="jdbc:mysql://localhost:3306/study?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC"/><property name="database.username" value="root"/><property name="database.password" value="123456"/>
</properties>
  • 然后根据 properties 元素中的 resource 属性读取类路径下属性文件或根据 url 属性指定的路径读取属性文件,并覆盖已读取的同名属性
  • 最后读取作为方法参数传递的属性,并覆盖已读取的同名属性
// 加载数据库配置文件
is = Resources.getResourceAsStream("msyql.properties");
Properties properties = new Properties();
properties.load(is);// 获取加密信息
String username= properties.getProperty("database.username");
String password= properties.getProperty("database.password");// 解密用户名和密码,并重置属性
properties.setProperty("database.username", CyperTool.decodeByBase64(username));
properties.setProperty("database.password", CyperTool.decodeByBase64(password));

3 setting 设置

        setting 设置是 MyBatis 中极为重要的调整设置,它们会改变 MyBatis 的运行时行为。但是大部分情况下使用默认值便可以运行,所以在大部分情况下不需要大量配置,只需要修改一些常用的规则即可。常用规则有自动映射、驼峰命名映射、级联规则、是否启动缓存、执行器类型等。

<settings><!--缓存配置的全局开关:如果这里设置成false,那么即便在映射器中配置开启也无济于事 --><setting name="cacheEnabled" value="true" /><!--延时加载的全局开关 --><setting name="lazyLoadingEnabled" value="false" />
</settings>
属性名含义简介有效值默认值
cacheEnabled是否使用缓存是整个工程中所有映射器配置缓存的开关,即是一个全局缓存开关true | falsetrue
lazyLoadingEnabled是否开启延迟加载控制全局是否使用延迟加载。当有特殊关联关系需要单独配置时,可以使用 fetchType 属性来覆盖此配置true | falsefalse
aggressiveLazyLoading是否按需加载属性开启时,不论调用什么方法加载某个对象,都会加载该对象的所有属性,关闭后只会按需加载true | falsefalse
multipleResultSetsEnabled是否允许单一语句返回多结果集即 Mapper 配置中一个单一的 sql 配置是否能够返回多个结果集true | falsetrue
useColumnLabel使用列标签代替列名设置是否使用列标签代替列名true | falsetrue
useGenerateKeys是否支持 JDBC 自动生成主键设置之后,将会强制使用自动生成主键的策略true | falsefalse
autoMappingBehavior指定 MyBatis 自动映射字段或属性的方式有三种方式,NONE 时将取消自动映射;PARTIAL 时只会自动映射没有定义结果集的结果映射;FULL 时会映射任意复杂的结果集NONE, PARTIAL, FULLPARTIAL
autoMappingUnknownColumnBehavior设置当自动映射时发现未知列的动作有三种动作,NONE 时不做任何操作;WARNING 时会输出提醒日志;FALLING 时会抛出 SqlSessionException 异常表示映射失败NONE, WARNING, FALLINGNONE
defaultExecutorType设置默认的执行器有三种执行器,SIMPLE 为普通执行器;REUSE 执行器会重用处理语句;BATCH 执行器将重用语句并执行批量更新SIMPLE, REUSE, BATCHSIMPLE
defaultStatementTimeout设置超时时间该超时时间即数据驱动连接数据库时,等待数据库回应的最大秒数任意正整数
defaultFetchSize设置驱动的结果集为了防止从数据库查询出来的结果过多,而导致内存溢出,可以通过设置 fetchSize 参数来控制结果集的数量任意正整数
safeRowBoundsEnabled允许在嵌套语句中使用分页,RowBound,即行内嵌套语句如果允许在 sql 的行内嵌套语句中使用分页,就设置该值为 falsetrue | falsefalse
safeResultHandlerEnabled允许在嵌套语句中使用分页,ResultHandler,即结果及处理如果允许对 sql 的结果集使用分页,就设置该值为 falsetrue | falsetrue
mapUnderscoreToCamelCase是否开启驼峰命名规则映射表名数据库中的字段名称与工程中 Java 实体内的映射是否采用驼峰命名规则校验true | falsefalse
localCacheScopeMyBatis 利用本地缓存机制防止循环引用和加速重复嵌套查询默认值为 SESSION,这种情况下会缓存一个会话中执行的所有查询。若设置为 STATEMENT,本地会话仅用在语句执行上,对相同 SqlSession 的不同调用将不会共享数据SESSION | STATEMENTSESSION
jdbcTypeForNullJDBC 类型的默认设置当没有参数提供特定的 JDBC 类型时,为空值指定 JDBC 类型。某些驱动需要指定列的 JDBC 类型,多数情况直接用一般类型即可,比如 NULL、VARCHAR 或 OTHER常用 NUL、VARCHAR、OTHEROTHER
lazyLoadTriggeerMethods指定哪个对象的方法触发一次延迟加载配置需要触发延迟加载的方法的名字,该方法就会触发一次延迟加载一个逗号分隔的方法名称列表

equals, clone,

hashCode, toString

defaultScriptingLanguage动态 sql 默认语言指定动态 sql 生成的默认语言一个类型的的别名或者一个类的全类名

org.apache.ibatis.

scripting.xmltargs.

XMLLanguageDriver

callSettersOnNulls是否在空值情况下调用 Set 方法指定当结果集中的值为 null 时是否调用映射对像的 setter (map 对象为 put)方法,这对于有 Map.keySet() 依赖或 null 值初始化是有用的。注意基本类型不能设置为 nulltrue | falsefalse
returnInstanceForEmptyRow返回空实体集对象当返回行的所有列都是空时,MyBatis 默认返回 null。当开启这个设置时,MyBatis 会返回一个空实例。此外,从 MyBatis 3.4.2 开始,它也适用于嵌套的结果集true | falsefalse
logImpl日志实现指定 MyBatis 所用日志的具体实现,为指定时将自动查找SLF4J | LOG4J | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGING
proxyFactory代理工厂指定 MyBatis 创建具有延迟加载能力的对象所用到的代理工具CGLIB | JAVASSISTJAVASSIST
vfsImplvfs 实现指定 vfs 的实现自定义 VFS 实现类的全类名,以逗号分割
useActualParamName使用方法签名允许使用方法签名中的名称作为语句参数名称。要使用该特性,工程必须采用 Java8 编译,并且加上 -parameters 选项(从 MyBatis 3.4.1 版本开始)true | false

false

configurationFactory配置工厂指定提供配置实例的类。返回的配置实例用于加载反序列化的懒加载参数。这个类必须有一个签名的静态配置 getconfiguration() 方法(从 MyBatis 3.2.3 版本开始)一个类型别名或者一个类的全类名

4 typeAlianses 别名处理器

typeAliases 可以给类设置别名,这样当我们需要使用类时,可以不用每次都写那么复杂的全类名 (com.pojo.User)

<!--设置别名-->
<typeAliases><!--对类单独进行别名设置  --><typeAlias alias="user" type="com.pojo.User"></typeAlias><typeAlias alias="student" type="com.pojo.Student"></typeAlias>
</typeAliases>

批量给类设置别名,为包中的每一个类设置别名,设置规则是:获取类名称,将其第一个字母变为小写

<!--设置别名-->
<typeAliases><!-- 对包进行扫描,可以批量进行别名设置,设置规则是:获取类名称,将其第一个字母变为小写 --><package name="com.pojo1"/><package name="com.pojo2"/><package name="com.pojo3"/>
</typeAliases>

通过 @Alias 注解设置别名

@Alias("user")
public class User {省略......
}

需要注意的是,MyBatis 已经为某些类定义了别名,此外,别名对大小写不敏感。对此,为某些类定义别名时,不能占用已有别名

5 typeHandler 类型处理器

        在 typeHandler 类型处理器中,包含 javaType 和 jdbcType 两种类型,其中 javaType 用来定义 Java 类型,jdbcType 用来定义数据库类型,而 typeHandler 的作用就是对 javaType 和 jdbcType 两种类型进行转换,如下图所示:

下图是 MyBatis 已经定义好的部分类型处理器,当然,我们也可以自定义类型处理器,此处不做介绍

6 objectFacotry 对象工厂(了解)

        objectFacotry 表示为对象工厂。对象工厂我们只需了解即可,因为到时候与 Spring 整合后,都会由 Spring 来管理。我们知道,在 JDBC 中查询的结果会保存在一个结果集中,而 MyBatis 也是这样,它会使用其定义的对象工厂 DefaultObjectFactory 来将查询的结果保存在结果集中。

7 plugins 插件(了解)

       plugins 插件是 MyBatis 提供的一个非常强大的机制。通过插件,我们可以在不修改 MyBatis 核心代码的情况下,对其核心行为进行修改。利用动态代理机制,插件能够介入到四大对象(Mapper Interface、Mapped Statement、Parameter Map 和 ResultSet Handler)的任何一个方法的执行过程中。

8 environments 运行环境

        environments 标签用于指定当前运行环境,在 MyBatis 中可以配置多种环境,比如开发、测试和生产环境。每种环境使用一个 environment 标签进行配置并指定唯一标识符,可以通过 environments 标签中的 default 属性指定一个环境的标识符来快速的切换环境,environment  标签里面分为两个可配置的标签:事务管理 (transactionManager)、数据源 (DataSource)。而在我们的日常开发中,这些都会交给 Spring 来管理,不用在全局配置中编写。

transactionManager

        transactionManager 配置事务管理器类型,type = JDBC | MANAGED | 自定义(type=全类名或别名)

  • JDBC 使用 JdbcTransactionFactory 工厂生成的 JdbcTransaction 对象实现,以 JDBC 的方式进行数据库的提交、回滚等操作,它依赖于从数据源得到的连接来管理事务范围
  • MANAGED 使用 ManagedTransactionFactory 工厂生成的 ManagedTransaction 对象实现,它的提交和回滚不需要任何操作,而是把事务交给容器进行处理,默认情况下会关闭连接,如果不希望默认关闭,只要将其中的 closeConnection 属性设置为 false 即可
  • 自定义的事务管理类型需要实现 TransactionFactory 接口

DataSource

        在 MyBatis 中,数据库是通过 PooledDataSourceFactory、UnpooledDataSourceFactory 和 JndiDataSourceFactory 三个工厂类来提供,前两者分别产生 PooledDataSource 和 UnpooledDataSource 类对象,第三个则会根据 JNDI 的信息获得外部容器实现的数据库连接对象,总之,它们最后都会生成一个实现了 DataSource 接口的数据库连接对象。

type = UNPOOLED | POOLED | JNDI | 自定义

UNPOOLED

        UNPOOLED 采用非数据库池的管理方式,每次请求都会新建一个连接,所以性能不是很高,使用这种数据源的时候,UNPOOLED 类型的数据源可以配置以下属性:

  • driver:数据库驱动名
  • url:数据库连接 URL
  • username:用户名
  • password:密码
  • defaultTransactionIsolationLevel:默认的事务隔离级别,如果要传递属性给驱动,则属性的前缀为 driver

POOLED

        POOLED 采用连接池的概念将数据库链接对象 Connection 组织起来,可以在初始化时创建多个连接,使用时直接从连接池获取,避免了重复创建连接所需的初始化和认证时间,从而提升了效率,所以这种方式比较适合对性能要求高的应用中。除了 UNPOOLED 中的配置属性之外,还有以下几个修改连接池的配置:

  • poolMaximumActiveConnections:用于设置连接池中允许的最大活跃连接数。超过这个数量的连接将会被阻塞,直到有连接被释放为止,默认值为 10

  • poolMaxmumIdleConnections:用于设置连接池中允许的最大空闲连接数。当连接池中的连接数量超过这个值时,多余的连接将会被释放,默认值为 5

  • poolMaxmumCheckoutTime:用于设置连接在连接池中的最大使用时间。超过这个时间的连接将会被强制回收,默认值为 20000 毫秒(即 20 秒)

  • poolTimeToWait:用于设置从连接池中获取连接时的最大等待时间。如果在这个时间内无法获取到连接,将会抛出超时异常,默认值为 20000 毫秒(即 20 秒)

JNDI

        数据源 JNDI 的实现是为了能在如 EJB 或应用服务器这类容器中使用,容器可以集中或在外部配置数据源,然后放置一个 JNDI 上下文的引用。这种数据源只需配置两个属性:

  • initial_context:用来在 InitialContext 中寻找上下文。可选,如果忽略,data_source 属性将会直接从 InitialContext 中寻找
  • data_source:引用数据源实例位置上下文的路径。当提供 initial_context 配置时,data_source 会在其返回的上下文进行查找,否则直接从 InitialContext 中查找

9 databaseIdProvider 数据库厂商(了解)

        databaseIdProvider 元素主要是为了支持不同厂商的数据库,这个元素不常用。

<!--数据库厂商标示 -->
<databaseIdProvider type="DB_VENDOR"><property name="Oracle" value="oracle"/><property name="MySQL" value="mysql"/><property name="DB2" value="d2"/>
</databaseIdProvider>

以下是 databaseIdProvider 中的属性介绍:

  • Type:DB_VENDOR,使用 MyBatis 提供的 VendorDatabaseIdProvider 解析数据库厂商标识。也可以实现 DatabaseIdProvider 接口来自定义
  • Property-name:数据库厂商标识
  • Property-value:为数据库厂商标识起一个别名,方便 SQL 语句使用 databaseId 属性引用

设置了以上配置,我们就可以在自己的 sql 语句中使用属性 databaseId 来标示数据库类型

<!-- 查询所有用户 -->
<select id="selectAllUser" resultType="com.entity.User" databaseId="oracle">select * from t_user
</select>

10 mapper 加载 SQL 映射文件

mapper 用来加载配置的 SQL 映射文件,它有以下四种加载方式:

  • 用文件路径引入
  • 使用 URL 方式引入
  • 用类注册引入
  • 用包名引入(推荐)
<mappers><!-- 用文件路径引入,这种方式是相对路径,相对于项目目录下 --><mapper resource="com/mapper/UserMapper.xml" /><!-- 使用 URL 方式引入,这种方式是绝对路径,就是从我们的磁盘读取映射文件,一般不会使用这种方式 --><mapper url="D:/xxx/com/mapper/UserMapper.xml" /><!-- 用类注册引入,若使用这种方式,Mapper接口的名称必须与映射文件的名称相同,并且要在同一个包名下,否则会找不到。如:UserMapper.java(接口)—UserMapper.xml(映射文件) --><mapper class="com.mapper.UserMapper" /><!-- 用包名引入(推荐),这种方式的要求同样是Mapper接口和Mapper的映射文件的名称要相同,并且要放在相同的包名下,否则会导致找不到 --><package name="com.mapper"/>
</mappers>

11 参考文档

尚硅谷文档

MyBatis 配置 setting 详解

Mybatis3详解(三)----Mybatis全局配置文件详解 - 唐浩荣 - 博客园 (cnblogs.com)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/712490.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

今日arXiv最热大模型论文:点击即可播放!港中文发布大模型写歌神器!

一首歌&#xff0c;包含作词作曲两个部分。擅长作词or作曲就已经很牛了。比如方文山是周杰伦的御用作词人&#xff0c;而周杰伦写过很多耳熟能详的曲子。而兼具作词作曲才华的全能创作人却是难得一见。 最近港中文发布了一款歌曲创作大模型SongComposer&#xff0c;作词作曲都…

自测-1 打印沙漏

文章预览&#xff1a; 题目算法代码 题目 算法 以前做过这个&#xff0c;那次是c语言写的&#xff0c;一点一点处理一层一层完成&#xff0c;这次我换了一种语言用了另一种思想使用递归去写&#xff0c;还是我们要先求出应该有多少层这个很容易&#xff0c;中间输出部分我们算…

常见查找算法Java实现

顺序&#xff08;线性&#xff09;查找二分查找/折半查找插值查找斐波那契查找 线性查找 判断数列是否包含要求&#xff0c;如果找到了&#xff0c;就提示找到了&#xff0c;并给出下标值 // 线性查找 public static ArrayList<Integer> seqSearch(int[] arr, int value…

动态规划课堂3-----简单多状态问题(买卖股票最佳时机)

目录 引入&#xff1a; 例题1&#xff1a;按摩师&#xff08;打家劫舍I&#xff09; 例题2&#xff1a;打家劫舍II 例题3&#xff1a;删除并获得点数 例题4&#xff1a;粉刷房子 例题5&#xff1a;买卖股票的最佳时机含冷冻 结语&#xff1a; 引入&#xff1a; 相信看到…

深度学习 精选笔记(8)梯度消失和梯度爆炸

学习参考&#xff1a; 动手学深度学习2.0Deep-Learning-with-TensorFlow-bookpytorchlightning ①如有冒犯、请联系侵删。 ②已写完的笔记文章会不定时一直修订修改(删、改、增)&#xff0c;以达到集多方教程的精华于一文的目的。 ③非常推荐上面&#xff08;学习参考&#x…

带你快速初步了解Python列表

1.列表 列表主要是用来存储多个数据&#xff0c;是有序的集合 2.创建列表 """ 语法&#xff1a;变量名 [数据1,数据2,数据3......] 注意&#xff1a;列表中的数据类型可以是各种不同的数据类型 """ 创建空列表 list1 [] print(list1) …

Gitlab: 私有化部署

目录 1. 说明 2. 资源要求 3. 安装 4. 配置实践 4.1 服务器 4.2 人员与项目 4.2 部署准备 4.2.1 访问变量及用户账号设置 4.2.2 Runner设置 4.2.3 要点 5. 应用项目 CI/CD 6. 参考 1. 说明 gitlab是一个强大且免费的代码管理/部署工具&#xff0c;能统一集成代码仓…

Freesia项目目录结构

目录结构 前端目录&#xff1a; &#xff08;目录结构来自layui-vue-admin&#xff09; src文件下 api&#xff08;前端请求后端服务的路由&#xff09;assert&#xff08;一些内置或必要的资源文件&#xff09;layouts&#xff08;全局框架样式组件&#xff09;router&…

【转载】深度学习笔记——详解损失函数

原文链接: https://blog.csdn.net/weixin_53765658/article/details/136360033 CSDN账号: Purepisces github账号: purepisces 希望大家可以Star Machine Learning Blog https://github.com/purepisces/Wenqing-Machine_Learning_Blog 损失函数 根据您使用的神经网络类型和数…

第四十七回 一丈青单捉王矮虎 宋公明二打祝家庄-强大而灵活的python装饰器

四面全是埋伏&#xff0c;宋江和众人一直绕圈跑不出去。正在慌乱之时&#xff0c;石秀及时赶到&#xff0c;教大家碰到白杨树就转弯走。走了一段时间&#xff0c;发现围的人越来越多&#xff0c;原来祝家庄以灯笼指挥号令。花荣一箭射下来红灯龙&#xff0c;伏兵自己就乱起来了…

Northwestern University-844计算机科学与技术/软件工程-复试注意事项【考研复习】

本文提到的西北大学是位于密歇根湖泊畔的西北大学。西北大学&#xff08;英语&#xff1a;Northwestern University&#xff0c;简称&#xff1a;NU&#xff09;是美国的一所著名私立研究型大学。它由九人于1851年创立&#xff0c;目标是建立一所为西北领地地区的人服务的大学。…

【力扣白嫖日记】550.游戏玩法分析IV

前言 练习sql语句&#xff0c;所有题目来自于力扣&#xff08;https://leetcode.cn/problemset/database/&#xff09;的免费数据库练习题。 今日题目&#xff1a; 550.游戏玩法分析IV 表&#xff1a;Activity 列名类型player_idintdevice_idintevent_datedategames_played…

从 iOS 设备恢复数据的 20 个iOS 数据恢复工具

作为 iPhone、iPad 或 iPod 用户&#xff0c;您可能普遍担心自己可能会丢失存储在珍贵 iOS 设备中的所有宝贵数据。数据丢失的原因多种多样&#xff0c;这里列出了一些常见原因&#xff1a; 1. iOS 软件更新 2. 恢复出厂设置 3. 越狱 4. 误操作删除数据 5. iOS 设备崩溃 …

C++笔记(五)--- 虚函数(virtual)

目录 虚函数介绍 虚函数、覆盖和重载区别 虚函数介绍 C的虚函数是多态性的表现 1.构造函数不能为虚函数2.子类继承时虚函数仍为虚函数3.虚函数类外实现时&#xff0c;不需要加virtual4.有虚函数的类&#xff0c;析构函数一定要写成虚函数&#xff08;否则可能会造成内存泄漏&…

【代码随想录python笔记整理】第十六课 · 出现频率最高的字母

前言:本笔记仅仅只是对内容的整理和自行消化,并不是完整内容,如有侵权,联系立删。 一、哈希表初步 在之前的学习中,我们使用数组、字符串、链表等等,假如需要找到某个节点,则都要从头开始,逐一比较,直到找到为止。为了能够直接通过要查找的记录找到其存储位置,我们选…

、JMETER与它的组件们

os进程取样器 这个取样器可以让jmeter直接调用python写的测试数据 这样就可以调用python写的测试数据给到jmeter进行调用 注意&#xff1a;1建议python返回转json格式dumps一下&#xff1b;2py文件中需要把结果打印出来&#xff0c;可以不用函数直接编写 传到jmeter之后可以用…

你真的了解C语言中的【柔性数组】吗~

柔性数组 1. 什么是柔性数组2. 柔性数组的特点3. 柔性数组的使用4. 柔性数组的优势 1. 什么是柔性数组 也许你从来没有听说过柔性数组这个概念&#xff0c;但是它确实是存在的。 C99中&#xff0c;结构体中的最后⼀个元素允许是未知大小的数组&#xff0c;这就叫做柔性数组成员…

MyBatis 学习(五)之 高级映射

目录 1 association 和 collection 介绍 2 案例分析 3 一对一关联和一对多关联 4 参考文档 1 association 和 collection 介绍 在之前的 SQL 映射文件中提及了 resultMap 元素的 association 和 collection 标签&#xff0c;这两个标签是用来关联查询的&#xff0c;它们的属…

算法--时空复杂度分析以及各个数据量对应的可使用的算法(C++;1s内)

这里写目录标题 由数据范围反推算法时间复杂度以及算法内容分析时间复杂度看循环实例1实例2 固定时间复杂度快排和归并排序二分高精度算法双指针算法单链表插入删除操作栈和队列的操作单调栈和单调队列KMPTire并查集堆哈希表BFS、DFS图的深度优先、宽度优先遍历dijkstra算法朴素…

瑞_Redis_Redis的Java客户端

文章目录 1 Redis的Java客户端1.1 Jedis快速入门1.1.1 入门案例1.1.1.1 项目构建1.1.1.2 引入依赖1.1.1.3 建立连接1.1.1.4 释放资源1.1.1.5 测试1.1.1.6 完整测试类代码 1.1.2 Jedis连接池1.1.2.1 连接池工具类1.1.2.2 改造原始代码 &#x1f64a; 前言&#xff1a;本文章为瑞…