SSM框架
大力海棠
蓝桥杯Java组个人赛省二,麻瓜ACMer的北京尚学堂·百战程序员( ̄y▽ ̄)~*
展开
-
Validator接口校验与全局异常处理器
Spring Validator接口校验上一篇日志使用Bean Validation校验机制,对基本数据类型进行校验,方法是在实体类属性上使用注解标识校验方式,最后在Controller类中具体方法的形参里添加@Vlidated注解。Bean Validation校验有一个缺点是,我们的数据校验是在Java实体类里进行约束的,如果我们有多个处理器方法需要用到同一个实体类,那么定义在实体类属性上...原创 2019-11-11 17:58:26 · 1946 阅读 · 0 评论 -
Bean Validation数据校验和分组校验
前端校验后,为什么需要后端校验在前面完成数据参数绑定到Controller时,我们可以在@RequestParam注解中做简单的空校验,就是设置required属性为true,以此来指定Controller方法中形参是否必须传入。数据校验是很常见的操作,有前端校验,即用户在前端页面上填写表单时,检查数据的合法性,再传入到后端。到了后端,还可以有后端的数据校验,后端校验通常是在业务逻辑方法,也就...原创 2019-11-04 17:43:15 · 1454 阅读 · 0 评论 -
URL请求映射与Controller处理器参数绑定
还记得以前在配置参数绑定时,视图渲染一直404- -、,注解的映射器和适配器没问题,扫描Controller包配置也没问题,视图逻辑名,请求路径都检查过很多遍,最后发现,竟然是视图解析器没配置好!!崩溃!!!排除故障后,正确运行,算是当初踩过的一个大坑。请求映射在前面配置注解的处理器映射器和适配器时,我用的是简写方式,即使用标签:<mvc:annotation-driven...原创 2019-10-28 18:00:48 · 2544 阅读 · 0 评论 -
总结前端控制器DispatcherServlet(下)-程序环境加载
上一篇日志总结了Servlet规范,对于所有处理用户请求的服务器组件,都要去实现Servlet接口。GenericServlet保留了Servlet配置,提供无参数的init()方法供子类重写,还提供了通用协议的service()方法,该方法子类必须重写,来实现不同协议的Servlet。最后HttpServlet重写GenericServlet的service()方法,实现支持HTTP协议的Ser...原创 2019-10-21 17:58:20 · 500 阅读 · 0 评论 -
总结前端控制器DispatcherServlet(上)-Servlet规范
把Spring MVC工作流实现完走了一遍后,从DispatcherServlet开始看它的具体实现,前端控制器(或叫分发器)作为整个流程的核心,依靠它完成HTTP请求的拦截和分发处理,翻看了DispatcherServlet的源码,看到它实现了多级继承,于是决定写一篇日志,从上往下一步一步总结每一层的作用和实现,先从Servlet规范开始。组件之间的通信前端控制器DispatcherSe...原创 2019-10-14 18:06:37 · 2482 阅读 · 0 评论 -
非注解和注解的处理器映射器、处理器适配器
在上一篇日志中我们看到,配置Spring MVC,当用户发来一个HTTP请求,前端控制器DispatcherServlet首先会去接收,然后请求处理器映射器HandlerMapping,在处理器映射器中查找可以处理该请求的Handler,得到处理器映射器返回的执行链后,前端控制器再根据执行链,与处理器适配器HandlerAdapter进行匹配,找到可以处理的Handler,最后执行相关的handl...原创 2019-10-07 18:23:11 · 381 阅读 · 0 评论 -
Spring MVC工作流与配置-部署Tomcat服务器上运行
当初学习Spring MVC时,最吸引我的是它如何降低整个程序各块组件之间的耦合度,以及各组件之间的通信流程。降低耦合度的优点无疑就是方便了以后对代码进行扩展,维护,让各个组件独立开来,又能清晰地互相协调通信,是给我感受最深的Spring MVC的优点。使用Spring MVC的Web项目,当用户发送一个HTTP请求后,数据经过哪些处理,如何处理以及如何显示到view上,下面就来看一下简单的配置项...原创 2019-09-30 17:49:49 · 1891 阅读 · 1 评论 -
MBG逆向工程(MyBatis+Spring下实现)
使用MyBatis Generator在前面配置MyBatis时,根据不同的需求,操作不同的表,首先要创建与数据表对应的JavaBean,然后为这个实体类配置一个mapper映射文件,里面再写有SQL语句,如果你使用动态代理,那么还得要创建一个与xml文件对应的Mapper接口。到了后面与Spring整合后,SqlSessionFactory由Spring来管理,把加载Factory的代码也放...原创 2019-09-23 18:08:02 · 2460 阅读 · 0 评论 -
MyBatis和Spring整合 - 使用Mapper代理
MyBatis和Spring的优点工欲善其事,必先利其器。开发环境配置好才能正常地编辑和编译代码,就像盖起一座高楼大厦最重要的是打地基。假如要开发Web应用,那么基本离不开数据的存储和处理,也就是离不开数据库。MyBatis解决了JDBC硬编码的问题,把SQL语句配置在了xml文件里,同时mapper映射配置文件可以将数据库操作结果集映射到相应的Java实体类中,十分方便。和Spring整合后...原创 2019-09-16 18:05:56 · 468 阅读 · 0 评论 -
MyBatis一级、二级查询缓存
想提高查询效率,除了优化查询语句外,还可以从数据库设计、数据存储结构等方面入手。对于一些查询频率非常高的数据,如果每次查询都去访问数据库,无疑是很耗费资源的,为了解决频繁查询数据库的问题,MyBatis的做法是使用自己的缓存结构,把一些查询频率较高的数据放入到自己的缓存中,用户多次查询该数据时,直接从缓存中获取,而不是去访问数据库。这种方式是不是很熟悉?没错,为了提高CPU的效率,我...原创 2019-09-09 18:03:35 · 521 阅读 · 0 评论 -
延迟加载:侵入式延迟和深度延迟
先提交后获取,异步调用?还记得多线程中的Future和FutureTesk吗?就是先提交后获取的异步调用,线程使用的是Callable接口而不是Runnable接口。异步调用可以有效率地解决这些场景:假设一个计算任务需要耗费很长时间,它的计算结果我们并不急着需要,在等待该计算完成的过程中,我们想充分利用等待的时间,让CPU去做其他的事情,等我们需要这个计算结果时,再去拿这个计算任务的结果返回值...原创 2019-09-02 19:22:56 · 1238 阅读 · 1 评论 -
高级映射(一):一对一、一对多,多对多查询总结
多表之间的数据交互其实一对一和一对多映射,在前面的配置中已经接触到,我没在日志里直接说明,是因为想要在之后写一篇总结日志(就是本篇),总结这些高级映射的配置。例如一对一查询在关联的嵌套结果集查询中就涉及到,一对多查询则在这个基础上再加上一个或多个嵌套结果集,它们可以是一个实体类,或者是一个集合。多对多查询稍微有点复杂,举个例子来说,一个商城管理系统中,一名顾客在一个购物清单中可以有多件商品,而...原创 2019-08-12 15:59:47 · 20405 阅读 · 0 评论 -
Mapper配置动态SQL:if,choose和foreach元素
SQL语句拼接在前面的配置中,无论是基本的增删查改,还是关联嵌套,集合嵌套查询,使用的SQL语句都是很基础的,表关系之间的数据操作。翻回自己大一时写的代码,从一开始的SQL语句直接拼接,如:String sql = "Update user Set username = " + username + ", gender = " + gender + " Where id = " + id;...原创 2019-08-05 15:41:16 · 2259 阅读 · 0 评论 -
输出映射:关联嵌套标签association和集合嵌套标签collection
前言为了配置好这两个标签并实现其功能,从数据库录入数据到持久化实体类创建,SQL映射配置和测试等都手动肝了一遍,虽然有点小累,但配置好,测试正确后,长舒了一口气,想起之前参加华为云开发者沙龙时看到的一句话:“选择不凡”。现在写下这一篇日志,总结一下这两个输出映射标签的使用,以及自己的配置过程。既然两个标签都是在输出映射(resultMap)中配置,在讲这两个标签之前,先来简单回顾MyBatis...原创 2019-07-22 16:20:30 · 2320 阅读 · 0 评论 -
鉴别器discriminator - 按字段选择结果集
鉴别器和switch语句无论是在C语言还是Java里,相信大家都会对switch语句有一定的印象,switch语句是多分支选择语句,即根据不同的字段,选择执行不同的语句,最大的用处就是用来处理多分支选择的场景。以前初学C语言的时候,把多选择结构用多个嵌套的if语句来实现,导致代码可读性低,switch语句正好解决这一代码冗长的问题。这篇日志写的鉴别器,discriminator标签,就是类似s...原创 2019-07-29 16:01:28 · 1687 阅读 · 0 评论 -
搭建MyBatis数据库工作环境
JDBC的“硬编码”万事开头难,搭建MyBatis时,各种配置文件,映射关系,虽然一时间不好理解,但是搭建好整个框架后,可以大幅度提高开发效率。和传统的JDBC相比,MyBatis一个比较大的优点是减少了“硬编码”。硬编码就是把一些外部数据或程序运行时生成的数据,用赋值语句写死在了源代码中,这样做的坏处是,如果我们想修改一些字段或数据,我们必须从源代码处修改,修改完后重新编译执行,这样的方式明...原创 2019-07-08 16:18:41 · 570 阅读 · 0 评论 -
自定义配置:typeHandlers和objectFactory
自定义配置MyBatis最核心的全局配置文件中,给出了许多功能配置项,最近在一直看typeHandler和objectFactory这两个配置项,从名字就可以看出,typeHandler是“类型处理器”,objectFactory是“对象工厂”,现在就来给它们两个做一篇总结日志,为什么把这两个配置项放在一起总结?因为它们都有相似的特点,就是可以对数据进行自定义操作。让我想起当初的自定义线程池和...原创 2019-07-15 16:24:04 · 615 阅读 · 0 评论