
JavaEE
best_virtuoso
啊对的对的对的对的对的 哦!不对哎呀不对不对不对哦 对的对的对的对的对的 嘶!对不对?不对啊 对啥啊对哦!对的对的 对对对对…对吗?
展开
-
JavaEE MyBatis-Plus 基本CRUD
语句设置不同的条件,若没有条件,则可以为该形参赋值。中都已得到了实现,我们可以直接使用,接口如。原创 2025-03-27 20:09:17 · 97 阅读 · 0 评论 -
JavaEE MyBatis-Plus 入门案例
处报错,因为找不到注入的对象,因为类是动态创建的,但是程。为了避免报错,可以在。原创 2025-03-25 16:28:26 · 473 阅读 · 0 评论 -
JavaEE MyBatis-Plus MyBatis-Plus介绍
提供了通用的Mapper和Service,可以在不编写任何SQL语句的前提下,快速的实现单表的增删改查(CURD),批量,逻辑删除,分页等操作。物理分页,开发者无需关心具体操作,配置好插件之后,写分页等。语句以及其执行时间,建议开发测试时启用该功能,能快速揪出。层代码,支持模板引擎,更有超多自定义配置等您来使用。操作,更有强大的条件构造器,满足各类使用需求。操作智能分析阻断,也可自定义拦截规则,预防。表达式,方便的编写各类查询条件,无需再。,性能基本无损耗,直接面向对象操作。配置,完美解决主键问题。原创 2025-03-25 16:06:45 · 343 阅读 · 0 评论 -
JavaEE SpringBoot 3、简化部署
2.右侧maven打开,点击install打包成jar包,jar包在target中。java -jar jar包名称(可以使用tab键补齐)1.pom.xml文件中下载插件。3.打开jar包所在的文件夹。原创 2025-03-12 11:25:51 · 167 阅读 · 0 评论 -
JavaEE SpringBoot 2、Spring Boot 入门
简化Spring应用开发的一个框架;整个Spring技术栈的一个大整合;J2EE开发的一站式解决方案;优点:快速创建独立运行的spring项目以及与主流框架集成使用嵌入式的Servlet容器,应用无需打成war包,内嵌TomcatStarters自动依赖和版本控制大量的自动装配,简化开发,也可以修改默认值无需配置XML无代码生成开箱即用准生产环境的运行时应用监控与云计算的天然集成。原创 2025-03-10 19:07:26 · 318 阅读 · 0 评论 -
JavaEE SpringBoot 1、SpringBoot项目的创建
完成后按照需求修改java版本与spring-boot-starter-parent版本,并重新加载项目即可。完成后按照需求修改java版本与spring-boot-starter-parent版本,并重新加载项目即可。3. Idea从阿里云的官网(https://start.aliyun.com)下载打开。Java与jdk版本不同可以在项目中的pom.xml里修改。可以勾选依赖项,也可以在项目中的pom.xml中导入依赖项。可以勾选依赖项,也可以在项目中的pom.xml中导入依赖项。原创 2025-03-09 19:48:03 · 717 阅读 · 0 评论 -
常见问题 Mybatis获取参数值的两种方式 #{} ${}的区别
mybatis的#{}之所以能够预防sql注入是因为底层使用了PrepardStatment类的setString()方法来设置参数, 此方法会获取参数传递过来的每个字符,然后进行循环对比,如果发现有敏感字符(如:单引号、双引号等), 则会在上边加一个‘/’代表转义此符号,让其变成一个普通的字符串,不参与SQL语句的生成,达到预防sql注入的效果。1.能用 #{} 的地方就用 #{},尽量少用 ${}${}的本质是字符串拼接,#{}的本质是占位符赋值。如何选择使用 #{} 和 ${}比如我们要做如下查询。原创 2025-03-08 17:29:01 · 299 阅读 · 0 评论 -
常见问题 springmvc 拦截器、过滤器的概念与区别
程序首先会执行拦截器类中的preHandle()方法,如果该方法的返回值true,则程序继续向下执行处理器当中的方法,否则不在向下执行;在DispatcherServlet处理完请求后,才会执行afterCompletion()方法。所以,此方法可对方法进行判断,决定程序是否继续执行,或者进行一些初始化操作及对请求进行预处理。由于是在Controller方法执行完毕之后执行该方法,所以该方法适合进行。,可通过此方法多被用于处理返回的视图,可通过此方法对请求域中的模型和视图做进一步的修改。原创 2025-03-08 16:04:46 · 420 阅读 · 0 评论 -
常见问题 springmvc流程
从微观考虑,Controller是单个Http请求处理过程中的控制器,而ModelAndView是Http请求过程中返回的模型(Model)和视图(View)。DispatcherServlet将请求分发给 Controller之前,需要借助于Spring MVC提供的HandlerMapping定位到具体的Controller。处理器映射器(Handler Mapping)是一个组件,负责将请求映射到相应的处理器(Controller),会自动将请求URL与这些注解进行匹配,找到对应的处理器。原创 2025-03-08 15:52:15 · 274 阅读 · 0 评论 -
常见问题 Spring的核心控制反转(IOC)和面向切面(AOP)
控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。在当前情况之下A类想要调用B类就必须自己在自己的内部新建B类的对象,这样的耦合度太高,那我们如何降低耦合度的呢?如上图所示这是一个基本的登录原理图,但是如果我们想要在这个登录之上添加一些新的功能,比如权限校验。③ 采用反射设计模式创建对象。原创 2025-03-08 10:24:29 · 331 阅读 · 0 评论 -
JavaEE Spring框架的介绍 2.IOC的程序入门
ClassPathXmlApplicationContext,加载类路径下的Spring配置文件。ApplicationContext接口,工厂的接口,使用该接口可以获取到具体的Bean对 象。编写Spring核心的配置文件,在src目录下创建applicationContext.xml的配置 文件,名称是可以任意的,但是一般都会使用默认名称。把log4j.properties的配置文件拷贝到resources目录下,做为log4j的日志配置 文件。编写接口和实现类,编写具体的实现方法。原创 2025-03-07 10:12:54 · 220 阅读 · 0 评论 -
JavaEE Spring的IOC核心技术 1. 什么是IOC
控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计 原则,可以用来减低计算机代码之间的耦合度。IOC-- Inverse of Control,控制反转,将对象的创建权力反转给Spring框架!解决问题:使用IOC可以解决的程序耦合性高的问题!Spring的工厂读取配 置文件。原创 2025-03-07 09:54:38 · 110 阅读 · 0 评论 -
JavaEE Spring框架的介绍 2. Spring 框架的优点
6.降低JavaEE API 的使用难度,Spring 对JavaEE开发中非常难用的一些API (JDBC、JavaMail、远程调用等),都提供了封装,使这些API应用难度大大降 低。5.方便集成各种优秀框架,Spring不排斥各种优秀的开源框架,其内部提供了对 各种优秀框架(如:Struts2、Hibernate、MyBatis、Quartz 等)的直接支持。4.方便程序的测试,Spring对Junit4支持,可以通过注解方便的测试Spring程 序。原创 2025-03-06 17:01:15 · 126 阅读 · 0 评论 -
JavaEE Spring框架的介绍 1. Spring 框架的概述
Spring 是于2003 年兴起的一个轻量级的Java开发框架,由RodJohnson在其 著作Expert One-On-One J2EEDevelopment and Design中阐述的部分理念和原 型衍生而来。Spring是于2003 年兴起的一个轻量级的Java 开发框架,由RodJohnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring 是一个开放源代码的设计层面框架,它解决的是业务逻辑层和其他各层的 松耦合问题,因此它将面向接口的编程思想贯穿整个系统应用。原创 2025-03-06 16:46:11 · 230 阅读 · 0 评论 -
Mybatis MyBatis延迟加载策略 二、多对一的延迟加载查询演示
在SqlMapConfig.xml配置文件中开启延迟加载的配置。在AccountMapper接口中编写方法。在UserMapper接口中编写方法。编写配置文件和SQL语句。原创 2025-02-19 18:30:09 · 312 阅读 · 0 评论 -
Mybatis Mybatis的增删改查 三、MyBatis获取参数值的两种方式
mybatis的#{}之所以能够预防sql注入是因为底层使用了PrepardStatment类的setString()方法来设置参数, 此方法会获取参数传递过来的每个字符,然后进行循环对比,如果发现有敏感字符(如:单引号、双引号等), 则会在上边加一个‘/’代表转义此符号,让其变成一个普通的字符串,不参与SQL语句的生成,达到预防sql注入的效果。sql的预编译也是一样的道理,在执行前就编译好,等执行时直接取编译结果去执行。从上边我们可以看出$使用的是字符串连接的方式,#使用的是占位符的方式。原创 2025-02-14 17:07:41 · 1039 阅读 · 0 评论 -
Mybatis Mybatis事务
设置自动提交事务,可以通过openSession的方法进行设置,openSession(true) 自动提交事务。代码如下:(配置中的策略不变)MyBatis框架中的事务默认是手动提交的,也就是每次编写程序都需要调用commit()方法提交事务。1.订单表当中添加一条记录 2.商品数量数据更新(减少) 3.....当多个任务同时进行操作的时候,这些任务只能同时成功,或者同时失败。多个操作同时进行,那么同时成功,那么同时失败。事务有四个特性:一致性、持久性、原子性、隔离性。原创 2025-02-20 01:50:57 · 284 阅读 · 0 评论 -
Mybatis MyBatis框架的缓存 二级缓存
二级缓存是SqlSessionFactory级别,通过同一个SqlSessionFactroy创建SqlSession查询结果会被缓存;①.在SqlMapConfig.xml配置文件中开启二级缓存。④:二级缓存必须在SqlSession关闭或提交之后有效。④:二级缓存必须在SqlSession关闭或提交之后有效。②. 在UserDao.xml配置文件声明使用二级缓存。③:查询数据所转换的实体类类型必须实现序列化接口。③:查询数据所转换的实体类类型必须实现序列化接口。(1).二级缓存开启的条件。原创 2025-02-19 21:00:09 · 172 阅读 · 0 评论 -
Mybatis Mybatis的增删改查 二、MyBatis参数详解
简单的写法:java.lang.Integer --> int integer Int Integer 都可以,框架提供简写的方式。resultType可以指定pojo将查询结果映射为pojo,但需要pojo的属性名和sql查询的列名一致方可映射成功。resultMap实质上还需要将查询结果映射到pojo对象中。如果sql查询字段名和pojo的属性名不一致,可以通过resultMap将字段名和属性名作一个对应关系 ,pojo,比如在查询结果映射对象中包括pojo和list实现一对一查询和一对多查询。原创 2025-02-14 16:24:03 · 217 阅读 · 0 评论 -
Mybatis MyBatis延迟加载策略 一、概念与应用场景
【代码】Mybatis MyBatis延迟加载策略 一、概念与应用场景。原创 2025-02-19 18:03:32 · 229 阅读 · 0 评论 -
Mybatis Mybatis的动态SQL 二、动态sql语句标签
从上图的案例当中我们可以看到如果标签返回的内容是以AND 或OR 开头的,则它会剔除掉。有些时候我们的数据是以数组的形式出现的,比如我们进行批量删除和批量添加的时候。这个标签相当于是java当中的if.....elseif.....else。trim标记是一个格式化的标记,可以完成set或者是where标记的功能。choose标签是这个标签组合当中的父标签和标签都在标签内部。when标签就相当于是 if 和 elseif。otherwise标签相当于是else。where标签使用在if标签的外面。原创 2025-02-16 00:54:37 · 228 阅读 · 0 评论 -
Mybatis MyBatis延迟加载策略 三、一对多的延迟加载查询演示
如果拷贝之前的项目,默认是不延迟加载的。编写的是SQL语句把所有数据全部都查询出来了。5.在AccountMapper.xml配置文件中编写配置和SQL语句。6.在SqlMapConfig.xml配置文件中开启延迟加载的配置。在UserMapper.xml配置文件中编写配置和SQL语句。在AccountMapper接口中编写方法。在UserMapper中编写方法。原创 2025-02-19 19:27:31 · 160 阅读 · 0 评论 -
Mybatis MyBatis框架的缓存 一级缓存
查询的时候,先从SqlSession的缓存中查找,如果有,直接返回。如果没有,查询数据库。SqlSession对象中维护了一个Map集合,用于存储相互的缓存数据。MyBatis的一级缓存也是SqlSession的缓存。证明一级缓存的存在,通过用户id查询2次,查看结果。1.一级缓存(也叫本地缓存)原创 2025-02-19 20:42:24 · 929 阅读 · 0 评论 -
Mybatis Mybatis的动态SQL 一、动态sql的简述
Mybatis框架的动态sql技术是一种根据特定条件动态拼接SQl语句的功能,他存在的意义是为了解决拼接SQL语句字符串时的痛点问题。比如我们在用淘宝之类的软件在进行商品属性选择的时候,我们会发现我们可以选择的商品的属性有很多条件,其中一些条件可以选择也可以不选择,那么如果使用传统的方式进行查询,反而在拼接sql的时候会造成一些列的问题。如果username为空,那么将只根据sex来查询;上面的查询语句,我们可以发现,如果 #{username} 为空,那么查询结果也是空,如何解决这个问题呢?原创 2025-02-15 17:45:21 · 234 阅读 · 0 评论 -
Mybatis 配置Mybatis 一、框架的概述
MyBatis是一个优秀的基于Java的持久层框架,内部对JDBC做了封装,使开发者只需要关注SQL语句,而不用关注JDBC的代码,使开发变得更加的简单。MyBatis通过XML或者注解的方式将要执行的各种Statement对象配置起来,通过Java对象和statement中SQL的动态参数进行映射,并最终执行SQL语句。执行SQL后,最终将结果已Java对象返回。采用了ORM的思想(ORM框架采用元数据来描述对象与关系映射的细节,元数据一般采用XML格式,并且存放在专门的对象一映射文件中)原创 2025-02-13 12:17:22 · 186 阅读 · 0 评论 -
Mybatis Mybatis的增删改查 一、代理Dao方式的CRUD操作
2. UserDao接口代码。代理Dao方式的增删改查。原创 2025-02-14 13:51:07 · 174 阅读 · 0 评论 -
Mybatis 配置Mybatis 二、MyBatis的入门程序
6.编写主配置文件,在resources目录下创建SqlMapConfig.xml的配置文件(其实名称可以任意),导入对应的约束,编写主配置文件。编写UserMapper.xml的配置文件,导入约束文件。引入log4j的jar包,1.2.12版本(需要引入log4j.properties的配置文件)4.编写UserMapper的接口和方法(就是咱们以前的UserDao接口)3.编写User的实现类,属性尽量使用包装类型,具体的代码如下。引入MyBatis的3.4.5的版本的坐标。原创 2025-02-14 00:49:21 · 936 阅读 · 0 评论 -
SpringMVC SpringMVC拦截器 拦截器基础知识
SpringMVC提供了Intercepter拦截器机制,类似于Servlet当中的Filter过滤器,用于拦截用户的请求并作出相应的处理,比如通过拦截器来进行用户权限验证或者用来判断用户是否登录。SpringMVC拦截器是可插拔式的设计,需要某一功能拦截器,就需要在配置文件中应用拦截器即可;如果不需要这个功能拦截器,只需要在配置文件中取消该拦截器即可。原创 2025-02-09 20:24:22 · 470 阅读 · 0 评论 -
SpringMVC SpringMVC请求 二、RequestMapping的请求参数绑定
2. 如果一个JavaBean类中包含其他的引用类型,那么表单的name属性需要编写成:对象.属性 例如:address.name。2. SpringMVC的参数绑定过程是把表单提交的请求参数,作为控制器中方法的参数进行绑定的。1. 表单提交的数据都是k=v格式的 username=haha&password=123。1. 提交表单的name和JavaBean中的属性名称需要一致。3. 要求:提交表单的name和参数的名称是相同的。1. 提交表单的name和参数的名称是相同的。(2). 支持的数据类型。原创 2025-02-01 19:45:46 · 258 阅读 · 0 评论 -
SpringMVC SpringMVC请求 三、不常用的注解
2. required:请求参数中是否必须提供此参数,默认值是true,必须提供。1. 作用:把请求中的指定名称的参数传递给控制器中的形参赋值。1. value:请求参数中的名称。原创 2025-02-01 22:23:11 · 210 阅读 · 0 评论 -
SpringMVC SpringMVC配置和基本原理 一、Java web的发展历史
MVC思想将一个应用分成三个基本部分:Model(模型)、View(视图)和Controller(控制器),这三个部分以最少的耦合协同工作,从而提高了应用的可扩展性和可维护性。Model2:相对于Model1来说,职责分工更为明确,在Model1的基础上,抽取了Servlet层,体现了一个分层的思想,适合大型的项目开发(当时的评判标准是适合大型项目开发的,现在看起来已经过时了)这样的设计模式到这一个jsp页面负责了视图的展示和业务流程的控制高度耦合的结果是Jsp代码十分复杂,后期维护困难。原创 2025-01-31 17:00:02 · 377 阅读 · 0 评论 -
SpringMVC SpringMVC响应 三、SpringMVC的异常处理
Controller调用service,service调用dao,异常都是向上抛出的,最终有DispatcherServlet找异常处理器进行异常的处理。controller代码。controller代码。②:使用处理器处理异常。①:使用自己处理异常。原创 2025-02-05 17:23:33 · 156 阅读 · 0 评论 -
SpringMVC SpringMVC配置和基本原理 二、SpringMVC的入门案例
Spring MVC的本质就是一个servlet,是对原生的servlet进行了封装。在以前我们浏览器的每一次请求都需要我们写一个对应的servlet,现在我们只需要将浏览器的请求和响应交给DispatcheServlet进行统一的处理。Spring MVC是基于原生的servlet,通过强大的前端控制器DispatcheServlet,对请求和响应进行统一处理。③:首先需要将原本的web.xml配置文档做出如下更改。编写suc.html页面 suc.html。编写springmvc.xml的配置文件。原创 2025-01-31 17:18:10 · 300 阅读 · 0 评论 -
SpringMVC SpringMVC拦截器 拦截器执行流程与实例
程序首先会执行拦截器类中的preHandle()方法,如果该方法的返回值true,则程序继续向下执行处理器当中的方法,否则不在向下执行;业务处理器(即控制器Controller类)处理完请求后,会执行postHandle()方法,然后会通过DispatcherServlet向前端返回响应;当多个拦截器同时工作时,它们的preHandle()方法会按照配置文件中拦截器的配置顺序执行,而它们的postHandle()方法和afterCompletion()方法则会按照配置顺序的反序执行。原创 2025-02-09 20:27:56 · 254 阅读 · 0 评论 -
SpringMVC SpringMVC响应 二、SpringMVC实现文件上传
在Springmvc.xml配置文件上传解析器。编写文件上传的html页面。导入文件上传的jar包。controller层。原创 2025-02-05 17:16:06 · 194 阅读 · 0 评论 -
SpringMVC SpringMVC请求 一、RequestMapping注解
RequestMapping注解的作用是建立请求URL和处理方法之间的对应关系。2. value value属性和path属性是一样的。RequestMapping注解可以作用在方法和类上。3. 细节:路径可以不编写 / 表示应用的根目录开始。3. mthod 指定该方法的请求方式。2. 作用在方法上:第二级的访问目录。1. path 指定请求路径的url。1. 作用在类上:第一级的访问目录。原创 2025-02-01 17:44:16 · 182 阅读 · 0 评论 -
SpringMVC SpringMVC配置和基本原理 三、SpringMVC原理
1. 当启动Tomcat服务器的时候,因为配置了load-on-startup标签,所以会创建DispatcherServlet对象,就会加载springmvc.xml配置文件。3. 从index.jsp发送请求,请求会先到达DispatcherServlet核心控制器,根据配置@RequestMapping注解找到。4. 根据执行方法的返回值,再根据配置的视图解析器,去指定的目录下查找指定名称的JSP文件。DispatcherServlet的作用是将请求发送到不同的处理器。3. 处理器(Handler)原创 2025-01-31 17:20:07 · 194 阅读 · 0 评论 -
SpringMVC SpringMVC响应 一、数据处理及跳转
DispatcherServlet会拦截到所有的资源,导致一个问题就是静态资源(img、css、js)也会被拦截到,从而不能被使用。解决问题就是需要配置静态资源不进行拦截,在springmvc.xml配置文件添加如下配置。2. mapping元素表示以/static开头的所有请求路径,如/static/a 或者/static/a/b。设置ModelAndView对象 , 根据view的名称 , 和视图解析器跳到指定的页面。json和JavaBean对象互相转换的过程中,需要使用jackson的jar包。原创 2025-02-05 09:44:47 · 414 阅读 · 0 评论 -
JavaEE Maven 八、仓库
运行 Maven 的时候,Maven 所需要的任何构件都是直接从本地仓库获取的。如果本地仓库没有,它会首先尝试从远程仓库下载构件至本地仓库,然后再使用本地仓库的构件。Maven 的本地仓库,在安装 Maven 后并不会创建,它是在第一次执行 maven 命令的时候才被创建。Maven 中央仓库是由 Maven 社区提供的仓库,其中包含了大量常用的库。在 Maven 中,任何一个依赖、插件或者项目构建的输出,都可以称之为构件。Maven 仓库是项目中依赖的第三方库,这个库所在的位置叫做仓库。原创 2025-03-05 16:10:31 · 174 阅读 · 0 评论 -
JavaEE Maven 七、依赖
当编写Java代码时,我们总是需要一些库,例如,做单元测试我们需要JUnit库。对于更大的项目,我们可能需要创建自己的库并在不同的部分使用它的项目。不同的项目需要不同版本的库。保持项目最新的库JAR文件的正确版本不是一个容易的任务。以递归方式下载所有这些外部依赖JAR文件并确保下载正确的版本是一项巨大的任务。例如上图的junit,只在测试中使用,则选择test即可,默认为。Maven将下载它们并将它们放在您的本地Maven存储库中。当项目越来越大,我们将需要越来越多的外部依赖。原创 2025-03-05 16:02:58 · 325 阅读 · 0 评论