![](https://img-blog.csdnimg.cn/20210120172235435.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
Spring/SpringMVC/MyBatis
文章平均质量分 90
Spring/SpringMVC/MyBatis
燕双嘤
程序辅导,毕业设计,课程作业,比赛代打等,17724838277
展开
-
MyBatis:缓存&插件
如果短时间内加载两条相同的记录,MyBatis需要重复执行两次SQL语句,那MyBatis就太傻了——程序只要将第一次加载的记录缓存起来,就可以避免第二次的数据交互。可见,缓存是所有持久层框架都提供的基本功能。MyBatis提供了两级缓存来提高程序性能:一级缓存(局部缓存):SqlSession级别的缓存。默认打开且不能关闭的缓存。 二级缓存:Mapper级别的缓存。Hibernate的一二级缓存:https://shao12138.blog.csdn.net/article/details/.原创 2021-05-24 21:07:08 · 321 阅读 · 3 评论 -
MyBatis:动态SQL
动态SQL是MyBatis的强大特性之一,通过动态SQL,MyBatis允许在XML Mapper定义的SQL语句中使用分支、循环等控制流程,这样就大大扩展了SQL语句的功能。核心元素:if:用于为SQL语句增加分支功能。 choose(when,other):用于为SQL语句增加分支功能,类似于switch的功能。 foreach:用于为SQL语句增加循环功能。 trim(where,set):主要用于去掉多余的空格等字符。1,if1.1,在select查询中使用if对于动态查.原创 2021-05-22 21:46:29 · 241 阅读 · 0 评论 -
MyBatis:类型处理器、枚举类型、数据库配置、连接池
1,类型处理器MyBatis的功能就是处理Java对象与底层数据库之间的转换,无论是JavaMyBatis为PreparedStatement设置参数时,还是从ResultSet取出记录封装Java对象时,都需要使用类型处理器(Type Handler)来处理Java类型与数据库类型之间的转换。1.1,内置的类型处理器对于绝大部分开发场景而言,MyBatis使用者根本意识不到类型处理器的存在,这是因为MyBatis内置了大量的类型处理器,这些类型处理器基本可以处理日常开发的各种类型。类原创 2021-05-05 19:34:24 · 290 阅读 · 0 评论 -
MyBatis:关联映射(一对一映射、N+1问题、延迟加载)
数据表之间的关联关系是很常见的,这就对应了实体之间的关联关系。例如,老师往往与被授课的学生之间存在关联关系,如果已经得到某个老师的实例,那么应该可以直接获取该老师对应的全部学生。反过来如果已经得到一个学生的实例,那么也应该可以访问该学生对应的老师——这种实例之间的互相反问就是关联关系。关联关系是面向对象分析、面向对象设计最重要的知识,MyBatis作为一个ResultSet映射框架,自然也对这种关系提供了支持。从用法角度来看,关联关系大致有如下两个分类:单向关系:只需单向访问关联端。例如,只能.原创 2021-05-20 14:58:20 · 390 阅读 · 0 评论 -
MyBatis:关联映射(一对多映射、多对多映射、继承映射)
当关联实体为多个时(实际包括1—N或N—N两种情况),首先需要使用集合(如List或Set)来容纳多个关联实体,然后在XML Mapper文件中使用<collection.../>元素进行映射。<collection.../>元素与前面介绍的<association.../>非常相似,他们支持的属性也基本相同,区别只是<collection.../>元素额外支持一个ofType属性,该属性用于指定关联实体(集合元素)的类型,而javaType属性则用于指.原创 2021-05-21 19:29:06 · 4389 阅读 · 0 评论 -
MyBatis:Mapper配置(增删改查、复用SQL、参数处理、#{}与${}、结果集映射)
XML Mapper的根元素是<mapper.../>,在该元素内只能包含如下几个无序的子元素:cache:用于启用当前命名空间的缓存设置。 cache-ref:用于引用其他命名空间的缓存设置。 resultMap:用于定义ResultSet与Java对象之间的映射。该元素的功能非常强大,用起来也较为复杂。 sql:用于定义可复用的SQL语句块。 insert:通常用于定义insert语句。 update:通常用于定义update语句。 delete:通常用于定义delete语.原创 2021-05-17 15:30:51 · 4718 阅读 · 1 评论 -
MyBatis:核心API及其作用域、配置文件详解
1,MyBatis的核心API及作用域在实现Mapper组件之后,主程序要用到SqlSessionFactoryBuilder、SqlSessionFactory、SqlSession等核心API。1.1,SqlSessionFactoryBuilder的作用域SqlSessionFactoryBuilder甚至算不上核心API,从它源码来看,它甚至没有专门定义构造器(Java会提供默认的、无参构造器),它主要提供了如下方法://该方法有多个重载版本public SqlSessio原创 2021-04-16 16:34:19 · 723 阅读 · 0 评论 -
MyBatis:映射方式,下载安装,基本用法、Mapper
1,ORMMyBatis与普通的ORM框架不同,MyBatis并不是真正的ORM框架,它只是一个半自动的SQL映射框架。从字面上看,MyBatis不如ORM框架的功能强大(半自动),但正是由于这种半自动,反而让MyBatis拥有更多的灵活性。MyBatis需要开发者自己编写SQL语句,因此开发者可以充分自由地执行SQL优化。 MyBatis需要开发者自己定义ResultSet与对象之间的映射关系,因此可以更简单地避免循环应用等问题。1.1,ORM概述对象/关系数据库映射(ORM):h原创 2021-04-13 20:19:16 · 396 阅读 · 0 评论 -
MyBatis:Maven,Git(TortoiseGit)
Maven是一个非常优秀的项目管理工具,采用一种“约定优于配置(CoC)”的策略来管理项目。使用Maven不仅可以把源代码构建成可发布的项目(包括编译、打包、测试和分发),还可以生成报告、生成Web站点等。1,下载和安装Maven1,登录Apache官网上个的Maven站点(http://maven.apache.org/download.cgi)下载Maven最新版本。2,配置Maven的环境变量JAVA_HOME:该环境变量应指向JDK安装路径。 M2_HOME:该环境变.原创 2020-11-06 17:20:25 · 560 阅读 · 0 评论 -
SpringMVC:返回HTML页面
【问题】在webapp的WEB-INF下放入一个html,通过控制层Controller返回html报错(404)。但是返回jsp页面却不会报错。【原因】静态的html访问不到,但是动态的jsp可以访问。英文SpringMVC中的控制器(org.springframework.web.servlet.DispatcherServlet)中默认是jsp页面,默认的配置DispatcherServlet屏蔽了html页面的访问。【解决】在web.xml中添加如下代码<servlet-m..原创 2021-07-03 12:47:38 · 3848 阅读 · 2 评论 -
SpringMVC:文件上传与下载,拦截器
为了能上传文件,必须将表单的method属性设置为POST,并将enctype属性设置为multipart/form-data。只有这种情况下,浏览器才会把用户选择的二进制数据发送给服务器。一旦设置了enctype为multipart/form-data,浏览器就将采用二进制的方式来处理表单数据。Servlet3.0及以上版本规范的HttpServletRequest已提供了方法来处理文件上传,SpringMVC则对底层的文件上传提供了进一步的封装。原创 2021-06-15 17:14:15 · 513 阅读 · 1 评论 -
SpringMVC:转换器、格式化器、数据校验
1,数据类型转化与绑定数据绑定可以将用户输入动态地绑定到应用程序的领域对象(或任何处理用户输入的对象),Spring使用DataBinder执行数据绑定,使用Validator执行数据校验,它们共同组成了validation包,validation包主要适用于SpringMVC框架,也可脱离SpringMVC使用。SpringMVC执行数据绑定的核心组件是DataBinder对象,整个数据转换、绑定的校验的大致过程如下:SpringMVC将ServletRequest对象及目标处理方法的形参传原创 2021-06-13 20:42:04 · 1330 阅读 · 1 评论 -
SpringMVC:标签库
SpringMVC提供了两套标签库,这两套标签库的TLD文件位于spring-webmvc-x.x.x.RELEASE.jar压缩包的/META-INF/路径下,文件名分别为:spring.tld和spring-form.tld。spring.tld定义的标签库:主要用于输出错误信息,设置主题和输出国际化。 spring-form.tld定义的标签库:主要用于将表单域与model属性进行绑定。1,spring-form.tld定义的标签库1.1,form标签与普通表单域标签form..原创 2021-06-11 15:11:08 · 1373 阅读 · 0 评论 -
SpringMVC:数据回传、RESTful详解、访问Servlet API
1,将数据传给视图页面1.1,Model、ModelMap和RedirectAttribute将数据传给视图页面最常见的方法就是使用Model或ModelMap,Model是Spring2.5新增的模型接口,ModelMap则是Spring2.5新增的模型接口,ModelMap则是Spring2.0引入的Map类(继承了LinkedHashMap<String,Object>类)。不管是使用Model接口,还是使用ModelMap实现类,SpringMVC底层实际使用的都是Exte原创 2021-06-10 21:24:47 · 611 阅读 · 0 评论 -
SpringMVC:请求映射&参数处理
<mvc:annotation-driven.../>元素会为Spring配置RequestMappingHandlerMapping,它会负责将HTTP请求映射到控制器的处理方法,而且HttpMessageConverter组件会负责完成请求数据(参数)与处理方法参数之间的转换,它也会完成处理方法返回值与响应数据之间的转换。1,HandlerMapping1.1,HandlerMapping与处理映射SpringMVC的两大重要组件分别是ViewResolver和Handle.原创 2021-06-03 10:40:09 · 1110 阅读 · 1 评论 -
SpringMVC:视图解析器(ViewResolver)
1,概述在配置<mvc:annotation-driven.../>元素之后,它会为SpringMVC配置HandlerMapping、HandlerAdapter、HandlerExceptionResovler这三个特殊的Bean,它们解决了URL—Controller的处理方法的映射。当Controller的处理方法处理完成后,该处理方法可返回:String(逻辑视图名)、View(视图对象)、ModelAndView(同时包括Model与逻辑视图或View),而View对象才.原创 2021-05-29 17:47:50 · 3713 阅读 · 1 评论 -
SpringMVC:Struts2区别、搭建应用、流程处理、核心控制器
作为Spring框架的一部分,SpringMVC可以与Spring框架无缝整合。实际上,SpringMVC本身就是基于Spring核心容器的,SpringMVC的控制器天然就处于Spring容器的管理之下,因此Spring可以轻易地将Service组件注入控制器。SpringMVC已逐渐取代Struts2的地位,成为Java领域最流行的MVC框架,这不仅仅由于它是Spring家族的产品,更由于SpringMVC本身更加简单、易用,而且功能非常强大。SpringMVC的控制器、处理方法都非常简单,通常只.原创 2021-05-26 21:04:27 · 337 阅读 · 3 评论 -
Spring:SpringMVC+Spring+MyBatis整合&零配置
1,构建项目框架然后得到如下目录,还需创建一些其他目录:2,导入架包(依靠maven)Maven:https://shao12138.blog.csdn.net/article/details/109535261<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/20.原创 2021-06-15 18:07:42 · 227 阅读 · 0 评论 -
Spring:Struts+Spring+Hibernate整合&零配置
1,Spring整合Hibernate时至今日,可能极少有Java EE应用会直接以JDBC方式进行持久化层访问。毕竟,用面向对象的程序设计语言来访问关系型数据库,是一件让人沮丧的事。大部分时候,Java EE应用都会以ORM框架来进行持久化层访问,在所有的ORM框架中,Hibernate以其灵巧、轻便的封装赢得了众多开发者的青睐。1.1,Spring提供的DAO支持DAO模式是一种标准的Java EE设计模式,DAO模式的核心思想是,所有数据库访问都通过DAO组件完成,DAO组件封装了数原创 2021-03-20 14:30:12 · 294 阅读 · 0 评论 -
Spring:事务管理
Spring的事务管理不需要与任何特定的事务API耦合。对不同的持久层访问技术,编程式事务提供了一致的事务编程风格,通过模板化操作一致性地管理事务。声明式事务基于Spring AOP实现,但并不需要开发者真正精通AOP技术,即可容易地使用Spring的声明式事务管理。1,Spring支持的事务策略1.1,传统的事务策略Java EE应用的传统事务有两个策略:全局事务和局部事务。全局事务由应用服务器管理,需要底层服务器的JTA支持。可以跨多个事务资源(典型的例子是关系数据库和消息队列);.原创 2021-02-04 17:48:20 · 1130 阅读 · 0 评论 -
Spring:缓存机制
Spring3.1新增了一种全新的缓存机制,这种缓存机制与Spring容器无缝地整合在一起,可以对容器中的任意Bean或Bean的方法增加缓存。Spring的缓存机制非常灵活,它可以对容器中的任意Bean或Bean的任意方法进行缓存,因此这种缓存机制可以在JavaEE应用的任何层次上进行缓存。与Hibernate SessionFactory级别的二级缓存相比,Spring缓存的级别更高,Spring缓存可以在控制器组件或业务逻辑组件级别进行缓存,这样应用完全无须重复调用底层的DAO组件的方法。S.原创 2021-02-03 17:28:27 · 1224 阅读 · 0 评论 -
Spring:访问方法参数、重用切入点、切入点表达式
1,访问目标方法参数1.1,方法一访问目标方法最简单的做法是定义增强处理方法时将第一个参数定义为JoinPoint类型,当该类型增强处理方法被调用时,该JoinPoint参数就代表了织入增强处理的连接点。JoinPoint里包含了如下几个常用的方法:Object[] getArgs():返回执行目标方法时的参数。 Signature getSignature():返回被增强的方法的相关信息。 Object getTarget():返回被织入增强处理的目标对象。 Object getThi原创 2019-05-31 08:59:34 · 684 阅读 · 0 评论 -
Spring:面向切面编程(AOP)
AOP,也就是面向切面编程,作为面向对象编程的一种补充,已经成为一种比较成熟的编程方式。AOP与OOP互相补充,面向对象编程将程序分解成各个层次的对象,而面向切面编程将程序的运行过程分解成各个切面。可以这么理解:面向对象编程是从静态角度考虑程序结构,而面向切面编程则是从动态角度考虑程序的运行过程。1,为什么需要AOP在传统的OOP编程里以对象为核心,整个软件由一系列相互依赖对象组成,而这些对象将被抽象成一个个类,并允许使用类继承来管理类与类之间一般到特殊的关系。随着软件规模的增大,应用软件逐渐.原创 2021-01-29 14:19:19 · 563 阅读 · 0 评论 -
Spring:后处理器(配置器)&零配置(注解)
1,两种后处理器Spring框架提供了很好的扩展,除了可以与各种第三方框架良好整合外,其IoC容器也允许开发者进行扩展,这种扩展甚至无须实现BeanFactory或ApplicationContext接口,而是允许通过两个后处理器对IoC容器进行扩展。Bean后处理器:这种后处理器会对容器中的Bean进行后处理,对Bean进行额外加强。 容器后处理器:这种后处理器对IoC容器进行后处理,用于增强容器功能。Bean的生命周期:https://shao12138.blog.csdn.net/art原创 2021-01-28 17:01:23 · 1894 阅读 · 0 评论 -
Spring:高级依赖关系配置&XML简化配置方式
1,高级依赖关系配置Spring允许将Bean实例的所有成员变量,甚至基本类型的成员变量都通过配置文件来指定值,这种方式提供了很好的解耦。但是否真的值得呢?如果将基本类型的成员变量也通过配置文件指定,虽然提供了很好的解耦,但大大降低了程序的可读性(必须同时参照配置文件才可以知道程序中各成员变量的值)。因此,滥用依赖注入会产生严重问题!最好的做法:组件与组件的耦合,采用依赖注入管理;但基本类型的成员的变量值,应直接在代码中设置。对于组件之间的耦合关系,通过使用控制反转,使代码变得清晰。因此,Bean原创 2021-01-27 17:55:07 · 254 阅读 · 0 评论 -
Spring:Bean(创建方式、抽象继承、工厂Bean、生命周期)
1,Bean的创建1.1,调用构造器创建Bean调用Bean类的无参构造函数来创造对象,因此要求提供无参构造函数。在这种情况下class元素是必须的,值就是Bean对象的实现类。如果采用设值注入,Spring容器将使用默认的构造器来创建Bean实例,Spring对Bean实例的所有属性进行默认初始化,即所有基本数据类型的值初始化为0或false;所有引用类型的值初始化为null。接下来BeanFactory会根据配置文件决定依赖关系,先实例化被依赖的Bean实例,然后为Bean注入依赖关系,最原创 2021-01-25 16:20:11 · 621 阅读 · 0 评论 -
Spring:集合注入&组合注入
在 Spring中可以通过一组内置的 xml 标签(例如: <list>, <set> 或 <map>) 来配置集合属性。当使用<list.../>、<set.../>、<map.../>等元素配置集合类型的参数值时,还需要配置集合元素。1,数组、List、Set等集合注入配置 java.util.List 类型的属性, 需要指定 <list> 标签, 在标签里包含一些元素. 这些标签可以通过 <val..原创 2019-05-17 08:58:15 · 326 阅读 · 0 评论 -
Spring:Bean(基本定义、作用域、各类注入、自动装配、注解)
从本质上看,Spring容器就是一个超级大工厂,Spring容器中的Bean就是该工厂的产品。Spring容器能产生那些产品,则完全取决于开发者在配置文件中的配置。对于开发者来说,开发者使用Spring框架主要是做两件事:(1)开发Bean。(2)配置Bean。对于Spring框架来说,它要做的就是根据配置文件来创建Bean实例,并调用Bean实例的方法完成“依赖注入”——这就是IoC的本质。其实Spring框架的本质就是,通过XML配置来驱动Java代码,这样就可以把原本由Java代码管理的耦合关系.原创 2021-01-23 17:21:26 · 390 阅读 · 0 评论 -
Spring:Spring容器(BeanFactory和ApplicationContext)
Spring的IoC容器是一个提供IoC支持的轻量级容器,IoC容器为管理对象之间的依赖关系提供了基础功能。Spring为我们提供了两种容器:BeanFactory和ApplicationContext。在基于Spring的JavaEE应用中,所有的组件都被当成Bean处理,包括数据源、Hibernate的SessionFactory。应用中所有组件都处于Spring的管理下,都被Spring以Bean的方式管理,Spring负责创建Bean实例,并管理其生命周期。Spring里的Bean是非常广义的.原创 2021-01-23 16:55:57 · 731 阅读 · 0 评论 -
Spring:IoC(控制反转、依赖注入、循环依赖)
1,IoC(Spring的核心和基础)1.1,IoC原理纵观所有的Java应用(从基于Applet的小应用到多层结构的企业级应用),这些应用中大量存在A对象调用B对象方法的情况,者请情况被Spring称为依赖,即A对象依赖B对象。对于Java应用而言,它们总是由一些相互调用的对象构成的,Spring把这种相互调用的关系称为依赖关系。假如A组件调用了B组件的方法,即可称A组件依赖B组件。Spring框架的核心功能有两个:Spring容器作为超级大工厂,负责创建、管理所有的Java对象,这些J原创 2021-01-21 17:50:10 · 1547 阅读 · 0 评论 -
Spring:基本概念,管理Bean,核心问题
Spring是一个从实际开发中抽取出来的框架,因此它完成了大量开发中的通用步骤,留给开发者的仅仅是与特定应用相关的部分,从而大大提高了企业应用的开发效率。Spring为企业应用的开发提供了一个轻量级的解决方案。...原创 2021-01-20 18:05:33 · 571 阅读 · 0 评论