- 博客(160)
- 收藏
- 关注
原创 MyBatis-Plus 多数据源配置与读写分离实战
在实际的项目开发中,我们常常会遇到需要操作多个数据库的情况,比如纯粹多库、读写分离、一主多从、混合模式等。本文将详细介绍如何使用 MyBatis-Plus 实现纯粹多库的场景,并探讨读写分离的实现思路。
2025-03-30 14:48:53
242
原创 Mybatis以及Mybatis-Plus中的代码生成器(逆向工程)
创建一个mavenjava项目,导入相应的依赖。成springboot管理的项目。把相应的框架搭建好,controller,entity,service,mapper,启动类.导入依赖在rescource下面导入这个文件这里面需要注意的是 因为是xml文件,所以connectionURL="jdbc:mysql://localhost:3306/mybatis_plus?password="root">要加上&转义字符。
2025-03-30 12:04:32
719
原创 MybatisPlus中的通用枚举使用
表中的有些字段值是固定的,例如性别(男或女。注解所标识的属性值存储到数据库。设置性别信息为枚举项,会将。最后性别栏成功插入1。
2025-03-30 11:41:06
369
原创 Mybatis_Plus中的条件构造器和常用接口,插件
此我们在组装这些条件时,必须先判断用户是否选择了这些条件,若选择则需要组装该条件,若 没有选择则一定不能组装,以免影响。在真正开发的过程中,组装条件是常见的功能,而这些条件数据来源于用户输入,是可选的,因。如果是悲观锁,小李取出数据后,小王只能等小李操作完之后,才能对价格进行操作,也会保证。上面的故事,如果是乐观锁,小王保存价格前,会检查下价格是否被人修改过了。上面的实现方案没有问题,但是代码比较复杂,我们可以使用带。是的,如果没有锁,小李的操作就。高,可能会影响销量。了,则重新取出的被修改后的价格,
2025-03-30 11:20:15
334
原创 Mybatis_Plus中的常用注解
经过以上的测试,在使用实现基本的CRUD时,我们并没有指定要操作的表,只是在Mapper接口继承BaseMapper时,设置了泛型User,而操作的表为user表由此得出结论,在确定操作的表时,由BaseMapper的泛型决定,即实体类型决 定,且默认操作的表名和实体类型的类名一致若实体类类型的类名和要操作的表的表名不一致,会出现什么问题?我们将表user更名为t_user,测试查询功能程序抛出异常,,因为现在的表名为t_user,而默认操作。
2025-03-30 09:34:04
734
原创 MyBatis-Plus简介以及入门案例
(简称MP)是一个MyBatis的增强工具,在MyBatis的基础上,为。提供了通用的Mapper和Service(向上提取),可以在不编写任何SQL语句的前提下,快速的实现单表的增删改查(CURD),批量,逻辑删除,分页等操作。只要把的特性到优秀插件,以及多数据源的配置进行详细讲解。特点无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑损耗小:启动即会自动注入基本CURD,性能基本无损耗,直接面向对象操作强大的CRUD操作:内置通用。
2025-03-30 09:22:45
657
原创 thymelef
引入thymeleaf从spring父文件中能看到Springboot2.7.1所使用的thymeleaf版本是3.0.15springBoot启动的时候会自动配置从ThymeleafAutoConfiguration的源代码中我们可以得知ThymeleafProperties中配置了Thymeleaf的规则我们使用html作为模板,而且默认的前缀是放在classpath:/templates/下,后缀是.html当然这些属性我们都可以通过application.properties来修改。
2025-03-22 14:05:49
545
原创 springboot配置文件解析
pringBoot使用一个全局的配置文件,配置文件名是固定的;配置文件的作用:修改SpringBoot自动配置的默认值;SpringBoot在底层都给我们自动配置好;YAML标记语言:以前的配置文件;大多都使用的是xxxx.xml文件;YAML:以数据为中心,比jsonxml等更适合做配置文件;YAML语法基本语法k:(空格)v:表示一对键值对(空格必须有);以空格的缩进来控制层级关系;只要是左对齐的一列数据,都是同一个层级的属性和值也是大小写敏感;
2025-03-22 13:46:03
658
原创 java开发框架与微服务(第一个springboot项目)
springboot就是简化Spring应用开发的一个框架;把整个Spring技术栈的一个大整合。J2EE开发的一站式解决方案优点:快速创建独立运行的spring项目以及与主流框架集成使用嵌入式的Servlet容器,应用无需打成war包,内嵌TomcatStarters自动依赖和版本控制(starters就相当于一个大的工具箱,里面包含了任何需要的工具,用啥拿啥)大量的自动装配,简化开发,也可以修改默认值无需配置XML无代码生成开箱即用准生产环境的运行时应用监控与云计算的天然集成。
2025-03-22 13:19:07
956
原创 maven私服搭建
配置项目 pom.xml,配置私服仓库的地址,本公司的自己的 jar 包会上传到私服的宿主仓库,根据工程的版本号决定上传到哪个宿主仓库,如果版本为 release 则上传到私服的 release 仓库,如果版本为snapshot 则上传到私服的 snapshot 仓库。-- 插件仓库,maven的运行依赖插件,也需要从私服下载插件 -->-- 表示拦截所有的请求,都重定向到私服,从私服下载jar包,私服没有再去中央仓库下载 -->--仓库地址,即nexus仓库组的地址 --></releases> <!
2025-03-10 22:38:09
692
原创 反射与代理
我们知道类是具有相同属性或者行为的一类事物,那么类本身也可以再被抽象,因为类们也有共同的属性和行为(比如类都有属性,都有构造器,都有方法,都能调用方法),所以把类们又抽象成了一个类。这种动态获取的信息以及动态调用对象的方法的功能称为。并不影响代码的语义,但是它能够工作的方式被看做类似程序工具或者类库,它反过来对正在运行的程序语义有所影响,方法中实现了在调用被代理对象方法前后添加额外逻辑的功能,从而实现了动态代理的增强效果。如果底层方法是实例方法,第一个参数就是该对象实例,第二个参数是方法的参数列表,
2025-03-08 11:06:54
331
原创 若依前后端分离 生成代码板块使用
sql在你那个数据库中运行。然后main中是后端代码,vue中的是前端代码。首先通过 sql语句或者可视化创建你要导入的数据库以及表单。把view里的文件夹复制到对应的文件夹中 (注意是文件夹)点击编辑,可以根据你的项目需求制定一些规则。resource里面的mapper.xml。这样后端就全部复制成功了,接下来复制前端。然后重新启动你的前后端,进行运行即可。点击生成,是一个压缩包,把他解压缩。把这段代码复制到system下面。这是生成的一些代码预览。把api里的文件复制到。这三个文件夹里的内容。
2025-03-08 08:58:30
208
原创 Ruoyi-Vue前后端分离搭建
在application-druid 里配置你的数据库 包括地址 端口 名称 用户名以及密码。Mysql在云服务上的下载与安装,本机上可以去搜索本机下载Mysql过程。前端是ruoyi-ui 把这个文件夹用vscode打开然后进行配置。JDK下载到本机或者云服务器上,以下是我在云服务上下载。password如果没设置 就默认不写 如果设置了就写上。redis如果下载到本机 地址那就是localhost。把下载好的目录用vscode打开。Redis 在云服务上的下载与安装。我这里下载的是Vue3的前端版本。
2025-03-07 19:18:17
449
原创 关于SSM项目的整合
启动 Web 服务器:启动如 Tomcat 这样的 Web 服务器。Tomcat 启动后会开始加载部署在其中的 Web 应用。加载web.xml文件:Tomcat 会读取 Web 应用WEB - INF目录下的web.xml文件,该文件是 Web 应用的核心配置文件,包含了 Servlet、Filter、Listener 等组件的配置信息。初始化 Spring 根应用上下文当 Tomcat 解析到web.xml中配置的时,它会触发该监听器的初始化操作。会根据中配置的参数(通常指向。
2025-03-02 18:10:20
580
原创 AJAX 入门:从基础到实践
AJAX 是一种用于创建快速动态网页的技术,它结合了 JavaScript 和 XML(虽然现在也常用 JSON 数据格式)。通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着在不重新加载整个网页的情况下,对网页的某部分进行更新。与传统网页技术相比,传统网页如果需要更新内容,必须重载整个网页面,而使用 AJAX 技术则可以避免这种情况。目前,几乎所有的网站都离不开 AJAX 这门技术。AJAX 的最大特点是页面无刷新的请求,默认是异步的,速度快,用户体验比较好。
2025-03-01 11:10:38
1104
原创 深入理解 Java Servlet:从基础到实战
Servlet 是 JavaWeb 三大组件之一,另外两个组件是 Filter(过滤器)和 Listener(观察者模式)。Servlet 是我们学习 JavaWeb 的基石,必须熟练掌握。由于现在的请求大多基于 HTTP 协议,因此我们可以专门为 HTTP 请求编写一个通用的父类。是的子类,而又是Servlet接口的子类。是一个全局的储存信息的空间,服务器启动时创建,关闭时释放。所有用户共用一个对象,因此可以在其中存放所有用户需要共享的、线程安全的重要信息。
2025-02-21 18:23:30
946
原创 深入学习 XML:语法、约束、解析及相关技术
XML 全称为可扩展的标记语言,是 SGML(标准通用标记语言)的一个子集。与 HTML 不同,HTML 的元素是固定的,而 XML 的标签可以由用户自定义。W3C 在 1998 年 2 月发布了 XML 1.0 版本,虽然 2004 年 2 月发布了 1.1 版本,但由于其不能向下兼容 1.0 版本,所以目前广泛使用的仍是 1.0 版本。
2025-02-21 09:15:36
832
原创 JSP 深入浅出:全面解析 JavaServer Pages
早期:JavaWeb 起步阶段采用 applet + servlet 的模式。applet 用于在客户端浏览器中展示动态内容,但由于安全和性能等问题,逐渐被其他技术取代。而 servlet 则负责处理服务器端的业务逻辑,但在输出 HTML 页面时,需要编写大量的语句,代码繁琐且不易维护。中期:主要以 servlet 为主,但这种方式在处理页面展示时效率低下。开发人员需要在 servlet 中逐行输出 HTML 代码,使得代码的可读性和可维护性大打折扣。后期:JSP 的出现改变了这一局面。
2025-02-21 08:43:02
1067
原创 深入理解数据库事务:原理、应用与隔离级别
事务是数据库提供的一个特性,它是组成各个数据操作的执行单元,这些操作要么全部成功执行,要么全部不执行。以转账功能为例,当冠希给美美转 1000 元钱时,这个过程包含两个关键操作:先从冠希的账户扣除 1000 元,再给美美的账户加上 1000 元。这两个操作必须作为一个整体来执行,否则就可能出现数据不一致的情况,比如冠希的钱扣了,但美美没收到,或者反之。
2025-02-21 08:05:04
909
原创 深入理解 SQL 注入漏洞及解决方案
在已知用户名的情况下,攻击者可以通过输入特殊构造的密码,利用 SQL 注入漏洞绕过系统的身份验证机制,成功登录系统。例如,原本需要正确的用户名和密码才能访问的系统,攻击者只需输入特定的字符组合,如 “aaa'or'1=1” 作为密码(用户名已知),就可以在不知道正确密码的情况下登录进去,这显然严重破坏了系统的安全性和访问控制机制。在这种情况下,如果用户输入恶意的字符,就会改变 SQL 语句的逻辑。“‐‐” 在 SQL 中是注释符,这使得后面的密码验证部分被注释掉,查询只验证用户名,同样也实现了非法登录。
2025-02-20 09:28:43
788
原创 数据库连接池与池化思想
数据库连接池是一种用于管理数据库连接的技术。它通过在应用程序启动时预先创建一定数量的数据库连接,并将这些连接保存在一个“池”中。当应用程序需要与数据库交互时,直接从连接池中获取一个可用的连接,使用完毕后将连接归还到池中,而不是每次都创建和销毁连接。数据库连接池通过池化思想,有效地管理和复用数据库连接,提升了应用程序的性能和资源利用率。常见的开源连接池如DBCP、C3P0和Druid都提供了丰富的功能和配置选项,开发者可以根据项目需求选择合适的连接池。
2025-02-18 21:05:50
1091
原创 JDBC 入门:从基础到实战
JDBC,即 Java DataBase Connectivity,是 Java 用于连接数据库的技术,旨在通过 Java 代码操作数据库。它是一套接口规范,其实现类由各数据库生产商提供。掌握 JDBC 接口和方法,就能操作不同数据库。而驱动则是数据传输的桥梁,使用 MySQL 数据库需导入等相应驱动 jar 包。
2025-02-18 20:13:21
712
原创 PowerDesigner的介绍与使用
是 Sybase 公司开发的一款企业建模和设计解决方案。它是一个模型驱动的工具,可以帮助用户进行有效的企业体系架构部署,并为研发生命周期管理提供强大的分析与设计技术。PowerDesigner 集成了多种标准数据建模技术,如 UML、业务流程建模以及市场领先的数据建模,并与 .NET、WorkSpace、PowerBuilder、Java™、Eclipse 等主流开发平台集成,提供业务分析和规范的数据库设计解决方案。
2025-02-18 19:01:11
359
原创 MySQL 学习笔记:从基础到进阶
数据库是按照数据结构来组织、存储和管理数据的仓库,MySQL 是一种常用的关系型数据库管理系统,以其开源、高效、可靠等特点广泛应用于各种 Web 应用开发中。
2025-02-18 16:11:35
785
原创 Java 多线程编程与单例模式
线程的并发执行是通过多个线程不断切换 CPU 资源来实现的。由于切换速度非常快,我们感知到的是多个线程在并发执行。这种方式更灵活,因为 Java 不支持多继承,但可以实现多个接口。在多线程编程中,共享资源可能会导致数据不一致的问题。单例模式是一种设计模式,确保一个类只有一个实例,并提供一个全局访问点。在做服务器端的程序的时候都需要给一个休眠的时间,在没有。方法,具备执行的资格,但尚未获得 CPU 资源。:线程获得 CPU 资源,正在执行。方法是线程执行的逻辑体。:线程被创建,但尚未启动。
2025-02-15 17:30:03
787
原创 Java 异常机制详解:从基础到自定义异常
Java 中的异常体系以ThrowableError:表示程序无法处理的严重问题,通常由 JVM 抛出,如。Exception:表示程序可以处理的异常,分为运行时异常和编译期异常。在实际项目中,我们可能需要定义与业务相关的异常。自定义异常通常继承。继承。提供构造方法。try {// 抛出 StockException// 处理异常后继续执行throw new StockException("库存不足:" + stock);System.out.println("购买成功");
2025-02-14 19:00:58
735
原创 Java IO流详解
IO(Input/Output)即输入和输出,指的是设备或环境之间进行数据的输入或输出。例如,键盘是输入设备,显示器是输出设备。在Java中,输入输出问题通过流(Stream)对象来解决。以程序为中心,读取文件是输入,写入文件是输出。
2025-02-13 22:04:57
961
原创 Java中的Map集合与文件操作详解
Map是一种键值对(key-value)的集合,常用于存储具有映射关系的数据。与List和Set不同,Map的键(key)是唯一的,而值(value)可以重复。Map集合的主要实现类有HashMapTreeMapHashtable和。
2025-02-12 19:16:41
546
原创 关于集合的框架概述
数组的局限性数组长度固定,无法动态扩展。数组功能单一,缺乏插入、删除、搜索等操作。数组不支持泛型,类型安全性较差。集合的优势动态扩展:集合长度可以根据需要自动调整。功能丰富:提供了插入、删除、搜索、排序等操作。类型安全:通过泛型支持类型检查。多样化的数据结构:支持列表、集合、映射等多种数据结构。// 输出:HelloJava集合框架是Java编程的核心内容之一,掌握集合框架的使用对于编写高效、可维护的代码至关重要。
2025-02-11 20:58:58
1006
原创 接口和多态
什么是接口:当一个抽象类,如果抽象类中的所有方法都是抽象的,那么我们就可以把它定义为一个接口,接口是对行为的抽象。类是对属性和行为的抽象。
2025-02-11 19:02:45
564
原创 java中的多态与接口
什么是接口:当一个抽象类,如果抽象类中的所有方法都是抽象的,那么我们就可以把它定义为一个接口,接口是对行为的抽象。类是对属性和行为的抽象。
2025-02-11 18:58:06
552
原创 static关键字的作用
例子:就像有10个窗口卖同一个批次的火车票,此时就要用静态变量,可以被所有的窗口共享这批火车票。静态代码块,随着类的调用或创建实例而执行。优于主函数的执行,静态代码块优先级最高,所有父类子类中的静态代码块优先执行。被staic修饰的成员变量,可以被所有的对象所共享。存在于方法区的静态区,有两种调用方法,通过类名和通过对象来调用。静态方法可以通过类直接调用,静态方法只能访问静态变量,主函数是静态的。static主要有以下用法:修饰成员变量,修饰成员方法,静态代码块,静态内部类,静态导包。
2025-02-11 14:51:22
184
原创 Maven环境下构建多模块项目
模块 maven_parent -- 基模块,也就是常说的parent (pom)模块 maven_dao -- 数据库访问层,例如jdbc操作(jar)模块 maven_service -- 项目的业务逻辑层(jar)--配置项目路径-->--配置端口号-->子类:controller------>install。子类:dao------------>install。父类:mavenTest----->install。子类:service------->install。--添加servlet依赖-->
2025-01-14 22:05:27
534
原创 IDEA编译器集成Maven环境以及项目的创建(2)
选择:“File” ---> "Othoer Setting" --> "Settings for New Projects..." --->搜索“Maven”利用maven命令去编译这个项目。利用maven去打包。
2025-01-14 21:19:18
329
原创 计算最长回文串长度
用于记录每个字符出现的次数。由于 ASCII 码表的大小为 128,涵盖了常见的英文字母等字符,所以可以用这个数组来统计字符串中每个字符的出现频次。这一步计算的是该字符可以完整成对出现的数量,因为回文串是对称的,字符必须成对才能在回文串中对称排列,所以将这部分数量累加到。这道题的目标是给定一个包含大小写字母的字符串,计算通过这些字母能构造出的最长回文串的长度。),说明可以将这个单独的字符放在回文串的中心位置,从而构成更长的回文串,此时将。,即通过给定字符串中字符能够构造出的最长回文串的长度。
2025-01-14 13:29:46
389
原创 数据结构的插入与删除
而且String类型是不可变的,所以一旦满数组后,需要进行扩容。尾插的第一步就是判断数组空间是否还有空闲;打印数组(相当于toString)删除一个符合条件的数据。删除所有符合条件的数据。
2025-01-13 21:43:53
296
原创 java基础知识点(来看看你是否知道)
因为每个硬件的汇编也不一样,转成C的速度是最快的。但是弱类型语言除外(python,php,js)弱类型语言数组可以存各种数据类型,但是底层还是C,所以弱语言的内存消耗会很大,速度会很慢。但是用数组可以减少内存的消耗,这是因为数组里的量是确定的,都是一种类型。进程在内存中独占一个空间,互不干扰,有自己的mian方法,并且依赖自己的main运行的程序就是进程。一个方法调用入栈,如果再栈里的最上面,那么运行,其他的停止。方法是被拷贝一份入栈,等方法内的都运行完再出栈。本地方法栈是管理本地方法调用的栈相关操作。
2025-01-13 21:17:00
418
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人