SSM框架 详细整合教程(Spring+SpringMVC+MyBatis)
SpringMVC+Spring+Hibernate框架整合原理,作用及使用方法

SpringMVC+Spring+Hibernate框架整合原理,作⽤及使⽤⽅法SSM框架是spring MVC ,spring和mybatis框架的整合,是标准的MVC模式,将整个系统划分为表现层,controller层,service层,DAO层四层使⽤spring MVC负责请求的转发和视图管理spring实现业务对象管理,mybatis作为数据对象的持久化引擎原理:SpringMVC:1.客户端发送请求到DispacherServlet(分发器)2.由DispacherServlet控制器查询HanderMapping,找到处理请求的Controller3.Controller调⽤业务逻辑处理后,返回ModelAndView4.DispacherSerclet查询视图解析器,找到ModelAndView指定的视图5.视图负责将结果显⽰到客户端Spring:我们平时开发接触最多的估计就是IOC容器,它可以装载bean(也就是我们中的类,当然也包括service dao⾥⾯的),有了这个机制,我们就不⽤在每次使⽤这个类的时候为它初始化,很少看到关键字new。
另外spring的aop,事务管理等等都是我们经常⽤到的。
Mybatis:mybatis是对jdbc的封装,它让数据库底层操作变的透明。
mybatis的操作都是围绕⼀个sqlSessionFactory实例展开的。
mybatis通过配置⽂件关联到各实体类的Mapper⽂件,Mapper⽂件中配置了每个类对数据库所需进⾏的sql语句映射。
在每次与数据库交互时,通过sqlSessionFactory拿到⼀个sqlSession,再执⾏sql命令。
使⽤⽅法:要完成⼀个功能:1. 先写实体类entity,定义对象的属性,(可以参照数据库中表的字段来设置,数据库的设计应该在所有编码开始之前)。
2. 写Mapper.xml(Mybatis),其中定义你的功能,对应要对数据库进⾏的那些操作,⽐如 insert、selectAll、selectByKey、delete、update等。
SSM框架整合

SSM框架整合⼀、SSM框架整合前⾔ 如果是初次接触SSM整合的朋友,那么最好是完全按照这个步骤来,包括各个起名。
等项⽬正常跑起来再按⾃⼰的想法搭建⼀次会⽐较好。
⼆、SSM框架介绍 SSM框架,emmmmm,没啥好介绍的,⽤起来很快捷很优美,极⼤地简化开发⼯作AND布拉布拉布拉。
三、整合步骤 1.建⼯程,建⽬录,导⼊jar包。
如图所⽰。
如何项⽬没有⾃动⽣成web.xml⽂件,要⼿动创建,注意在WEB-INF⽂件夹下。
jar包有点多了,显⽰不全。
2.各种⽂件配置 这两步⾮常关键,⼀定要注意名称是否正确,错了就会在控制台报些你可能觉得莫名其妙的错误。
然后这⼀步我就贴这些配置⽂件的代码了。
1.web.xml<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="/2001/XMLSchema-instance" xmlns="/xml/ns/javaee" xmlns:web="/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="<display-name>SSM</display-name><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list><filter><filter-name>encodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param><init-param><param-name>forceEncoding</param-name><param-value>true</param-value></init-param></filter><filter-mapping><filter-name>encodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!-- 加载spring与mybatis和service粘合的配置⽂件 --><context-param><param-name>contextConfigLocation</param-name><param-value>classpath*:config/applicationContext-*.xml</param-value></context-param><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener><listener><listener-class>org.springframework.web.context.ContextCleanupListener</listener-class></listener><!-- 加载springmvc配置⽂件 --><servlet><servlet-name>mvc-dispatcher</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:config/springmvc.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>mvc-dispatcher</servlet-name><url-pattern>*.action</url-pattern></servlet-mapping></web-app>View Code 2.springmvc.xml<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:p="/schema/p"xmlns:context="/schema/context"xmlns:mvc="/schema/mvc"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans.xsd/schema/context/schema/context/spring-context.xsd/schema/mvc/schema/mvc/spring-mvc.xsd"><!-- 组件扫描 --><context:component-scan base-package="com.zhx.controller"/><!-- 注解驱动器 --><mvc:annotation-driven/><!-- 静态资源处理 --><mvc:default-servlet-handler/><!-- 视图解析器 --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass"value="org.springframework.web.servlet.view.JstlView"/><property name="prefix" value="/WEB-INF/pages/"/><property name="suffix" value=".jsp"/></bean></beans>View Code 3.db.properties 这⾥的数据库名字叫做newsdb.driver=com.mysql.jdbc.Driverdb.url=jdbc:mysql://127.0.0.1:3306/news?characterEncoding=utf8ername=rootdb.password=rootView Code 4.mybatis.xml<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-////DTD Config 3.0//EN""/dtd/mybatis-3-config.dtd"><configuration><typeAliases><package name="com.zhx.pojo"/></typeAliases><mappers><mapper resource="com/zhx/mappers/UserMapper.xml"/></mappers></configuration>View Code 5.applicationContext-service.xml<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:context="/schema/context" xmlns:p="/schema/p"xmlns:aop="/schema/aop" xmlns:tx="/schema/tx"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/schema/beans /schema/beans/spring-beans-4.0.xsd /schema/context /schema/context/spring-context-4.0.xsd/schema/aop /schema/aop/spring-aop-4.0.xsd/schema/tx/schema/tx/spring-tx-4.0.xsd/schema/util /schema/util/spring-util-4.0.xsd"><!-- 扫描 --><context:component-scan base-package="com.zhx"><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/></context:component-scan><!-- 事务管理器 --><bean id="transactionManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><!-- 数据源 --><property name="dataSource" ref="dataSource" /></bean><!-- 通知 --><tx:advice id="txAdvice" transaction-manager="transactionManager"><tx:attributes><!-- 传播⾏为 --><tx:method name="save*" propagation="REQUIRED" /><tx:method name="insert*" propagation="REQUIRED" /><tx:method name="delete*" propagation="REQUIRED" /><tx:method name="update*" propagation="REQUIRED" /><tx:method name="find*" propagation="SUPPORTS" read-only="true" /><tx:method name="get*" propagation="SUPPORTS" read-only="true" /></tx:attributes></tx:advice><!-- 切⾯ --><aop:config><aop:advisor advice-ref="txAdvice"pointcut="execution(* com.zhx.service.*.*(..))" /></aop:config></beans>View Code 6.applicationContext-dao.xml<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:p="/schema/p"xmlns:context="/schema/context"xmlns:mvc="/schema/mvc"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans.xsd/schema/context/schema/context/spring-context.xsd/schema/mvc/schema/mvc/spring-mvc.xsd"><!-- 加载配置⽂件 --><context:property-placeholder location="classpath:config/db.properties" /><!-- 数据库连接池 --><bean id="dataSource" class="mons.dbcp.BasicDataSource"destroy-method="close"><property name="driverClassName" value="${db.driver}" /><property name="url" value="${db.url}" /><property name="username" value="${ername}" /><property name="password" value="${db.password}" /><property name="maxActive" value="10" /><property name="maxIdle" value="5" /></bean><!-- 创建SqlSessionFactory --><bean id="sqlSessionFactory"class="org.mybatis.spring.SqlSessionFactoryBean"><property name="configLocation" value="classpath:config/mybatis.xml"/><property name="dataSource" ref="dataSource"/></bean><!-- 批量配置mapper代理类,默认bean的id为类名⾸字母⼩写 --><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><!-- 配置扫描的包 --><property name="basePackage" value="com.zhx.dao"/><!-- 默认不需要配置SqlSessionFactory(只有⼀个SqlSessionFactory时),单独配置也可以 --> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/></bean></beans>View Code 3.进⾏数据库配置,直接上图在⾥⾯添加了⼀条数据。
Java EE企业级应用开发(SSM) (11)

14
14
案例步骤详解
1. 导入案例所需要的坐标
Spring框架坐标
Spring JDBC坐标
mysql数据库驱动坐 标
MyBatis框架坐 标
MyBatis整合Spring坐标
单元测试坐标
15
案例步骤详解
1. 导入案例所需要的坐标
SpringMVC框架坐 标
jackson坐标
16
案例步骤详解
2. 创建User实体类
23
23
案例步骤详解
9. 编写SpringMVC核心配置文件spring-mvc.xml
24
24
案例步骤详解
10. 打开浏览器,进行测试
直接通过浏览器访问该路径 后台响应回来的json格式的数据
【作业4】使用三大框架25整合实现账2户5 的CRUD
接下来,咱们一起来看一看,通过一个案例,来学会Spring + MyBatis框架的 整合。
3
案例实现步骤
【课程案例】1101:MyBatis和Spring整合
实现步骤: 1. 导入案例所需要的坐标 2. 创建User实体类 3. 创建UserMapper接口 4. 创建UserService接口和UserServiceImpl实现类 5. 编写映射文件UserMapper.xml 6. 编写Spring核心配置文件applicationContext.xml 7. 编写测试类UserController,进行测试
详解intellijidea搭建SSM框架(spring+maven+mybatis+my。。。

详解intellijidea搭建SSM框架(spring+maven+mybatis+my。
SSM(Spring+SpringMVC+MyBatis)框架集由Spring、SpringMVC、MyBatis三个开源框架整合⽽成,常作为数据源较简单的web项⽬的框架。
其中spring是⼀个轻量级的控制反转(IoC)和⾯向切⾯(AOP)的容器框架。
SpringMVC分离了控制器、模型对象、分派器以及处理程序对象的⾓⾊,这种分离让它们更容易进⾏定制。
MyBatis是⼀个⽀持普通SQL查询,存储过程和⾼级映射的优秀持久层框架。
本⽂旨在快速且详细的介绍intellij idea 搭建SSM框架的过过程,特别适合对SSM框架不是很熟且感兴趣的朋友。
v准备⼯作开发环境准备1. apache-tomcat-9.02. apache-maven3. MySQL4. workbench5. Java jdk6. IntelliJ IDEA对于如上这类应⽤的配置,⽹上已经有很多现成的⽅案了,基本操作也⽐较简单,这⾥就不再单独介绍了。
配置好这些就可以开始搭建框架了。
v创建项⽬点击Next,填写GroupId、ArtifactId(groupId⼀般是域名的反写,也作为项⽬中类的包名,artifactId是⼯程名,也就是根⽂件夹名)然后next,选择本地maven的位置继续next,选择项⽬保存的位置创建完后的项⽬结构如图:项⽬结构简介:.idea⽂件夹和helloworld.iml是idea的⼀些配置⽂件,我们不⽤管,就算删了也没事,当然删了,重新打开项⽬,就得重新配置了src⽂件夹就是我们放项⽬代码的地⽅pom.xml是maven的配置⽂件,我们需要什么jar包,都可以在⾥⾯添加依赖,然后maven就会⾃⼰帮我们下到本地仓库⾥⾯接下来就需要创建构思项⽬所需的⽂件结构,main下新建⼀个java,⽤来放java⽂件,src下新建⼀个test,⽤来放测试⽂件,main下新建⼀个resources⽂件夹,⿏标右键,找到makedirectory as,选择Resources root 如下图:接下来继续完善项⽬结构:1. 在main的java⽂件夹上,⿏标右键,找到 make directory as,选择Sources root(如上图,下同)2. 在test的java⽂件夹上(如没有java⽂件,则⼿动创建,下同),⿏标右键,找到make directory as,选择Test Sources root3. 在test的resources⽂件夹上,⿏标右键,找到make directory as,选择Test Resources root4. src->main->java下新建package com,再新建package springmvc,这两个对应我们刚开始的groupid5. springmvc包下新建四个包,controller包⽤来放前台url映射⽂件,dao⽤来放与数据库的接⼝⽂件,entity⽤来放实体类⽂件,service⽤来放⾃⼰定义的接⼝6. applicationContext.xml是spring配置⽂件7. sqlmap⽂件夹⾥⾯放实体与数据库的映射⽂件8. generatorConfig.xml和generator.properties是mybatis的配置⽂件9. jdbc.properties是数据库相关信息10. log4j.properties是⽇志配置⽂件11. webapp下新建css、images等⽂件,⽤来放前端资源12. web-inf下新建views⽂件件,jsp⽂件就放这⾥⾯了按照上⾯的流程修改后⽬录结构如下图:v搭建springmvc配置Maven pom.xml,引⼊jar包pom.xml主要描述了项⽬的maven坐标,依赖关系,开发者需要遵循的规则,缺陷管理系统,组织和licenses,以及其他所有的项⽬相关因素,是项⽬级别的配置⽂件。
ssm工作流程

ssm工作流程SSM工作流程。
SSM是指Spring+SpringMVC+MyBatis的整合,是一种比较常用的JavaEE开发框架。
在实际开发中,SSM框架可以帮助我们更高效地进行软件开发,提高开发效率和质量。
下面将详细介绍SSM框架的工作流程。
1. Spring框架。
Spring框架是一个轻量级的IoC和AOP容器框架,它提供了一个全面的编程和配置模型,用于构建企业级应用。
Spring框架的工作流程主要包括配置文件的编写、Bean的定义和依赖注入、AOP的实现等。
在SSM框架中,Spring框架负责管理整个应用的对象,提供了IoC容器和AOP特性,使得应用的各个模块之间解耦,提高了代码的可维护性和可测试性。
2. SpringMVC框架。
SpringMVC框架是基于Spring框架的一个轻量级的MVC框架,它提供了一个强大的MVC架构,用于构建Web应用程序。
SpringMVC框架的工作流程主要包括前端控制器的配置、HandlerMapping的注册、HandlerAdapter的调用、视图解析器的解析等。
在SSM框架中,SpringMVC框架负责处理用户请求和响应,将用户请求映射到对应的Controller方法,并将处理结果返回给用户。
3. MyBatis框架。
MyBatis框架是一个优秀的持久层框架,它将SQL语句和Java代码进行分离,提供了强大的SQL映射功能和灵活的参数处理能力。
MyBatis框架的工作流程主要包括Mapper接口的定义、SQL语句的映射、参数的传递和结果的映射等。
在SSM框架中,MyBatis框架负责与数据库进行交互,执行SQL语句,并将结果映射为Java对象。
4. SSM框架整合。
在SSM框架中,Spring框架负责管理对象的生命周期和依赖注入,SpringMVC框架负责处理用户请求和响应,MyBatis框架负责与数据库进行交互。
这三个框架通过配置文件和注解的方式进行整合,使得它们能够协同工作,共同构建一个完整的Web应用程序。
spring+spring mvc+mybits框架整合

主要介绍三大框架的整合,至于环境的搭建以及项目的创建可以参考其他资料。
这次整合主要用到两个配置文件:spring-mybatis.xm,包含spring和mybatis的配置文件,还有个是spring-mvc.xml的配置文件,此外有两个资源文件:jdbc.propertis和log4j.properties。
完整的目录结构如下图:本框架中用到的所有jar包都在源码中。
本测试项目中用到的是sqlserver数据库,MyEclipse 8.6和apache-tomcat-7.0.41下来逐一介绍配置文件:1、spring-mybatis.xml这个文件就是用来完成spring和mybatis的整合的。
这里面也没多少行配置,主要的就是自动扫描,自动注入,配置数据库,注释也很详细<?xml version="1.0"encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:p="/schema/p"xmlns:context="/schema/context"xmlns:mvc="/schema/mvc"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans-3.1.xsd/schema/context/schema/context/spring-context-3.1.xsd/schema/mvc/schema/mvc/spring-mvc-4.0.xsd"><!-- 自动扫描 --><context:component-scan base-package="com.myProcess.study"/><!-- 引入配置文件 --><bean id="propertyConfigurer"class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location"value="classpath:jdbc.properties"/> </bean><bean id="dataSource"class="mons.dbcp.BasicDataSource"destroy-method="close"><property name="driverClassName"value="${driver}"/><property name="url"value="${url}"/><property name="username"value="${username}"/><property name="password"value="${password}"/><!-- 初始化连接大小 --><property name="initialSize"value="${initialSize}"></property><!-- 连接池最大数量 --><property name="maxActive"value="${maxActive}"></property><!-- 连接池最大空闲 --><property name="maxIdle"value="${maxIdle}"></property><!-- 连接池最小空闲 --><property name="minIdle"value="${minIdle}"></property><!-- 获取连接最大等待时间 --><property name="maxWait"value="${maxWait}"></property></bean><!-- spring和MyBatis完美整合,不需要mybatis的配置映射文件 --><bean id="sqlSessionFactory"class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource"ref="dataSource"/><!-- 自动扫描mapping.xml文件 --><property name="mapperLocations"value="classpath:com/myProcess/study/mapping/*.xml"></property></bean><!-- DAO接口所在包名,Spring会自动查找其下的类 --><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage"value=".hnust.dao"/><property name="sqlSessionFactoryBeanName"value="sqlSessionFactory"></property></bean><!-- (事务管理)transaction manager, use JtaTransactionManager for global tx --> <bean id="transactionManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource"ref="dataSource"/></bean></beans>2、log4j.propertieslog4j.rootLogger=INFO,Console,File#定义日志输出目的地为控制台log4j.appender.Console=org.apache.log4j.ConsoleAppenderlog4j.appender.Console.Target=System.out#可以灵活地指定日志输出格式,下面一行是指定具体的格式yout = org.apache.log4j.PatternLayoutyout.ConversionPattern=[%c]-%m%n#文件大小到达指定尺寸的时候产生一个新的文件log4j.appender.File = org.apache.log4j.RollingFileAppender#指定输出目录log4j.appender.File.File = logs/ssm.log#定义文件最大大小log4j.appender.File.MaxFileSize = 10MB# 输出所以日志,如果换成DEBUG表示输出DEBUG以上级别日志log4j.appender.File.Threshold = ALLyout = org.apache.log4j.PatternLayoutyout.ConversionPattern =[%p][%d{yyyy-MM-ddHH\:mm\:ss}][%c]%m%n3、spring-mvc.xml主要是自动扫描控制器,视图模式,注解的启动这三个<?xml version="1.0"encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:p="/schema/p"xmlns:context="/schema/context"xmlns:mvc="/schema/mvc"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans-3.1.xsd/schema/context/schema/context/spring-context-3.1.xsd/schema/mvc/schema/mvc/spring-mvc-4.0.xsd"><!-- 自动扫描该包,使SpringMVC认为包下用了@controller注解的类是控制器 --><context:component-scan base-package="com.myProcess.study.web"/><!--避免IE执行AJAX时,返回JSON出现下载文件 --><bean id="mappingJacksonHttpMessageConverter"class="org.springframework.http.converter.json.MappingJacksonHttpMessageConvert er"><property name="supportedMediaTypes"><list><value>text/html;charset=UTF-8</value></list></property></bean><!-- 启动SpringMVC的注解功能,完成请求和注解POJO的映射 --><beanclass="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAd apter"><property name="messageConverters"><list><ref bean="mappingJacksonHttpMessageConverter"/><!-- JSON转换器 --></list></property></bean><!-- 定义跳转的文件的前后缀,视图模式配置--><beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- 这里的配置我的理解是自动给后面action的方法return的字符串加上前缀和后缀,变成一个可用的url地址 --><property name="prefix"value="/WEB-INF/jsp/"/><property name="suffix"value=".jsp"/></bean><!-- 配置文件上传,如果没有使用文件上传可以不用配置,当然如果不配,那么配置文件中也不必引入上传组件包 --><bean id="multipartResolver"class="monsMultipartResolver"> <!-- 默认编码 --><property name="defaultEncoding"value="utf-8"/><!-- 文件大小最大值 --><property name="maxUploadSize"value="10485760000"/><!-- 内存中的最大值 --><property name="maxInMemorySize"value="40960"/></bean></beans>4、web.xml这里面对spring-mybatis.xml的引入以及配置的spring-mvc的Servlet就是为了完成SSM整合,之前2框架整合不需要在此处进行任何配置。
SSM框架搭建最新教程(超详细)

SSM框架搭建最新教程(超详细)个⼈认为使⽤框架并不是很难,关键要理解其思想,这对于我们提⾼编程⽔平很有帮助。
不过,如果⽤都不会,谈思想就变成纸上谈兵了!!!先技术,再思想。
实践出真知。
1、基本概念1.1、SpringSpring是⼀个开源框架,Spring是于2003 年兴起的⼀个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍⽣⽽来。
它是为了解决企业应⽤开发的复杂性⽽创建的。
Spring使⽤基本的JavaBean来完成以前只可能由EJB完成的事情。
然⽽,Spring的⽤途不仅限于服务器端的开发。
从简单性、可测试性和松耦合的⾓度⽽⾔,任何Java应⽤都可以从Spring中受益。
简单来说,Spring是⼀个轻量级的控制反转(IoC)和⾯向切⾯(AOP)的容器框架。
1.2、SpringMVCSpring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow⾥⾯。
Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的⾓⾊,这种分离让它们更容易进⾏定制。
1.3、MyBatisMyBatis 本是apache的⼀个开源项⽬iBatis, 2010年这个项⽬由apache software foundation 迁移到了google code,并且改名为MyBatis 。
MyBatis是⼀个基于Java的持久层框架。
iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAO)MyBatis 消除了⼏乎所有的JDBC代码和参数的⼿⼯设置以及结果集的检索。
MyBatis 使⽤简单的 XML或注解⽤于配置和原始映射,将接⼝和 Java 的POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
SSM整合(Maven工程)

SSM整合(Maven⼯程)SSM整合(Maven⼯程)⼀、概述SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis两个开源框架整合⽽成(SpringMVC是Spring中的部分内容)。
常作为数据源较简单的web项⽬的框架。
Spring Spring就像是整个项⽬中装配bean的⼤⼯⼚,在配置⽂件中可以指定使⽤特定的参数去调⽤实体类的构造⽅法来实例化对象。
也可以称之为项⽬中的粘合剂。
Spring的核⼼思想是IoC(控制反转),即不再需要程序员去显式地new⼀个对象,⽽是让Spring框架帮你来完成这⼀切。
SpringMVC SpringMVC在项⽬中拦截⽤户请求,它的核⼼Servlet即DispatcherServlet承担中介或是前台这样的职责,将⽤户请求通过HandlerMapping去匹配Controller,Controller就是具体对应请求所执⾏的操作。
SpringMVC相当于SSH框架中struts。
mybatis mybatis是对jdbc的封装,它让数据库底层操作变的透明。
mybatis的操作都是围绕⼀个sqlSessionFactory实例展开的。
mybatis通过配置⽂件关联到各实体类的Mapper⽂件,Mapper⽂件中配置了每个类对数据库所需进⾏的sql语句映射。
在每次与数据库交互时,通过sqlSessionFactory拿到⼀个sqlSession,再执⾏sql命令。
页⾯发送请求给控制器,控制器调⽤业务层处理逻辑,逻辑层向持久层发送请求,持久层与数据库交互,后将结果返回给业务层,业务层将处理逻辑发送给控制器,控制器再调⽤视图展现数据。
⼆、代码分析项⽬结构⽂件配置信息1. pom.xml⼀定要设置打包⽅式为war⽅式,不然不能⽣成webaap<packaging>war</packaging><dependencies><!-- SpringMVC --><!-- 因为Spring MVC属于SpringFrameWork的后续产品,所以导⼊该依赖就不⽤单独导⼊Spring依赖了--><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.3.1</version></dependency><!-- 导⼊该包开启事务管理--><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>5.3.9</version></dependency><!-- ⽇志 --><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.3</version></dependency><!-- ServletAPI --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><scope>provided</scope></dependency><!-- Spring5和Thymeleaf整合包 --><dependency><groupId>org.thymeleaf</groupId><artifactId>thymeleaf-spring5</artifactId><version>3.0.12.RELEASE</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.7</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>2.0.6</version></dependency><!-- mysql数据库驱动--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.26</version></dependency><!-- druid数据库连接池--><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.6</version></dependency><!-- log4j⽇记依赖--><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>1.2.17</version></dependency></dependencies><!-- 解决资源读取问题--><build><resources><resource><directory>src/main/resources/</directory><includes><include>**/*.properties</include><include>**/*.xml</include></includes><filtering>true</filtering></resource><resource><directory>src/main/java</directory><includes><include>**/*.properties</include><include>**/*.xml</include></includes><filtering>true</filtering></resource></resources></build>2. web.xml<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="/xml/ns/javaee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/javaee /xml/ns/javaee/web-app_4_0.xsd"version="4.0"><!-- 设置编码,要在最前⾯--><filter><filter-name>CharacterEncodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param><init-param><param-name>forceResponseEncoding</param-name><param-value>true</param-value></init-param></filter><filter-mapping><filter-name>CharacterEncodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><filter><filter-name>HiddenHttpMethodFilter</filter-name><filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class></filter><filter-mapping><filter-name>HiddenHttpMethodFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!-- 这⾥已经将SpringMVC配置--><servlet><servlet-name>DispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:SpringMVC-config.xml</param-value></init-param><!-- 服务器启动时加载 --><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>DispatcherServlet</servlet-name><url-pattern>/</url-pattern></servlet-mapping><!--Spring配置: needed for ContextLoaderListener --><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:ApplicationContext.xml</param-value></context-param><!-- ContextLoaderListener监听器 --><!-- ContextLoaderListener监听器的作⽤就是启动Web容器时,⾃动装配ApplicationContext的配置信息--><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener></web-app>3. SpringMVC-config.xml<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:context="/schema/context"xmlns:mvc="/schema/mvc"xsi:schemaLocation="/schema/beans /schema/beans/spring-beans.xsd /schema/context https:///schema/context/spring <!-- 组件扫描,Spring配置和SpringMVC配置中都要配置这个 --><context:component-scan base-package="com.zhen.controller"><context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/></context:component-scan><!-- 配置Thymeleaf视图解析器 --><bean id="viewResolver" class="org.thymeleaf.spring5.view.ThymeleafViewResolver"><property name="order" value="1"/><property name="characterEncoding" value="UTF-8"/><property name="templateEngine"><bean class="org.thymeleaf.spring5.SpringTemplateEngine"><property name="templateResolver"><bean class="org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver"><!-- 视图前缀 --><property name="prefix" value="/WEB-INF/templates/"/><!-- 视图后缀 --><property name="suffix" value=".html"/><property name="templateMode" value="HTML5"/><property name="characterEncoding" value="UTF-8"/></bean></property></bean></property></bean><!-- 视图控制器--><mvc:view-controller path="/" view-name="index"/><!-- 启动默认的Servlet--><mvc:default-servlet-handler/><!-- 启动注解驱动--><mvc:annotation-driven/></beans>4. ApplicationContext.xml<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:context="/schema/context"xmlns:mybatis-spring="/schema/mybatis-spring"xsi:schemaLocation="/schema/beans /schema/beans/spring-beans.xsd /schema/context https:///schema/context/spring <!-- 开启组件扫描,并且设置不扫描注解为Controller--><context:component-scan base-package="com.zhen"><context:include-filter type="annotation" expression="org.springframework.stereotype.Service"/><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/></context:component-scan><!-- 引⼊外部配置⽂件,类型为properties--><!-- 注意这⾥的classpath:别忘了--><context:property-placeholder location="classpath:jdbc.properties"/><!-- 配置数据库连接池信息,关于连接池的所有属性配置都可以配置--><bean id="DataSource" class="com.alibaba.druid.pool.DruidDataSource"><property name="driverClassName" value="${mysql.driver}"/><property name="url" value="${mysql.url}"/><property name="username" value="${ername}"/><property name="password" value="${mysql.password}"/></bean><!-- 开启事务管理--><bean id="DataSourceTransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="DataSource"/></bean><!-- 创建⼀个sqlSessionFactory对象--><!-- 注意这⾥的classpath:别忘了--><bean id="SqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean"><!-- 数据库连接池--><property name="dataSource" ref="DataSource"/><!-- mybatis配置--><property name="configLocation" value="classpath:mybatis-config.xml"/><!-- 因为mybatis-config.xml中没有注册dao映射所以⽤此配置属性来注册mapping--><property name="mapperLocations" value="classpath:com/zhen/dao/*.xml"/></bean><!-- 单独创建⼀个可以批量操作的SqlSession对象--><!-- 这个也可以没有,只是单独设置⼀个sqlsession可以进⾏批量操作,通过⾃动注⼊来⽤这个对象 --><!-- SqlSessionTemplate继承了SqlSession--><bean id="SqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate"><constructor-arg name="sqlSessionFactory" ref="SqlSessionFactoryBean" /><!--可以配置⼀个可以进⾏批量执⾏的sqlSession BATCH批量执⾏ --><constructor-arg name="executorType" value="BATCH"/></bean><!-- 扫描所有的mapper接⼝的实现,让这些mapper能够⾃动注⼊;base-package:指定mapper接⼝的包名--><mybatis-spring:scan base-package="com.zhen"/></beans>5. mybatis-config.xml<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurationPUBLIC "-////DTD Config 3.0//EN""/dtd/mybatis-3-config.dtd"><configuration><!-- 这⾥可以配置⼀些想要的mybatis的配置,但是Spring配置中都能配置,要想结构鲜明就很清楚来配置--><typeAliases><typeAlias type="er" alias="User"/></typeAliases></configuration>6. jdbc.propertiesmysql.driver=com.mysql.jdbc.Drivermysql.url=jdbc:mysql://localhost:3306/bookername=rootmysql.password=123456类结构1. pojopublic class User {private Integer id;private String username;private String password;private String email;public User() {}public User(Integer id, String username, String password, String email) {this.id = id;ername = username;this.password = password;this.email = email;}public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {ername = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}@Overridepublic String toString() {return "User{" +"id=" + id +", username='" + username + '\'' +", password='" + password + '\'' +", email='" + email + '\'' +'}';}}2. Dao层接⼝//要声明此注解,不然不能⾃动注⼊@Repositorypublic interface UserMapping {List<User> queryUser();}mapping<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapperPUBLIC "-////DTD Mapper 3.0//EN""/dtd/mybatis-3-mapper.dtd"><mapper namespace="erMapping"><!-- 在mybatis配置了别名--><select id="queryUser" resultType="User">select *from t_user</select></mapper>3. Service层@Servicepublic class UserService {@Autowiredprivate UserMapping userMapping;//⾃动注⼊来⽤⼀个可以批量操作的SqlSession,前提是在Spring配置⽂件中配置了这个对象, // 然后⽤原始的⽅法将调⽤接⼝中的crud⽅法//例如:public List<User> getBatchUser(){// UserMapping mapper = batchSqlSession.getMapper(UserMapping.class);// return mapper.queryUser();// }@Autowiredprivate SqlSession batchSqlSession;public List<User> getAllUser(){return userMapping.queryUser();}}4. Controller层@Controllerpublic class SpringController {//⾃动注⼊@Autowiredpublic UserService userService;//请求映射@RequestMapping("/getUser")public String queryUser(Model model){List<User> users = userService.getAllUser();model.addAttribute("users",users);return "Users";}}三、总结。