猿创征文|13万字学会Spring+SpringMVC+Mybatis框架

Posted 执久呀

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了猿创征文|13万字学会Spring+SpringMVC+Mybatis框架相关的知识,希望对你有一定的参考价值。

目录

Spring介绍

Spring是什么

Spring发展历程

Spring优势

Spring的体系结构 

 Spring快速入门

Spring程序开发步骤

idea中快速入门

 Spring配置文件

Bean标签基本配置

Bean标签范围配置

 无参构造创建时机

Bean生命周期配置

 Bean实例化三种方式

  

Bean的依赖注入分析

依赖注入概念

将UserDao注入到UserService内部的方式

set注入方法改进

 有参构造注入方法

Bean的依赖注入的数据类型

集合的数据类型注入

 引入其他配置文件(分模块开发)

Spring的重点配置

Spring相关的API

ApplicationContext的继承体系

ApplicationContext的实现类

getBean()方法使用

 Spring配置数据源(连接池)

数据源的开发步骤

 加载配置文件方式创建

将DateSource的创建权交给Spring容器去完成

抽取jdbc配置文件

 Spring注解开发

Spring原始注解

使用注解改进

 在UserServiceImpl中其他改进写法

注解方式注入普通值

初始方法注解 

Spring新注解

使用新注解替换xml文件

 Spring集成Junit

 Spring集成Junit步骤

Spring与Web环境集成

 项目结构总览

 给Maven配置tomcat服务器

使用maven手动创建web工程

ApplicationContext应用上下文获取方法

优化代码

解耦合2

spring自带的监听器

SpringMVC概述

web层的框架完成的相应的操作图示

SpringMVC开发使用步骤

SpringMVC流程图示

 SpringMVC的组件解析

SpringMVC执行流程

执行流程图示

SpringMVC注解解析

@RequestMapping

SpringMVC的xml配置解析

SpringMVC的相关组件

SpringMVC的注解和配置

SpringMVC的数据响应

SpringMVC的数据响应方式

①页面跳转

②回写数据

2、返回ModelAndView对象

方式1:直接new对象

 方式2:写在方法里让SpringMVC创建

方式3:model和view分开做

方式4:通过HttpServletRequest

回写数据

                                                                                                                                         将字符串转成json格式回传到客户端

2、直接返回对象或集合      

使用SpringMVC自动将对象或集合转化为json格式

 注解方式优化转化json

SpringMVC获得请求数据

获得请求参数

基本数据类型

获得POJO类型参数

 获得数组类型参数

获得集合类型参数

静态资源访问的开启

配置全局乱码过滤器

参数绑定注解@RequestParam

注解@RequestParam的参数使用说明

获得Restful风格的参数

自定义类型转换器

自定义转换器的开发步骤:

 获得Servlet相关API

获得请求头

@RequestHeader

 @CookieValue

文件上传 

单文件上传步骤

 多文件上传实现

法一:写下多个参数

 法二:数组接收

JdbcTemplate概述

JdbcTemplate开发步骤

 Spring产生JdbcTemplate对象

测试插入

 运行时,出现java.lang.NoClassDefFoundError: org/springframework/core/metrics/ApplicationStartup 

jdbc内容和配置解耦合

使用Spring集成Junit完成JdbcTemplate修改和删除

 Junit4.11版本导致错误

删除的操作

查询操作

查询所有

 查询单个

聚合查询

 知识要点总结

 Spring的AOP简介

什么是AOP

AOP的作用及其优势

 AOP的底层实现

 AOP的动态代理技术

JDK动态代理

 cglib的动态代理

AOP相关概念

  AOP开发明确的事项

1、需要编写的内容

2、AOP技术实现的内容

3、AOP底层使用哪种代理方式

知识要点总结

基于xml的AOP开发

 XML配置AOP详解

切点表达式的写法

通知/(增强)的类型

 前后置增强

 环绕增强

  异常抛出增强

 最终增强

 切点表达式的抽取

 知识要点

 基于注解的AOP开发

编写测试 

 注解配置AOP详解

注解通知的类型

 切点表达式的抽取

编程式事务控制相关对象

PlatformTransactionManager平台事务管理

TransactionDefinition事务定义

事务的传播行为

TransactionStatus事务状态

 基于XML的声明式事务控制

切点方法的事务参数的配置

基于注解的声明式事务控制

 注解配置声明式事务控制解析

MyBatis简介

原始jdbc操作的分析

什么是Mybatis

MyBatis开发步骤

①添加pom相应的坐标

②数据库中创建表

 ③创建pojo下的user类

⑥编写测试类

运行结果

 MyBatis的映射文件概述

 Mybatis增删改查操作

Mybatis的增加/插入操作

插入操作注意的问题

MyBatis的修改数据操作

Mybatis 删除数据操作

 删除操作注意的问题

Mybatis常用核心配置文件概述

envrionment标签

 mapper标签

 typeAliases标签

 MyBatis的相应API

1、SqlSession工厂构建器SqlSessionFactoryBuilder

2、SqlSession会话对象

Mybatis的Dao层实现

1、传统开发方式-编写UserDao接口

测试编写UserDao接口

2、 代理开发方式

代码测试代理开发 

Mybatis映射文件深入

动态sql语句

官方文档中动态sql

动态SQL之if

测试示例if

动态sql之foreach

测试示例foreach

 sql片段的抽取

Mybatis映射文件深入知识小结

Mybatis核心配置文件深入

 typeHandlers标签

开发步骤:

运行时发现 xxx  cannot be cast to xxx 

plugins标签

分页助手PageHelper

开发步骤:

 获取分页相关参数测试

 知识小结之Mybatis核心配置文件标签

  Mybatis的多表操作

1、一对一查询

数据库中

mapper包下orderMapper类下

pojo包下的order类下

pojo下user类下

OrderMapper.xml下

 MybatisTest测试代码下

运行结果

 OrderMap.xml中也可使用

2、一对多查询

 UserMapper接口下

UserMapper.xml下

Mybatis测试下

运行结果

多对多查询

多对多查询模型

 练习册多对多表查询

将orders、role、user三者联系起来

 Mybatis的注解开发

mybatis的常用注解

注解完成增删改查操作

新增操作

修改操作

删除操作

查询操作

查询全部操作

 Mybatis的注解实现复杂映射开发

 一对一注解查询

查询用户时也查询出订单信息

 另一种,分两次查询

 一对多注解查询

多对多查询

SSM框架整合

原始整合方式

①创建数据库

 ②创建maven工程

③叁导入maven对应坐标

④编写实体类

 ⑤编写Mapper接口(dao接口)

 ⑥编写service接口

 ​编辑

 ⑦编写Service接口实现

 ⑧编写Controller

 ⑨编写jsp添加页面

 ⑩编写列表jsp展示页面

①①编写响应的配置文件

①②测试添加账户

①③测试账户列表

SSM整合测试

①创建数据库

②创建maven工程

 ③pom.xml中导入对应的坐标

④编写实体类

⑤编写Mapper接口(dao接口)

 ⑥编写service接口

 ⑦编写Service接口实现

 ⑧编写Controller

 ⑨编写jsp添加页面

 ⑩编写列表jsp展示页面

①①编写响应的配置文件

applicationContext.xml

jdbc.properties

spring-mvc.xml

sqlMapConfig.xml

sqlMapConfig-spring.xml

web.xml

①②测试添加账户和账户列表

①③数据库中测试


Spring介绍

Spring是什么

Spring是分层的JavaSE/EE应用full-stack轻量级开源框架,以loC(InverseOfControl:反转控制)和 AOP(AspectOrientedProgramming:面向切面编程)为内核。

提供了展现层SpringMVC和持久层Spring JDBCTemplate以及业务展事务管理等众多的企业级应用技术还能整合开源世界众多著名的第三方框架和类库,逐渐成为使用最多的JavaEE企业应用开源框架。

Spring发展历程

1997年,IBM提出了EJB的思想
1998年,SUN制定开发标准规范EJB1.0
1999年,EJB1.1发布
2001年,EJB2.0发布
2003年,EJB2.1发布
2006年,EJB3.0发布

Rod Johnson(Spring之父)
ExpertOne-to-OneJ2EEDesignand Development(2002)
阐述了J2EE使用EJB开发设计的优点及解决方案
ExpertOne-to-OneJ2EEDevelopment without EJB(2004)
阐述了J2EE开发不使用EJB的解决方式(Spring雏形)

2017年9月份发布了Spring的最新版本 Spring5.0通用版(GA)

Spring优势

①方便解耦,简化开发

通过Spring提供的loC容器,可以将对象间的依赖关系交由Spring进行控制,避免硬编码所造成的过度耦合。用户也不必再为单例模式类、属性文件解析等这些很底层的需求编写代码,可以更专注于上层的应用。

②AOP编程的支持

通过Sprina的AOP功能,方便进行面向切面编程,许多不容易用传统OOP实现的功能可以通过AOP轻松实现

③声明式事务的支持

可以将我们从单调烦闷的事务管理代码中解脱出来,通过声明式方式灵活的进行事务管理,提高开发效率和质量

④方便程序的测试

可以用非容器依赖的编程方式进行几平所有的测试工作,测试不再是昂贵的操作,而是随手可做的事情

⑤方便集成各种优秀框架

Spring对各种优秀框架(Struts、Hibernate、Hessian、Quartz等)的支持。

⑥降低JavaEE API的使用难度

Spring对JavaEEAPI(如JDBC、JavaMail、远程调用等)进行了薄薄的封装层,使这些API的使用难度大为降低

⑦Java 源码是经典学习范例

Spring的源代码设计精妙、结构清晰、匠心独用,处处体现着大师对Java设计模式灵活运用以及对Java技术的高深造诣。它的源代码无意是Java技术的最佳实践的范例。

Spring的体系结构 

 Spring快速入门

Spring程序开发步骤

①导入Spring开发的基本包坐标

②编写Dao接口和实现类

③创建Spring核心配置文件

④在Spring配置文件中配置UserDaoImpl

⑤使用Spring的API获得Bean

这种 方式完成了解耦,后续只需要给配置文件即可

idea中快速入门

①:在pom.xml中配置spring的坐标

<dependencies>

    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>5.0.5.RELEASE</version>
  </dependency>
    
  </dependencies>

②:在src下创建com.Dao.UserDao

 创建一个接口

public interface UserDao 
    public void play();

创建UserDao的实现类

import com.Dao.UserDao;

public class UserDaoImpl implements UserDao 
    public void play()
        System.out.println("play and play...");
    

③:创建spring核心配置文件(文件的名字任意)

 一般起名为applicationContext.xml

④在Spring配置文件中配置UserDaoImpl(id任意)

 <bean id="userDao" class="com.Dao.impl.UserDaoImpl"></bean>

 ⑤:使用springAPI获得Bean

创建一个Demo包下的UserDemo

import com.Dao.UserDao;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class UserDemo 
    public static void main(String[] args) 
        ApplicationContext app =new ClassPathXmlApplicationContext("applicationContext.xml");
        UserDao userDao = (UserDao) app.getBean("userDao");
        userDao.play();
    

运行之后:

 Spring配置文件

Bean标签基本配置

用于配置对象交由Spring来创建

默认情况下他调用的是类中的无参构造函数,如果没有无参构造函数则不能创建成功。

基本属性:

id:Bean实例在Spring容器中的唯一标识

class:Bean的限定名称

Bean标签范围配置

scope:指对象的作用范围,取值如下:

取值范围说明
singleton默认值,单例的
prototype多例的
requestWEB项目中,Spring创建一个Bean的对象,将对象存入到request域中
sessionWEB项目中,Spring创建一个Bean的对象,将对象存入到session域中
global sessionWEB项目中,应用在Portlet环境,如果没有Porlet环境那么globalSession相当于session

 下pom.xml中配置junit的坐标

   <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifact

以上是关于猿创征文|13万字学会Spring+SpringMVC+Mybatis框架的主要内容,如果未能解决你的问题,请参考以下文章

猿创征文 |万字长文搞定企业中的mysql数据库部署及使用

猿创征文 |万字长文搞定企业中的mysql数据库部署及使用

猿创征文 |万字长文搞定企业中的mysql数据库部署及使用

猿创征文|前端之行,任重道远(来自大三学长的万字自述)

猿创征文|python求解四位数 青少年编程电子学会python编程等级考试三级真题解析2021年03月

猿创征文|python求解四位数 青少年编程电子学会python编程等级考试三级真题解析2021年03月