来源于:http://www.jianshu.com/p/5124eef40bf0
[手把手教程][JavaWeb]优雅的SpringMvc+Mybatis整合之路
手把手教你整合最优雅SSM框架:SpringMVC + Spring + MyBatis
- 前面网友说我为啥很久不更新博客了,我告诉他们我准备潜修.其实是我的博客被人批评是在记流水账(~一脸尴尬~).
- 再次安利一波,博客地址:acheng1314.cn
- 本文中的图片用了个人服务器存储,网速较慢,各位老司机耐心等待.
工具
- IDE为idea15
- JDK环境为1.8
- maven版本为maven3
目标
- 完成基本的SpringMVC + Spring + MyBatis框架整合
- 数据库使用mysql
- 加入阿里巴巴的druid数据库连接池
- 使用gson作为json解析工具
- 实现日志输出
- maven依赖的版本管理
优点
此处省略若干字,观众们请脑补.
SSM框架整合配置
前面说了这么多,现在开始正式的干货.
第一步: 使用idea的maven创建一个基本的web工程.
- 打开Idea在欢迎界面选择创建一个新的Project或者是(在菜单界面选择:New→Project),这是会出现一个界面如下图所示:
-
如上图所示,我们需要勾选的地方已经使用红色框标注出来.
- 最左边的是maven,是我们需要使用的项目构建工具.
- 勾选右边上面的Create from archetype,我们才能在下面选择我们需要构建成什么类型的项目.
- 接着我们选中maven-archetype-webapp,这时候我们的项目类型就确定为是web项目.
- 需要注意一点,我上面图中没标注出来的Project SDK,这里是选择我们开发的JDK版本.
-
点击next后,如下图所示:
-
上面图中,我们需要注意地方如下:
- GroupId也就是我们常说的组织ID,也可以理解为我们应用程序的包名
- ArtifactId是我们常说的产品名称(同一个组织下面可以有多个产品),也可以当作是我们的当前项目名称
- Version顾名思义就是版本号
- 最下面的红色框中,Previous==>返回上一步,Next==>下一步,Cancel==>取消,Help==>帮助
-
接下来,我们继续点击Next后,如下图所示:
- 上面途中没啥好说的,圈出来部分就是我们的Maven目录.继续next后,如下图所示:
- 上面选中部分,Project name为项目名称,Project location是项目的存储位置(~右边的省略号意味着可以选择位置~).
- 接下来我们点击Finish,我们新建基本的web项目的步骤就完成了.
- 这时候在Idea主窗口的右下角部分,我们可以看到一个滚动条在执行,说明我们的项目正在build中.右上角有一个提示框如下图所示:
- 这个提示框大概意思是:Maven项目需要被导入.我建议勾选:Enable Auto-Import(~自动导入~)
此处,使用Idea创建一个Maven依赖的基本的WebApp项目已经完成.
框架整合前的准备工作.
-
整理项目文件组织结构.
-
通过观察目录结构,我们可以发现,需要的目录不齐全,我们需要手动补齐.初始结构图如下:
-
我们需要的主体结构图应如下:
需要的主体结构目录解释:
| 目录名称 | 说明 |
| ---- | ----|
| src | 源码、资源等文件的根目录|
| ↓ main | 项目开发主要目录之一,可以放java代码和一些资源文件. |
| ↓↓java | 开发的主要的java代码存放目录 |
| ↓↓↓cn.acheng1314 | 我的应用程序的包名 |
| ↓↓resources | 开发中的主要的资源文件存放目录 |
| ↓↓sql | 开发中主要的sql语句文件存放目录 |
| ↓↓webapp | web页面和其他web配置、资源文件存放目录 |
| ↓ test | 项目开发中的测试模块存放路径,包含java代码和资源文件. |
| ↓↓java | 测试代码存放目录 |
| ↓↓resources | 测试资源文件存放目录 | -
配置目录:
-
创建main目录下的java目录(用于存放java源代码)
我们先右键点击main目录,接着选中New→Directory,在弹出的对话框中输入java.
-
接着我们需要把java目录标记为源文目录.
我们先右键点击java,然后选择Mark Directory As→Sources Root
接着我们在src目录下创建test目录(注意: test目录和main目录同级),以及test下面的java和resources目录,分别标记为源文件目录和资源文件目录
值得注意的是sql目录为普通文件目录
-
-
-
根据目标明白我们需要哪些支援库,具体结果如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>cn.acheng1314</groupId> <!-- 对应前面设置的GroupId -->
<artifactId>SSM_LOG</artifactId> <!-- 前面设置的artifactId-->
<packaging>war</packaging> <!-- 打包方式war -->
<version>1.0-SNAPSHOT</version> <!-- 版本号 -->
<name>SSM_LOG Maven Webapp</name> <!-- 显示名字 -->
<url>http://maven.apache.org</url>
<dependencies> <!-- 远程依赖库 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<!-- 1.日志 -->
<!--<!– 实现slf4j接口并整合 –>-->
<!--<dependency>-->
<!--<groupId>ch.qos.logback</groupId>-->
<!--<artifactId>logback-classic</artifactId>-->
<!--<version>1.1.1</version>-->
<!--</dependency>-->
<!--log4j2支持-->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>${org.apache.logging.log4j.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>${org.apache.logging.log4j.version}</version>
</dependency>
<!-- 2.数据库 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
<scope>runtime</scope>
</dependency>
<!--druid==>阿里巴巴数据库连接池-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>${com.alibaba.druid.version}</version>
</dependency>
<!--<dependency>-->
<!--<groupId>c3p0</groupId>-->
<!--<artifactId>c3p0</artifactId>-->
<!--<version>0.9.1.2</version>-->
<!--</dependency>-->
<!-- DAO: MyBatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${com.mybatis.mybatis.version}</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>${com.mybatis.mybatis_spring.version}</version>
</dependency>
<!-- 3.Servlet web -->
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!--json工具-->
<!--<dependency>-->
<!--<groupId>com.fasterxml.jackson.core</groupId>-->
<!--<artifactId>jackson-databind</artifactId>-->
<!--<version>2.5.4</version>-->
<!--</dependency>-->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>${com.google.gson.version}