1 准备
IntelliJ IDEA
Tomcat
JDK
Maven
mysql
spring、springmvc、mybatis 了解
现在假设如上条件你都具备,那么通过我这篇博客 你一定可以整合出 SSM 框架,完成如下效果
整个博客共分为三部分:
- 建立 基于 Maven 的 WEB 项目,启动 Tomcat ,项目启动
- 整合 Mybatis+Spring ,进行单元测试 可以完成从数据库查询出数据功能
- 整合 Mybaits+Spring+SpringMVC,输入Url 完成整个 MVC 的流程
2 步骤
因为说的比较细,所以前面第一部分都了解可以跳过。
2.1 第一部分
1.新建基于 Maven 的Web工程
2.填写 GroupId 和 ArtifactId,参考
groupId一般分为多个段,这里我只说两段,第一段为域,第二段为公司名称。域又分为org、com、cn等等许多,其中org为非营利组织,com为商业组织。举个apache公司的tomcat项目例子:这个项目的groupId是org.apache,它的域是org(因为tomcat是非营利项目),公司名称是apache,artigactId是tomcat。
3.填写 Maven 配置。
图片中1、2、3分别:
1:首先你要先配置好 Maven,如果配置好了,去 CMD DOSS 界面下输入mvn --version
命令,如果有显示,则代表已经配置好了,如果没,下载maven,配置环境变量。
maven下载地址
2:选择我们的 maven 文件夹下的 setting,这里特别要注意,可能因为 “墙”的原因,下载 maven jar 包 很容易卡住,所以建议在 setting.xml
配置国内镜像,比如阿里云。
1 | 复制代码 <!-- 复制如上一段镜像代码配置,添加阿里云镜像 --> |
在相应位置填上如上代码即可。
3.这里为了从头开始,我新建了个仓库地址。这里大家随意,也可以和我一样。
4.填写工程名,module名,前者是 workspace 后者代表一个项目
5.建立架构包
如果这里弹出此对话框,记得点击 auto。
新建文件夹,利用Sources
Resources
两个标签分别转化 Java 和 Resources 文件夹
6.新建tomcat并且配置
7.启动项目
2.2 第二部分
**1.添加 maven 依赖。**因为 pom.xml 里面 jar 包太多,太占内容,所以从源码中复制吧。
2.因为SSM三者整合全部放在一个 .xml 中太杂。所以这里拆成三个spring-mybaits.xml
,spring-service
,spring-web
配置 spring-mybatis.xml
,包含如下内容:
- 数据库配置文件
jdbc.properties
。包含数据库地址 密码 库名等等。
1 | 复制代码 <!-- 1.配置数据库相关参数properties的属性:${url} --> |
- 连接池。这里使用 c3p0。
1 | 复制代码 <!-- 2.数据库连接池 --> |
- 配置SqlSessionFactory对象。专用来获取 sqlSession。
1 | 复制代码 <!-- 3.配置SqlSessionFactory对象 --> |
在 resources
下新建 mybatis-config.xml
,此文件也称作 mybatis 的核心配置文件。里面内容为空 暂时
1 | 复制代码<?xml version="1.0" encoding="UTF-8" ?> |
新建 entity 包,用来放实体类,也就是 pojo。同时在 sqlSession 工厂中扫描整个实体类包。这样在 mapper 中就可以用 类名做别名,不用写整个类的相对位置路径了。
1 | 复制代码 <select id="queryUserListByUsername" parameterType="String" resultType="User"> |
比如其中的 User。不然就要写成
1 | 复制代码ssm.entity.User |
对于 sql 配置文件,我这里放在 resources–>mapper–> 下。
对于 *mapper.xml 的位置处理有很多中方式。有的放在 mapper
包下。然后在 mapper
下建立两个包,分别放 dao
和 mapper
还有分别根据功能建包,一个功能建一个包,其中包含一组 功能文件,分别是 *Dao *Mapper.xml
具体怎样做根据实际项目情况来,如果项目系统功能复杂还是建议后面两种,不然到时候会很痛苦(项目多,文件就多,如果第一种方法,则跨度大,屏幕占满 :) )
<property name="mapperLocations" value="classpath*:mapper/*.xml" />
<property name="configLocation" value="classpath:mybatis-config.xml" />
根据自己实际情况填写
- mapper 动态代理开发,扫描 dao 接口。
1 | 复制代码 <!-- 4.配置扫描Dao接口包,动态实现Dao接口,注入到spring容器中 --> |
<property name="basePackage" value="ssm.dao" />
根据自己实际情况填写
ok!到这里位置,我们的 spring-mybatis 就配置好了。已经可以通过 mybatis 操作数据库了,现在我们来测试下 这一步出问题没。
先往数据库插入一些数据。这里我提供一份我的 sql 文件,如果各位有需要, 直接运行就可以了。
1 | 复制代码DROP TABLE IF EXISTS `items`; |
这是整个项目的结构。
在 entity
下建立 User
实体类,注意字段对齐。
在 dao
下建立 UserDao
1 | 复制代码import org.apache.ibatis.annotations.Param; |
在 mapper
下新建 UserMappper.xml
用来写 sql 语句。因为测试,所以这里写一个简单的 sql 查询。
1 | 复制代码<?xml version="1.0" encoding="UTF-8"?> |
其中有一个地方要注意 <mapper namespace="ssm.mapper.UserDao">
映射位置 换成自己的,可能我们两不一样。
这里有个小技巧特别要注意,一般开发中,我们都是先在把 sql 写完运行正确才放到这里面来,比如下图中,并且为了美观,复制 sql 语句前都会规范下 sql 语句,避免太乱。
ok! 写一个测试类 测试下。
1 | 复制代码 |
好的,到这一步,说明我们的 mybatis 和 spring 整合没问题。
2.3 第三部分
现在来写 spring-service.xml
,比较简单,就是扫描下 service
类包和配置事务。
1 | 复制代码<?xml version="1.0" encoding="UTF-8"?> |
spring + springmvc 整合 建立 spring-web
,里面内容比较少,只是扫描了 controller
用来保证前端控制器 DispatcherServlet
能够找到并进入相关方法中。
同时还配置了试图解析器 ViewResolve
, 这样我们跳转视图时直接写 视图名称即可,不用写相对地址路径了。
1 | 复制代码 <!-- 3.配置jsp 显示ViewResolver --> |
最后就是配置 web.xml。主要作用是 配置 前端控制器 DispatcherServlet
重点是拦截规则处理。这里我们是所有都拦截。其次是 刚才我们 书写的 三个 spring-*.xml
文件在这里配置启动。
1 | 复制代码 <!-- spring mvc servlet--> |
然后就是日志和编码,对于当前的测试没啥作用,但是还是配置好吧
1 | 复制代码<context-param> |
好的 终于搞完了,现在可以安心的写代码了。现在准备一个这样的 jsp 文件。
1 | 复制代码<%@ page language="java" contentType="text/html; charset=UTF-8" |
我们需要查询所有的 item 数据显示在上面。
首先写 ItemsDao
1 | 复制代码import org.springframework.stereotype.Repository; |
对应的 ImtesMapper.xml
1 | 复制代码<?xml version="1.0" encoding="UTF-8"?> |
书写 ItemsService
接口和 其实现类
1 | 复制代码import ssm.entity.Items; |
1 | 复制代码package ssm.service; |
最后写 ItemsController
1 | 复制代码import org.springframework.beans.factory.annotation.Autowired; |
.jsp中的代码已经写好了,直接用就可以了。
我们要测试 要么直接点击这个地址,要么点击查询
好的 大功告成,写的比较细 所以比较长。希望能拿帮到你!
3 留步
整合框架期间报错如下几个错误。如果有同样的情况可以参考一二
Cause: java.lang.NoSuchMethodException
还有几个错误,没有记录下来,比如 spring注解方式 idea报could not autowire
等等。
整合期间参考:
这里写链接内容
如果帮到你,欢迎Star支持。源码地址
这里写链接内容
本文转载自: 掘金