自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(132)
  • 收藏
  • 关注

原创 Mybatis——自定义缓存Ehcache

Ehcache是一种广泛使用的开源Java分布式缓存,主要面向通用缓存。要在程序中使用ehcache,先要导包。

2024-07-23 10:52:54 224

原创 Mybatis——二级缓存

— 如果当前会话关闭了,这个会话的一级缓存的就没了;但是我们想要的结果是,会话关闭后,一级缓存中的数据会被保存到二级缓存中。—— 一个会话查询一条数据,这个数据就会被放在当前会话的一级缓存当中。—— 不同的mapper查出的数据会放在自己对应的缓存(map)中。基于namespace级别的缓存,一个名称空间,对应一个二级缓存。二级缓存也叫全局缓存,一级缓存作用域太低,所以诞生了二级缓存。—— 新的会话查询信息,就可以在二级缓存当中获取内容。只有当会话提交或者关闭的时候,才会提交到二级缓存中。

2024-07-22 20:38:51 176

原创 Mybatis——一级缓存

小结:一级缓存是默认开启的,只在一次SqlSession中有效,也就是拿到连接到关闭连接这个区间段。一级缓存就是一个Map。以后如果需要获取相同的数据,直接从缓存中拿,没必须再去查询数据库。2. 增删改操作,可能会改变原来的数据,所以必定会刷新缓存。2. 测试在一个Session中查询两次相同记录。与数据库同一次会话期间查询到的数据会放在本地缓存中。3. 查询不同的Mapper.xml。1. 查询不同的东西。一级缓存也叫本地缓存。

2024-07-22 16:07:44 157

原创 Mybatis——缓存简介

查询: 连接数据库,耗资源一次查询的结果,给他暂存在一个可以直接取到的地方 --> 内存:缓存我们再次查询相同数的时候,直接走缓存,就不用走数据库了1. 什么是缓存【Cache】?存在内存中的临时数据将用户经常查询的数据放在缓存(内存)中,用户去查询数据就不用从磁盘上(关系型数据库数据文件)查询,从缓存中查询,从而提升查询效率,解决了高并发系统的性能问题2. 为什么使用缓存?减少和数据库的交互次数,减少系统开销,提高系统效率3. 什么样的数据能使用缓存?经常使用并且不经常改变的数据。

2024-07-22 15:08:51 527

原创 Mybatis——动态SQL之Foreach

有的时候,我们可能会将一些公共的部分抽取出来,方便使用1. 使用SQL标签抽取公共的部分2. 在需要使用的地方使用include标签引用即可最好基于单表来定义SQL片段不要存在where标签。

2024-07-22 10:53:15 329

原创 Mybatis——动态SQL常用标签

【代码】Mybatis——动态SQL常用标签。

2024-07-21 19:54:31 438

原创 Mybatis——动态SQL

什么是动态SQL:动态SQL就是指根据不同的条件生成不同的SQL语句如果你之前用过 JSTL 或任何基于类 XML 语言的文本处理器,你对动态 SQL 元素可能会感觉似曾相识。在 MyBatis 之前的版本中,需要花时间了解大量的元素。借助功能强大的基于 OGNL 的表达式,MyBatis 3 替换了之前的大部分元素,大大精简了元素种类,现在要学习的元素种类比原来的一半还要少。

2024-07-21 16:00:53 290

原创 Mybatis——一对多处理

—ofType用来指定映射到List或者集合中的pojo类型,泛型中的约束类型。——javaType用来指定实体类中属性的类型。1. 关联:association【多对一】2. 集合:collection【一对多】注意一对多和多对一中,属性和字段的问题。保证SQL的可读性,尽量保证通俗易懂。如果问题不好排查错误,可以使用日志。

2024-07-21 13:54:45 213

原创 Mybatis——多对一的处理

1. 导入Lombok2. 新建实体类Teacher,Student3. 建立Mapper接口4. 建立Mapper.XML文件5. 在核心配置文件中绑定注册我们的Mapper接口或者文件6. 测试查询能否成功。

2024-07-19 17:54:26 189

原创 Mybatis——Lombok

请注意,如果在经过上述尝试后,即使重新运行构建后仍然出现错误,可能是由于 IntelliJ 有一些缓存仍在获取以前的 lombok 版本。问题原因是Lombok ,与 JDK 21 兼容的最低 Lombok 版本是 1.18.30,最小的 Spring Boot 版本是 3.1.4。I/O流的关闭操作等 等,这些代码既没有技术含量,又影响着代码的美观,Lombok应 运而生。是你的JDK版本和Lombok版本不兼容,更换最新版本Lombok(亲测解决),或升级JDK。在实体类类名上方加入注释。

2024-07-18 20:49:11 1591

原创 Mybatis——分页

—为了减少数据的处理量语法:select * from user limit startIndex,pageSize;(默认从0开始,显示数据量为3 --> #[ 0 , n ])使用mybatis实现分页,核心SQL:1. 接口3. 测试。

2024-07-18 10:13:28 298

原创 Mybatis——生命周期和作用域

理解不同作用域和生命周期类别是至关重要的,因为错误的使用会导致非常严重的并发问题。

2024-07-17 15:42:56 259

原创 Mybatis——配置之映射器说明

MapperRegistry:注册绑定我们的Mapper文件;接口和它的Mapper配置文件必须在同一个包下。接口和它的Mapper配置文件必须在同一个包下。接口和它的Mapper配置文件必须同名。接口和它的Mapper配置文件必须同名。

2024-07-17 11:47:56 170

原创 Mybatis——配置之别名优化

类型别名可为 Java 类型设置一个缩写名字。它仅用于 XML 配置,意在降低冗余的全限定类名书写。第一种可以自定义别名,第二种不行(如果想改,可以在实体类上增加注解来实现)。在实体类较少的时候,使用第一种方式;若实体类较多,建议使用第二种。扫描实体类的包,它的默认别名就为这个类的类名,其首字母小写。

2024-07-17 11:30:57 118

原创 Mybatis——配置之属性优化

Mybatis的配置文件包含了会深深影响Mybatis行为的设置和属性信息。

2024-07-17 10:39:29 256

原创 Mybatis——增删改查实现(CRUD)

namespace中的包名要和Dao/mapper接口的包名一致。

2024-07-16 18:02:11 307

原创 Mybatis——第一个程序

思路:搭建环境-->导入Mybatis-->编写代码-->测试。

2024-07-16 17:01:29 187

原创 Spring——AOP实现方式

System.out.println("======方法执行前======");System.out.println("======方法执行后======");--注册bean-->--方式二:自定义类-->--自定义切面 ref:要引用的类-->--切入点-->--通知--></beans>

2024-07-15 19:43:20 200

原创 spring——动态代理

需要了解两个类:Proxy:代理 InvocationHandler:调用处理程序。动态代理分为两大类:基于接口的动态代理,基于类的动态代理。一个动态代理类代理的是一个接口,一般就是对应的一类业务。一个动态代理类可以代理多个类,只要是实现了同一个接口即可。可以使真实角色的操作更加纯粹,不用去关注一些公共的业务。动态代理的代理类是动态生成的,不是我们直接写好的。——基于接口:JDK动态代理【我们在这里使用】公共业务交给代理角色,实现了业务的分工。动态代理和静态代理角色一样。——基于类:cglib。

2024-07-14 15:25:41 150

原创 Spring——静态代理模式

一个真实角色就会产生一个代理角色;当有多个真实角色时,会导致代码量翻倍,开发效率变低。代理角色:代理真实角色,代理真实角色后,我们一般会做一些附属操作。可以使真实角色的操作更加纯粹,不用去关注一些公共的业务。4. 客户端访问代理角色(客户实现租房操作)抽象角色:一把会使用接口或者抽象类来解决。公共业务交给代理角色,实现了业务的分工。公共业务发生拓展的时候,方便集中管理。2. 真实角色(房东)3. 代理角色(中介)客户:访问代理对象的人。真实角色:被代理的角色。

2024-07-11 15:16:28 223

原创 Spring——注解实现自动装配

如果@Autowired自动装配的环境比较复杂,自动装配无法通过一个注解【@Autowired】完成的时候,我们可以使用@Qualifier(value="xxx")去配合@Autowired的使用,指定一个唯一的bean对象注入。使用Autowired时,可以不用编写set方法,前提是自动装配的属性在ioc(Spring)容器中存在,且符合名字byname!2. 配置注解的支持:context:annotation-config。直接在属性上使用即可,也可以在set方式上使用。

2024-07-10 15:35:57 220

原创 Spring——自动装配Bean

byname时,需要保证所有的bean的id唯一,并且这个bean需要和自动注入的属性的set方法的值一致。bytype时,需要保证所有的bean的class唯一,并且这个bean需要和自动注入的属性的类型一致。Spring会在上下文中自动寻找,并自动给bean装配属性。自动装配是Spring满足bean依赖的一种方式。记得创建Cat、Dog、People类。3. 隐式的自动装配bean【重要】2. 在java中显示配置。1. 在xml中显示配置。

2024-07-10 14:45:57 441

原创 Spring——p命名和c命名空间注入

p命名和c命名空间不能直接使用,需要导入xml约束。

2024-07-09 21:17:08 189

原创 Spring——配置说明

别名:如果添加了别名,也可以使用别名获取这个对象。

2024-07-09 14:29:49 540

原创 Spring——IOC创建对象方式

容器:ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");3. 总结:在配置文件加载的时候,容器中管理的对象就已经初始化了。——b.类型(不建议使用,如万一有两个String类型)1. 使用无参构造创建对象,默认!

2024-07-08 17:27:59 242

原创 MySQL——数据连接池

无论使用什么数据源,本质还是一样的,DataSource接口不会变,方法就不会变。数据库连接 --- 执行完毕 --- 释放(连接到释放的过程十分浪费系统资源)使用了这些数据库连接池之后,我们在项目开发中就不需要编写连接数据库的代码了。编写连接池,实现一个接口 DataSource。DBCP、C3P0、Druid(阿里巴巴)

2024-07-06 20:51:56 282

原创 MySQL——PreparedStatement对象

PreparedStatement可以防止SQL注入,效率更高。

2024-07-06 14:31:25 223

原创 MySQL——statement对象详解

JDBC中的statement对象用于向数据库发送SQL语句,想完成对数据库的增删改查,只需要通过这个对象向数据库发送增删改查语句即可。Statement对象的executeUpdate方法,用于向数据库发送增、删、改的sql语句,executeUpdate执行完成后,将会返回一个整数(即增删改语句导致了数据库几行数据发生了变化)。Statement.executeQuery方法用于向数据库发送查询语句,executeQuery方法返回代表查询结果的ResultSet对象。CRUD操作-create。

2024-07-05 20:32:59 418

原创 MySQL——JDBC中对象解释

【代码】MySQL——JDBC中对象解释。

2024-07-05 15:16:58 306

原创 MySQL——JDBC

SUN公司为了简化开发人员的(对数据库的统一)操作,提供了一个(Java操作数据库的)规范,俗称JDBC。这些规范的实现由具体的厂商去做。对于开发人员而言,我们只需要掌握JDBC接口的操作即可。java.sqljavax.sql还需要导入一个数据库驱动包:mysql-connector-java-5.1.47.jar——去官网下载,可以自己选择版本。

2024-07-05 14:25:55 253

原创 MySQL——三大范式

第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关。故意增加一些计算列(从大数据量降低为小数据量的查询:也可以增加索引)考虑商业化的需求和目标,注意成本和用户体验时,数据库的性能更加重要。故意给某些表增加一些冗余字段(从多表查询变成单表查询)在规范性能的问题时,需要适当考虑一下规范性。——三大范式用来规范数据库的设计。前提:满足第一范式和第二范式。插入异常:无法正常显示信息。删除异常:丢失有效的信息。原子性:保证每一列不可再分。关联查询的表不得超过三张表。每张表只描述一件事情。

2024-07-04 21:28:00 240

原创 MySQL——备份

mysqldump -h 主机 -u 用户名 -p 密码 数据库 表名 >物理磁盘位置/文件名。——输入命令(举例)mysqldump -hlocalhost -uroot -p123456 school student >D:/a.sql。导出多张表:mysqldump -h 主机 -u 用户名 -p 密码 数据库 表1 表2 >物理磁盘位置/文件名。—— 在想要导出的表或者库中,右键选择备份或导出。登录的情况下,切换到指定的数据库。保证重要的数据不丢失。source 备份文件。

2024-07-04 14:27:09 349

原创 MySQL——SQL编程创建100万条数据测试索引

索引在小数据量的时候,用处不大,但是在数据量大的时候,用处明显。4. 索引一般加在常用来查询的字段上。2. 不要对经常变动的数据加索引。3. 小数据量的表不需要加索引。1. 索引不是越多越好。

2024-07-03 22:30:01 184

原创 MySQL——索引介绍及索引的分类

官方介绍索引是帮助MySQL的。提取句子主干,就可以得到索引的本质:索引是数据结构。

2024-07-03 14:39:15 262

原创 MySQL——事务ACID原则、脏读、不可重复读、幻读

事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔离。1. SQL执行:A给B转账 A 1000 ---->200 B 200。在一个事务内读取表中的某一行数据,多次读取结果不同。是指在一个事务内读取到了别的事务插入的数据,导致前后读取数量总量不一致。事务原则:ACID原则(原子性、一致性、隔离性、持久性)(脏读、幻读)指一个事务读取了另外一个事务未提交的数据。要么都成功,要么都失败。要么都成功,要么都失败。

2024-07-02 20:17:09 1509

原创 MySQL——聚合函数及分组过滤

SUM()

2024-06-27 22:05:22 437

原创 MySQL——常用函数

【代码】MySQL——常用函数。

2024-06-27 15:13:26 246 1

原创 MySQL——子查询和嵌套查询

在where语句中嵌套一个子查询语句。where (计算出的值)

2024-06-26 22:25:48 304

原创 MySQL——分页和排序

left | right | inner join table_name2] -- 联合查询。-- 指定查询的记录从哪条至哪条。[ORDER BY ...] -- 指定查询记录按一个或多个条件排序。[GROUP BY ...] -- 指定结果按照哪几个字段来分组。[HAVING] -- 过滤分组的记录必须满足的次要条件。[WHERE ...] -- 指定结果需满足的条件。——缓解数据库压力,给人的体验更好。(瀑布流:无限往下刷,如抖音等)

2024-06-26 18:34:23 141

原创 MySQL——自连接及联表查询练习

子类的pid = 父类的categoryid。操作:查询父类对应的子类关系。自己的表和自己的表连接,

2024-06-26 15:04:52 413

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除