
《SSM框架系列》
文章平均质量分 89
包括MyBatis框架的基本使用,多参数传递,自定义映射,SQL注入、MyBatis的配置文件、连接池与事务管理、自定义连接池、动态SQL、多表关联、一级二级缓存、注解开发,Spring包含Bean的创建,常用注解,高内聚,低耦合,AOP,声明式事务;SpringMVC包含工作流程,常用注解....
緑水長流*z
一个专注于编写自学教程的博主;热衷于分享当下热门的技术~
展开
-
《SSM系列教程》
本系列教程包括MyBatis、Spring、SpringMVC等框架的使用和练习;MyBatis包括基本环境搭建、MyBatis参数传递详解、resultMap的使用、MyBatis事务管理、MyBatis的数据源、MyBatis动态标签、多表关系映射查询、延迟加载、MyBatis一级缓存、二级缓存、MyBatis注解开发、MyBatis的插件原理、MyBatis的执行器详解、MyBatis组件源码分析等Spring包括。原创 2022-11-29 20:26:47 · 15325 阅读 · 4 评论 -
11【SpringMVC的文件上传】
提交方式必须为post提交(因为post提交才有请求体)表单的entype类型必须改为。原创 2022-12-24 17:45:16 · 1169 阅读 · 0 评论 -
16【SSM框架整合】
需要引入Mybatis依赖编写MyBatisConfig.xml核心配置文件,配置连接信息、加载mapper文件、别名配置等等需要编写Mapper.xml和Mapper接口、使用namespace关联,方法名和标签名一致,注意resultType、parameterType等;1)引入依赖:2)实体类:3)编写dao接口:4)编写AccountMapper.xml:5)jdbc.properties:6)SqlMapConfig.xml:7)测试类:3.2.2原创 2022-12-24 17:42:08 · 629 阅读 · 0 评论 -
15【SpringMVC的注解开发】
在Servlet3.0规范中规定:为了提供给第三方框架做初始化工作,WEB容器启动时,会去扫描每个jar包下的目录下的一个名为的文件,文件中指定的实现类的全类名;搭建工程:AbstractHelloService:HelloServiceImpl:HelloServlet:HelloFilter:HelloListener:MyServletContainerInitializer:在resources目录下创建目录,然后再创建文件,文件中填写引导类的全路原创 2022-12-24 17:39:42 · 799 阅读 · 0 评论 -
14【SpringMVC的拦截器】
在实现上基于函数回调,可以对几乎所有请求进行过滤,使用过滤器的目的是用来做一些过滤操作,获取我们想要获取的数据,比如:在过滤器中修改字符编码;Tips:我们说的拦截指的是发送的请求会进入SpringMVC的拦截器,具体是否能访问到目标资源要看拦截器是否放行;再次访问:http://localhost:8080/js/test.js,发现资源能够直接访问,1)即使访问的资源不存在,只要符合SpringMVC的拦截器规则,都会进入SpringMVC。http://localhost:8080/user(拦截)原创 2022-12-24 17:33:24 · 1503 阅读 · 0 评论 -
12【SpringMVC的异常处理】
我们在处理异常时,通常使用try…catch块来处理程序中发生的异常;出现异常时每个过程都单独处理异常,系统的代码耦合度高,工作量大且不好统一,维护的工作量也很大。SpringMVC提供的异常处理机制可以把异常处理抽离成方法、类;让处理异常的代码与我们的业务代码完全分开,降低与业务核心代码的耦合度;原创 2022-12-24 16:14:15 · 1171 阅读 · 0 评论 -
10【SpringMVC的转换器】
我们知道 http 表单中的所有请求参数都是 String 类型的,如果Controller中的方法参数是一些普通类型(基本数据类型+包装类+String),适配器(HandlerAdapter)可以自动完成数据转换;但如果参数是其他数据类型,比如:格式化字符串等,适配器是不能自动将 String 类型转换为 Date 类型或者其他JavaBean 的,这时就需要开发者手动的创建自定义数据转换器。原创 2022-12-02 05:00:00 · 919 阅读 · 1 评论 -
09【SpringMVC的Json支持】
RestController是@Controller+@ResponseBody注解的整合版,拥有两个注解的功能,既能当前Bean注入到IOC容器,又能让当前Controller的所有方法的返回值以Json响应;SpringMVC支持自动将JSON转换成Java对象,也支持将Java对象自动转成JSON,SpringMVC本身没有对JSON数据处理的类库,要支持JSON的自动转换必须导入JSON的支持包。访问:http://localhost:8080/demo01/demo05。原创 2022-12-01 18:30:00 · 673 阅读 · 0 评论 -
07【SpringMVC常用注解】
作用于参数上:获取ModelAttribute标注的方法中BingMap中的某个值到某个属性到形参上,并且此次的BingMap会传递到下一个handler方法;BingMap中的值以前端传递的为准,如果前端传递了参数则以前端为准,如果没有传递参数则保持@ModelAttribute标注方法中的默认值;当接收的参数的变量名与表单的name属性不一样时可以使用@RequestParam来绑定,同时可以封装其他类型的对象,如List、Set、Map。作用:获取request域中的数据;作用:获取请求头中的数据。原创 2022-12-01 12:28:57 · 485 阅读 · 0 评论 -
06【SpringMVC的Restful支持】
REST(英文:Representational State Transfer,即表述性状态传递,简称REST)RESTful是一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。默认情况下,HTML页面中的表单并不支持提交除GET/POST之外的请求,但SpringMVC提供有对应的过滤器来帮我们解决这个问题;Tips:目前我们的jsp、html,都只支持get、post。提交方式: post。原创 2022-12-01 12:24:27 · 480 阅读 · 0 评论 -
05【SpringMVC的数据绑定】
SpringMVC里面,所谓的数据绑定就是将请求带过来的表单数据绑定到执行方法的参数变量中,SpringMVC除了能够绑定前端提交过来的数据还可以绑定Servlet的一套API,例如我们刚刚一直在使用的HttpServletRequest和HttpServletResponse表单:Demo01.jsp:5.1.2 普通实体类lombok依赖:定义实体类型:Controller:表单:Demo02.jsp:5.2.3 数组和集合类型1)数组Controller:原创 2022-12-01 12:21:17 · 446 阅读 · 0 评论 -
04【@RequestMapping注解详解】
consumes属性用于指定请求头中的Content-Type的类型,根据Content-Type的类型来决定执行的方法;params是规定请求参数中必须携带的参数,headers是规定请求头中必须携带的请求头,用法和params一致,如果请求中没有携带headers规定的请求头,用于指定限制请求参数的条件。要求请求参数的 key 和 value 必须和配置的一模一样,如果不一样则代表参数映射错误(400)。produces属性用于指定请求头中的Accept的类型,根据Accept的类型来决定执行的方法;原创 2022-12-01 12:19:01 · 919 阅读 · 0 评论 -
03【Controller方法返回值详解】
通常来说,我们的视图(页面)都是放在某个文件夹进行管理的,并且后缀通常都是固定的,要么是.html或者是.jsp再或者是其他的;我们前面的测试中,在返回普通字符串时SpringMVC默认是将其作为视图进行跳转,并且可以收视图解析器的前缀/后缀所控制,那么如果我们配置了前缀/后缀同时某个跳转不需要加上前缀后缀呢?我们知道,SpringMVC把方法的返回值当做视图进行跳转,如果返回void代表的就是不需要提供视图,一般用于ajax请求,只需要响应数据,不需要返回视图。这个类中提供了视图的前缀和后缀的配置;原创 2022-12-01 12:15:46 · 2373 阅读 · 0 评论 -
02【SpringMVC的工作流程】
我们再点击getHandler方法查看源码,发现最终是交给了映射器(HandlerMapping)来获取到执行链(对Handler的封装)主要功能:根据前端发送的请求来映射(通过反射)到具体的Handler(方法/类)上,用于找到handler。主要功能:使用不同的适配器来执行handler,返回ModelAndView(模型和视图对象);4、dispatchServlet将handler传入处理器适配器,使用合适的适配器执行。6、执行完成最终封装一个ModelAndView(模型和视图)原创 2022-12-01 12:12:35 · 592 阅读 · 0 评论 -
01【SpringMVC快速入门】
SpringMVC是Spring为表现层提供的基于 MVC 设计理念的优秀的 Web 框架,SpringMVC 已经成为目前最主流的 MVC 框架之一, 从 Spring3.0 的发布, 就已全面超越 Struts2,成为最优秀的 MVC 框架。它通过一套注解,让一个简单的 Java 类成为处理请求的控制器,而无须实现任何接口。同时它还支持RESTful 编程风格的请求。原创 2022-12-01 12:10:57 · 814 阅读 · 0 评论 -
13【JSR303校验】
Java Specification Requests:Java 规范提案简称JSR;JSR-303 是 JAVA EE 6 中的一项子规范,叫做 Bean Validation,官方参考实现是Hibernate Validator。JSR 303 用于对 Java Bean 中的字段的值进行验证。Spring MVC 3.x 之中也大力支持 JSR-303,可以在控制器中对表单提交的数据方便地验证。原创 2022-11-29 21:59:13 · 453 阅读 · 0 评论 -
04【Spring声明式事、传播行为、AOP事务控制】
如果一个业务操作中多次访问了数据库,必须保证每条SQL语句都执行成功。如果其中有一条执行失败,所有已经执行过的代码必须回滚。回到没有执行前的状态。称为事务。要么所有的SQL语句全部执行成功,要么全部失败。什么是编程式事务?编程式事务简单的来说就是采用编程的方式来管理事务,编程式事务需要将事务管理的代码写入到业务方法中,相对于核心业务而言,事务管理的代码显然属于非核心业务,对核心业务代码的侵入性太大;而且如果多个模块都使用同样模式的代码进行事务管理,显然会造成较大程度的代码冗余。原创 2022-11-29 20:15:46 · 585 阅读 · 0 评论 -
02【Spring注解开发、JdbcTemplate、整合Junit】
相对于XML方式而言,通过注解的方式配置bean更加简洁和优雅,需要注意的是,注解配置和 xml 配置要实现的功能都是一样的,只是配置的形式不一样。关于实际的开发中到底使用xml还是注解,每家公司有着不同的使用习惯。所以这两种配置方式我们都需要掌握。1.1.2 实体类:sql语句:实体类:1.1.3 controller1.1.4 service1.1.5 dao1.1.6 配置文件jdbc.properties:spring.xml:1.2 常用注解1原创 2022-11-29 20:13:54 · 529 阅读 · 0 评论 -
03【Spring AOP、CGBLIB代理】
通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件系统开发中的一个热点,也是Spring框架的一个重点。利用AOP可以实现业务逻辑各个部分的隔离,从而使得业务逻辑各个部分的耦合性降低。原创 2022-11-29 20:12:58 · 486 阅读 · 0 评论 -
01【高内聚低耦合、Spring概述、IOC容器、Bean的配置方式】
高内聚低耦合,是软件工程中的概念,是判断软件设计好坏的标准,主要用于程序的面向对象的设计,主要看类的内聚性是否高,耦合度是否低。目的是使程序模块的可重用性、移植性大大增强。通常程序结构中各模块的内聚程度越高,模块间的耦合程度就越低。内聚是从功能角度来度量模块内的联系,一个好的内聚模块应当恰好做一件事,它描述的是模块内的功能联系;耦合是软件结构中各模块之间相互连接的一种度量,耦合强弱取决于模块间接口的复杂程度、进入或访问一个模块的点以及通过接口的数据。耦合,简单的来说就是元素(类)与元素(类)之间的关系;我们原创 2022-11-29 19:31:14 · 953 阅读 · 0 评论 -
12【MyBatis注解开发】
MyBatis注解开发的使用案例原创 2022-11-29 18:40:59 · 1269 阅读 · 0 评论 -
11【MyBatis的缓存机制】
像大多数的持久化框架一样, Mybatis 也提供了缓存策略,通过缓存策略来减少数据库的查询次数,从而提高性能。Mybatis 中缓存分为一级缓存,二级缓存。1、默认情况下,只有一级缓存(session级别的缓存,也称为本地缓存)开启。2、二级缓存需要手动开启和配置(默认支持状态),他是基于Mapper级别的缓存。3、为了提高扩展性。MyBatis定义了缓存接口Cache。我们可以通过实现Cache接口来自定义二级缓存一级缓存是基于SqlSessoion的缓存。原创 2022-11-29 18:39:51 · 335 阅读 · 0 评论 -
10【Mybatis延迟加载】
通过前面的学习,我们已经掌握了 Mybatis 中一对一,一对多,多对多关系的配置及实现,可以实现对象的关联查询。我们昨天在配置emp和dept关联查询时,不管部门信息是否有使用到,都会把部门信息查询出来;我们希望查询员工信息时,暂时不查询部门信息,等到使用到部门信息的时候,再发送SQL语句查询部门相关信息,这样可以大大提高数据库的性能;延迟加载,顾名思义就是在需要用到数据时才进行加载,不需要用到数据时就不加载数据。延迟加载也称懒加载;原创 2022-11-29 18:39:03 · 1723 阅读 · 0 评论 -
09【MyBatis多表关联查询】
表关系有如下几种一对多多对一(MyBatis就是一对一)一对一多对多(一对多+一对多)举例一:一对多:一个部门下有多个员工部门与员工的关系:一对多多对一:多个员工属于一个部门。员工与部门的关系:多对一单独拿出一个员工来说,他都只能属于一个部门。所以,在mybatis中把多对一看成了一对一。一个用户对应一个身份证号码。那么用户与身份证号码关系就是一对一多对多:一个老师教多个学生。老师与学生的关系:一对多一个学生有多个老师。学生与老师:一对多,这种双向一对多,就是多对多。Emp实体类:Dept实体类:3.原创 2022-11-29 17:22:31 · 1887 阅读 · 1 评论 -
08【MyBatis之动态SQL】
Mybatis 的映射文件中,前面我们的SQL都是比较简单的,有些时候业务逻辑复杂时,我们的 SQL是动态变化的,此时在前面的学习中我们的 SQL 就不能满足要求了。原创 2022-11-23 09:21:20 · 478 阅读 · 0 评论 -
07【MyBatis连接池与事务管理】
自定义MyDataSourceFactory:/*** @intro:// MyBatis在初始化时会读取SqlMapConfig.xml中的properties配置,然后将读取到的配置传递到这个方法中 this . properties = properties;try {// Mybatis需要获取连接时首先从这个方法这里获取数据源(该方法只会调用一次) return dataSource;原创 2022-11-23 09:16:22 · 585 阅读 · 0 评论 -
06【MyBatis的配置文件】
第一步:使用properties标签。原创 2022-11-23 09:05:25 · 271 阅读 · 0 评论 -
05【DAO开发的方式】
使用 Mybatis开发 Dao,通常有两个方法,即原始 Dao 开发方式和Mapper接口代理开发方式。而现在主流的开发方式是接口代理开发方式,这种方式总体上更加简便。也就是我们之前用的方式。原创 2022-11-23 09:02:19 · 817 阅读 · 0 评论 -
04【MyBatis的类型处理器】
类型别名是为 Java 类型设置一个短的名字,可以方便我们引用某个类。我们仔细观察mapper.xml配置文件,会发现不管是入参(paramterType)还是出参(ResultType)都需要编写类的全路径,非常麻烦我们可以在MyBatis的核心配置文件中配置别名:MyBatis已经为许多常见的 Java 类型内建了相应的类型别名。它们都是大小写不敏感的,我们在起别名的时候千万不要占用已有的别名。无论是 MyBatis 在预处理语句(PreparedStatement)中设置一个参数时,还是从结果集中取原创 2022-11-23 08:57:12 · 483 阅读 · 0 评论 -
03【MyBatis参数深入】
parameterType: 输入参数。对应方法的形参。resultType: 输出参数。表示方法的返回值类型。parameterType用于确定方法的形参,在mapper映射文件中,parameterType可写可不写;在传递单个参数时,mybatis不会做特殊处理,都可以取出参数值,接口:dao接口映射:传递的是基本数据类型和String时,里面的内容可以随便填写,取得都是形参中的值测试:3.1.2 传递多个参数时1)MyBatis提供的方式MyBaits在传递多个参数时会特殊处理,多个参数会原创 2022-11-16 08:22:47 · 642 阅读 · 0 评论 -
02【MyBatis框架的CRUD】
重新搭建一个新的MyBatis环境,进行MyBatis的CRUD测试;原创 2022-11-16 08:19:56 · 563 阅读 · 0 评论 -
01【MyBatis-快速入门】
MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis。2013年11月迁移到Github。MyBatis是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。原创 2022-11-16 08:17:19 · 475 阅读 · 0 评论