![39017f6f71829a91b826c25cc45e8c89.png](https://i-blog.csdnimg.cn/blog_migrate/d40f376a8cb11953069ad36f20763290.png)
温馨提示
此篇文章篇幅较长,相信我看了这篇文章你一定会撸起码来行云流水,事半功倍,无懈可击,请耐心阅读。
超级超级超级详细!
干货!干货!干货!
![f52b567ad7159eb27b8a32114814a495.png](https://i-blog.csdnimg.cn/blog_migrate/f0649328348db8ec76cb2d7b8871f55d.png)
简单介绍下SSM
SSM
(Spring
+SpringMVC
+Mybatis
),目前较为主流
的企业级架构方案。标准的MVC设计模式
,将整个系统划分为显示层、Controller层、Service层、Dao层四层,使用SpringMVC负责请求的转发和视图管理,Spring实现业务对象管理,MyBatis作为数据对象持久化引擎。
搭建过程
一、框架介绍
Spring
Spring
是一个开源框架
,它由Rod Johnson
创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。简单说,Spring是一个轻量级控制反转(IoC)和面向切面(AOP)的容器框架。
SpringMVC
SpringMVC
是一种基于Java的实现MVC设计模式的请求驱动类型的轻量级Web框架
,使用了MVC架构模式的思想
,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发。
MyBatis
MyBatis
是一款优秀
的持久层框架
,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集
。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。
二、下载Maven
- 下载地址 :
https:// maven.apache.org/downlo ad.cgi
![a21bd036112e8e2bd1c9699a130dab7f.png](https://i-blog.csdnimg.cn/blog_migrate/f6ed12eba8689e6665541e581f68c1dd.jpeg)
- 解压下载的安装包,我将安装包解压在我的目录下,解压好了以后,并创建好本地仓库
mavenrepository
目录。
![def089b72e5d402eee0e04dca67d0825.png](https://i-blog.csdnimg.cn/blog_migrate/7a24e7270f1314be36255768968b63c1.jpeg)
- 修改maven的配置文件,进入刚解压的的
maven文件夹
目录,进入conf
,使用编辑器打开settings.xml
文件,我这里使用的BBEdit
,window的可以使用EditPlus
![8fe048df99aa47e520c872554c041ffa.png](https://i-blog.csdnimg.cn/blog_migrate/4ea9adf83ae8924fb8b71e0d416fa84b.jpeg)
- 打开以后,配置本地仓库路径,不使用默认的maven仓库,配置
maven仓库下载国内的镜像源
,不然下载特别慢,有时候还会出现下载jar包失败,如下图配置,修改自己电脑对应的路径。 - maven 仓库路径
<localRepository>/Users/wht/maven/mavenrepository</localRepository>
- 阿里的镜像仓库
<!-- 配置阿里云的镜像仓库 可以提高jar包的下载速度 -->
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
![ed46b5cf3a750bcc07e99a8e848cc1b2.png](https://i-blog.csdnimg.cn/blog_migrate/5b1ef15ce1f34adfa93d352592430470.jpeg)
![0969f1410ce2b7ed98238d4ff987188a.png](https://i-blog.csdnimg.cn/blog_migrate/a0890cfd162b5dc6f650bae2866097cf.jpeg)
- maven的下载和配置就完成了,接下来我们就去创建项目了。
三、创建Maven项目
- 首先打开
IDEA
,点击Create New Project
![e64006fa724570e161d5592e7e28e351.png](https://i-blog.csdnimg.cn/blog_migrate/17d82a166251da8332f2ad43b31e7891.jpeg)
- 找到
Maven
点击下 ,然后直接点击Next
![99a9c916ae64c97a91fe48e4b879d660.png](https://i-blog.csdnimg.cn/blog_migrate/5ae75978688b0c4f6fd1be6d90c2443b.jpeg)
- 填写相应的信息,
Groupid
是项目组织唯一的标识符,实际对应JAVA的包的结构。
Artifactid
就是项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称。
- 填好后,直接点击
Next
![7fdd07d3efe1b8df62ddf2fcd9b688eb.png](https://i-blog.csdnimg.cn/blog_migrate/0c1f4d3bf8c8f39416c6c5ff0b47995a.jpeg)
- 继续点击
Finish
![ee224831f1fcf7ab27a87491ac93cea8.png](https://i-blog.csdnimg.cn/blog_migrate/e7cdc197197c06dde8034bc96593c555.jpeg)
- 接下来建好的项目目录就展示在我们眼前,你会发现这里面没有
webapp
。
![8a978e27825bd03e97670acf637a9400.png](https://i-blog.csdnimg.cn/blog_migrate/f58a453c028a37b5765d8c949fd043d7.jpeg)
- 接下来因为我们创建的是
maven
项目,所以我们要在IDEA中配置一下maven的仓库
,本人用的 MacBook,可能界面会跟 Windows 有点差别,但是界面都是有功能的,点击左上角的IntelliJ IDEA
,找到Preferences...
,点击进入
![49b993de7d78edc44bd5703c51533c2b.png](https://i-blog.csdnimg.cn/blog_migrate/4db68088fd41801aaa7665cbb0c52fe4.jpeg)
- 进入设置界面左上角搜索
maven
,进入maven 设置界面
![b9ca79325149125a3b434ad284b3a1e7.png](https://i-blog.csdnimg.cn/blog_migrate/21e33ca36335a87689ea35fb3c42b0a1.jpeg)
- 注意⚠️
前提是你必须下载了maven
- 接下来点击黄色框区域后面的
省略号 ...
找到自己电脑上下载的maven文件夹,选中,点击OK。
![5655bce38ba4c8797ebe842fde8f8ac4.png](https://i-blog.csdnimg.cn/blog_migrate/ab90397c2e5d8a2400292858206e1ef0.jpeg)
- 这时候可以看到下图,已经设置成功,并且我的maven仓库路径也会随之改变。因为我配置了自己的
settings.xml
文件。
![cd6161e8765933d1e270ea1841e0a30d.png](https://i-blog.csdnimg.cn/blog_migrate/1e21f76253f59be1a092e8b5fb5b5145.jpeg)
- 接下来我们修改
IDEA
中的maven默认的settings.xml
配置文件为自己本地的配置文件,根据图中操作步骤修改。
![6908006cc43fa17ff452e7796fd8711a.png](https://i-blog.csdnimg.cn/blog_migrate/e49f17d0056d2a7ed26167f6bdeaceb8.jpeg)
![32055c3f76d02333ca0ac31efc463c53.png](https://i-blog.csdnimg.cn/blog_migrate/37d51562c22dcca9ae4f124c95337626.jpeg)
![d0ec46a636da6744400378255d9ac585.png](https://i-blog.csdnimg.cn/blog_migrate/317d3ed85e8ac94ceafe40026fd3db8c.jpeg)
![ae36d069e89b212e764908b58d2c93da.png](https://i-blog.csdnimg.cn/blog_migrate/924369b0ad58c7395c521d3756b9bb65.jpeg)
- 接下来
idea
的项目需要手动配置,本人用的 MacBook,可能界面会跟 Windows 有点差别,但是界面都是有功能的,点击左上角File
,找到Project Structure...
点击进入项目配置
![ecbd3ec9b087d84207cc39c174c03324.png](https://i-blog.csdnimg.cn/blog_migrate/afb2295352c2acc350dc4518e5a3496d.jpeg)
- 点击
Project
,选择自己电脑的JDK
,我这里是使用的是jdk1.8
,下面的也要选择8 - Lambdas, ...
![ea229525e05b530d9410b0181707ecda.png](https://i-blog.csdnimg.cn/blog_migrate/a65536bd0c73f59e89f676a4ac2fbebd.jpeg)
- 接下来配置
Modules
, 点击Modules
,点击自己的项目, 然后点击“ + ”
号,下拉找到Web
点击。
![823fdafb05daa09ceddc42c35e9f925f.png](https://i-blog.csdnimg.cn/blog_migrate/42dfd29441c8adfc9ebd6aeb5e92c68c.jpeg)
![566e06dd02d0def20ea840335b3c0921.png](https://i-blog.csdnimg.cn/blog_migrate/1a2a05be077f3eec69cbc6ed1a7c0bcd.jpeg)
- 接下来配置
Web
,点击Deployment Descriptors
下的路径选中,点击修改图标
![97809025dc2d6e80d2597afce90f3360.png](https://i-blog.csdnimg.cn/blog_migrate/b7ac7ca2be537d2b19d8b100acf10b3d.jpeg)
- 接下来将路径改为下图路径,点击OK
![a6f7df8300413aea7196ff5d27e2aa3c.png](https://i-blog.csdnimg.cn/blog_migrate/1a25ed2f2085404730e8224f5d5358c9.jpeg)
- 修改之后你会看到上面的路径已经修改成功了。 接下来点击下面的
Web Resoure Directories
点击修改图标
![076aa6b2afe146b05bccfa88633b709b.png](https://i-blog.csdnimg.cn/blog_migrate/ff21d1ca203362365362dac3cc09e87c.jpeg)
- 同样将原路径改为下图路径,点击OK
![281937e8d3b4fe8bf4ebe3aa7eac9706.png](https://i-blog.csdnimg.cn/blog_migrate/8a0f98bdee012a8448de4c1c4bd9df62.jpeg)
- 修改完成之后,会看到以下画面。看到下面的黄色感叹图标,点击右下角的
Create Artifacet
点击。会自动给Artifacet
添加Web exploded
![697741eba76a773e31ed5ec1fe5059ea.png](https://i-blog.csdnimg.cn/blog_migrate/01cf75b344e6ecba598021d5e96eca9d.jpeg)
![95520b36529c7233607888a410eaf860.png](https://i-blog.csdnimg.cn/blog_migrate/f13bd43afe6df4a7ff9821bc18f604dd.jpeg)
- 接下来点击
Apply
点击OK
。 - 返回编辑界面,如下图,会发现 与之前的刚创建的项目截图对比,这里多出了
webapp
文件夹,并且中间有个蓝色小圈
和web.xml
,表示创建成功了。 刚创建的项目截图
![8a978e27825bd03e97670acf637a9400.png](https://i-blog.csdnimg.cn/blog_migrate/f58a453c028a37b5765d8c949fd043d7.jpeg)
配置后的项目截图
![4a1e8657b7f3e21ff407ffd291c55b5e.png](https://i-blog.csdnimg.cn/blog_migrate/7a919537db52c22651dc5392cc819271.jpeg)
四、Maven工程需要引入的Jar 包
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.top</groupId>
<artifactId>ssmDemo</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.build.timestamp.format>yyyyMMddHHmmss</maven.build.timestamp.format>
<spring.version>3.2.9.RELEASE</spring.version>
<mybatis.version>3.1.1</mybatis.version>
<mybatisspring.version>1.1.1</mybatisspring.version>
</properties>
<dependencies>
<!--引入pageHelper分页插件 PageInfo -->
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper</artifactId>
<version>5.0.0</version>
</dependency>
<!-- springwebmvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- 返回json字符串的支持 -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.8.8</version>
</dependency>
<!-- Spring 整合Jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<!--Spring-test spring测试包 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>
<!-- Spring面向切面编程 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>${spring.version}</version>
</dependency>
<!--MyBatis -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis.version}</version>
</dependency>
<!-- MyBatis整合Spring的适配包 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>${mybatisspring.version}</version>
</dependency>
<!-- 阿里巴巴 数据源 druid -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.10</version>
</dependency>
<!-- mysql驱动包 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.41</version>
</dependency>
<!-- servlet api包 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<scope>provided</scope>
</dependency>
<!-- junit 测试包 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<!-- 日志包 -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency>
<!-- excel 批量的导入导出 -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.9</version>
</dependency>
<!-- 阿里巴巴的fastjson json和java 快速转换工具包 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>
<dependency>
<groupId>org.jetbrains</groupId>
<artifactId>annotations</artifactId>
<version>RELEASE</version>
<scope>compile</scope>
</dependency>
</dependencies>
<build>
<finalName>ssmDemo</finalName>
</build>
</project>
五、整合SSM框架、需要的相关配置文件配置项目
web.xml
修改webapp
下的WEB-INF
下的web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0">
<!-- spring -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:/spring/beans_core.xml</param-value>
</context-param>
<!-- 监听我们加载的配置文件是否有异常问题 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 防止Spring内存溢出监听器 -->
<listener>
<listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
</listener>
<!-- 前端控制器 -->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:/springmvc/springmvc.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!-- spring 提供了一个字符编码过滤器 Filter -->
<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>
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
</web-app>
Spring的配置文件
我这里起名为 beans_core.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.2.xsd">
<!-- 开启注解模式 -->
<context:annotation-config/>
<!-- 扫描注解包 -->
<context:component-scan base-package="com.top.*"></context:component-scan>
<!-- 数据库连接池对象 -->
<context:property-placeholder
location="classpath:jdbc.properties"></context:property-placeholder>
<!-- 阿里 druid数据库连接池 -->
<bean id="dataSource"
class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
<!-- 数据库基本信息配置 -->
<property name="url" value="${url}" />
<property name="username" value="${jdbc_username}" />
<property name="password" value="${jdbc_password}" />
<property name="driverClassName" value="${driverClassName}" />
<property name="filters" value="${filters}" />
<!-- 最大并发连接数 -->
<property name="maxActive" value="${maxActive}" />
<!-- 初始化连接数量 -->
<property name="initialSize" value="${initialSize}" />
<!-- 配置获取连接等待超时的时间 -->
<property name="maxWait" value="${maxWait}" />
<!-- 最小空闲连接数 -->
<property name="minIdle" value="${minIdle}" />
<!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
<property name="timeBetweenEvictionRunsMillis"
value="${timeBetweenEvictionRunsMillis}" />
<!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
<property name="minEvictableIdleTimeMillis"
value="${minEvictableIdleTimeMillis}" />
<property name="validationQuery" value="${validationQuery}" />
<property name="testWhileIdle" value="${testWhileIdle}" />
<property name="testOnBorrow" value="${testOnBorrow}" />
<property name="testOnReturn" value="${testOnReturn}" />
<property name="maxOpenPreparedStatements"
value="${maxOpenPreparedStatements}" />
<!-- 打开removeAbandoned功能 -->
<property name="removeAbandoned" value="${removeAbandoned}" />
<!-- 1800秒,也就是30分钟 -->
<property name="removeAbandonedTimeout"
value="${removeAbandonedTimeout}" />
<!-- 关闭abanded连接时输出错误日志 -->
<property name="logAbandoned" value="${logAbandoned}" />
</bean>
<!-- spring 整合mybatis 使用的工具类 -->
<bean id="sqlSessionFactory"
class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<!-- 扫描我们制定目录下的mapper.xml文件 -->
<property name="mapperLocations"
value="classpath:mybatis/mapper/*.xml"></property>
<!-- 加载mybatis的配置文件 -->
<property name="configLocation"
value="classpath:mybatis/sqlMapConfig.xml"></property>
<!-- 引入pagehelper分页插件 -->
<property name="plugins">
<array>
<bean class="com.github.pagehelper.PageInterceptor">
<property name="properties">
<value>
helperDialect=mysql
reasonable=true
supportMethodsArguments=true
params=count=countSql
autoRuntimeDialect=true
</value>
</property>
</bean>
</array>
</property>
</bean>
<!-- 加载我们的mapper xml 和 mapper接口 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.top.mapper"></property>
</bean>
<!--<import resource="classpath:beans_transaction.xml"></import> -->
<!--<bean name="customerController" class ="com.ujiuye.cus.controller.CustomerController"></bean> -->
<!-- 引入spring提供的事务管理 -->
<bean id="tm"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"></property>
</bean>
<!-- transaction-manager: 值就是spring提供的那个事务管理器的id值 -->
<tx:advice id="myadvice" transaction-manager="tm">
<tx:attributes>
<tx:method name="add*" isolation="READ_COMMITTED"
propagation="REQUIRED" />
<tx:method name="save*" isolation="READ_COMMITTED"
propagation="REQUIRED" />
<tx:method name="delete*" isolation="READ_COMMITTED"
propagation="REQUIRED" />
<tx:method name="update*" isolation="READ_COMMITTED"
propagation="REQUIRED" />
<tx:method name="drop*" isolation="READ_COMMITTED"
propagation="REQUIRED" />
</tx:attributes>
</tx:advice>
<aop:config>
<aop:pointcut
expression="execution(* com.top.service.*(..))" id="pt" />
<aop:advisor advice-ref="myadvice" pointcut-ref="pt" />
</aop:config>
</beans>
SpringMVC的配置文件
我这里命名为 springmvc.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.2.xsd">
<context:annotation-config />
<!-- 扫描哪些包 -->
<context:component-scan base-package="com.top.*" />
<bean name="conversionService"
class="org.springframework.context.support.ConversionServiceFactoryBean">
<property name="converters">
<set>
<bean class="com.top.util.DateConvertor"></bean>
<bean class="com.top.util.MyTrimString"></bean>
</set>
</property>
</bean>
<!-- 开启springmvc的注解操作 -->
<mvc:annotation-driven
conversion-service="conversionService" />
<!-- 将dispatcherServlet 不能处理的请求推给 默认servlet执行 -->
<mvc:default-servlet-handler />
<!-- 视图解析器 -->
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
</beans>
为了代替手工使用SqlSessionDaoSupport
或SqlSessionTemplate
编写数据访问对象 (DAO)的代码,MyBatis-Spring
提供了一个动态代理的实现:MapperFactoryBean
。这个类可以让你直接注入数据映射器接口到你的service 层 bean
中。当使用映射器时,你仅仅如调 用你的DAO
一样调用它们就可以了,但是你不需要编写任何DAO 实现
的代码,因为MyBatis-Spring 将会为你创建代理。
MyBatis 的配置文件
我这里命名为 sqlMapConfig.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!-- 暂时不需要其他配置-->
</configuration>
日志配置文件
log4j.properties
# Global logging configurationuff0cu5efau8baeu5f00u53d1u73afu5883u4e2du8981u7528debug
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
数据库配置文件
jdbc.properties
url:jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&characterSetResults=utf8
driverClassName:com.mysql.jdbc.Driver
jdbc_username:root
jdbc_password:123
filters:stat
maxActive:20
initialSize:1
maxWait:60000
minIdle:10
maxIdle:15
timeBetweenEvictionRunsMillis:60000
minEvictableIdleTimeMillis:300000
validationQuery:SELECT 'x'
testWhileIdle:true
testOnBorrow:false
testOnReturn:false
maxOpenPreparedStatements:20
removeAbandoned:true
removeAbandonedTimeout:1800
logAbandoned:true
- 配置文件就已经全部配置完成了,项目目录如下图。
![d99e6bbb00b94ae71e14c0a5210d2beb.png](https://i-blog.csdnimg.cn/blog_migrate/22f3fa168d38cf4aa163f6cf6c38ca88.jpeg)
六、工程导入Jar包及配置 tomcat
- 接下来点击左上角
File
,找到Project Structure...
点击进入项目配置,找到Libraries
,进入查看,你会发现你pom.xml
导入的maven jar包
已经下载完毕。
![6e669b673efe3c4aeb7cc956f919b847.png](https://i-blog.csdnimg.cn/blog_migrate/3f83e04136d2be9515284b4ff9020f36.jpeg)
- 继续点击
Artifacts
,会发现Available ...
也有maven的jar包
![84c350a06ed6a8ed10e7f16fcfbb949a.png](https://i-blog.csdnimg.cn/blog_migrate/6eed0a875ec6cd598ce520accd1778b7.jpeg)
- 接下来看图中操作步骤操作
![7d287d818d453fa58e4d1aa0ccfaa25f.png](https://i-blog.csdnimg.cn/blog_migrate/bc76a48dcc04548df5c4e8d15346444c.jpeg)
- 右击
ssmDemo
文件夹,点击Put into Output Root
![ad2aa97581d15736252d2c94a3cd2baf.png](https://i-blog.csdnimg.cn/blog_migrate/b141925522b888bf321c627bd1f7d268.jpeg)
- 这时候你看发现如下图所示的变化
![26b673c8568f50fc30ff1fa6637cae9e.png](https://i-blog.csdnimg.cn/blog_migrate/bdeb538d3636007a86e99dd504ab4744.jpeg)
- 然后jar包已经全部部署在
WEB-INF
的lib
目录下,接下来先点击Apply
再点击OK
。
![76b942c91164b8af6d1c2445c2f250bc.png](https://i-blog.csdnimg.cn/blog_migrate/9d48e7ea22a7cced43ed3f55abeb4a30.jpeg)
- 接下来我们来 配置
tomcat
,点击OK 后,进入编辑区 点击"Add Config..."
![df330cccf34732c7a52f1856102bddd7.png](https://i-blog.csdnimg.cn/blog_migrate/5a1296d87517092a2f284dc54e242cff.jpeg)
- 点击添加图标
➕
![ac528ac5ced5db91c1266deb4a73f17e.png](https://i-blog.csdnimg.cn/blog_migrate/fd4975c606469dfb27122516dc1f9686.jpeg)
- 一直下拉找到
Tomcat Server
选中Local
,会进入下图的界面。
![767b91a48ea7d4060a5dc0381edd34ad.png](https://i-blog.csdnimg.cn/blog_migrate/17d854b78becd2834d6335c9f772aa81.jpeg)
![71de1dfbee1008f60425076482948f1d.png](https://i-blog.csdnimg.cn/blog_migrate/7e2df51d20b796d6cb828e2d6afde585.jpeg)
- 接下来编辑
tomcat
配置,根据图中操作步骤,来配置。
![340859b14f3ca692164cb4285409e67c.png](https://i-blog.csdnimg.cn/blog_migrate/e6faf7c2920c4c4133fdfce907d8ce50.jpeg)
![1bd0583e96f41b4b0c68a25741b7a6f8.png](https://i-blog.csdnimg.cn/blog_migrate/3cd04f644fc6174cb042977bb5ea5cbc.jpeg)
![bed445513f19719d495e03711e007ad6.png](https://i-blog.csdnimg.cn/blog_migrate/f9aa802fe3864d690cc274ed13f72ff3.jpeg)
![880149b0194b07cbf1a5314bdec19f60.png](https://i-blog.csdnimg.cn/blog_migrate/eadc88217a307015407570f7d0b006c1.png)
![27c5953a900c6c2f95d646cb7da94748.png](https://i-blog.csdnimg.cn/blog_migrate/92925deef5ce52272367ee094c8a351a.jpeg)
- 这时候观察
tomcat
已经配置完成。
![ab5a97c721292c823c966f66103353db.png](https://i-blog.csdnimg.cn/blog_migrate/aceb62760bd7e559a0bd21194981361a.jpeg)
七、使用MyBatis的逆向工程(Generator)
MyBatis的Generator可以自动创建实体类、Mapper映射文件以及DAO接口
- MyBatis的逆向工程 有三种:
命令行、eclipse插件、maven插件。
- 我这里使用
maven插件
- Eclipse与IDEA都可以使用,咱们这里的教程就使用IDEA吧
在pom.xml
中添加plugin
<plugin>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-maven-plugin</artifactId>
<version>1.3.2</version>
<configuration>
<configurationFile>src/main/resources/mybatis-generator/generatorConfig.xml</configurationFile>
<verbose>true</verbose>
<overwrite>true</overwrite>
</configuration>
<executions>
<execution>
<id>Generate MyBatis Artifacts</id>
<goals>
<goal>generate</goal>
</goals>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>org.mybatis.generator</groupId>
<artifactId>mybatis-generator-core</artifactId>
<version>1.3.2</version>
</dependency>
</dependencies>
</plugin>
generatorConfig.xml
的位置,我这里是放在src/main/resources/mybatis-generator/generatorConfig.xml
,大家可以自己调整路径。generatorConfig.xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>
<classPathEntry location="/Users/wht/maven/mavenrepository/mysql/mysql-connector-java/5.1.41/mysql-connector-java-5.1.41.jar"/>
<context id="DB2Tables" targetRuntime="MyBatis3">
<commentGenerator>
<property name="suppressAllComments" value="true"></property>
</commentGenerator>
<!-- 设定数据库连接 -->
<jdbcConnection driverClass="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost:3306/test"
userId="root"
password="root">
</jdbcConnection>
<javaTypeResolver>
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!-- 生成 bean 存放的位置 -->
<javaModelGenerator targetPackage="com.top.bean"
targetProject="./src/main/java">
<property name="enableSubPackages" value="true" />
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!-- 生成的mapper文件的位置 -->
<sqlMapGenerator targetPackage="com.top.mapper"
targetProject="./src/main/java">
<property name="enableSubPackages" value="true" />
</sqlMapGenerator>
<!-- 生成的mapper.xml 对应的那个mapper接口的存放位置 -->
<javaClientGenerator type="XMLMAPPER"
targetPackage="com.top.mapper" targetProject="./src/main/java">
<property name="enableSubPackages" value="true" />
</javaClientGenerator>
<!-- 设定反向生成的表 -->
<table tableName="test"></table>
</context>
</generatorConfiguration>
- 配置完成后如下图
![ba074e98ba0edc850d1f09c7bfcc771d.png](https://i-blog.csdnimg.cn/blog_migrate/c80fd705043e8d1b4ea9f055352072ad.jpeg)
![9bfb0bc62b836c31da2f59ddbaf85dfc.png](https://i-blog.csdnimg.cn/blog_migrate/9797330da55b4dde223bc8fca9ebf916.jpeg)
- 点击
mybatis-generator:generate
会自动生成实体类、Mapper映射文件以及DAO接口
,看如下图图片。
![cc2c686beb45fb5627a443e2ab964d5b.png](https://i-blog.csdnimg.cn/blog_migrate/7169b40369f0170cdb7f4c2dc00f49e6.jpeg)
- 我习惯将逆向生成的
** Mapper.xml
文件放在配置文件resources
的mybatis
下的mapper
文件夹下,如下图。
![0a96bb7101584ac630655ed33e1cfb72.png](https://i-blog.csdnimg.cn/blog_migrate/4487b7afd57dc2f830d07faf108c1c39.jpeg)
- 逆向工程生成代码就已经完成了,是不是很 Nice 啊 ,快去试一试咯
八、建立Service层以及conrorller层
Service层接口
package com.top.service;
import com.top.bean.Test;
public interface TestService {
Test login(String name, String password);
}
Service层 接口实现类
package com.top.service;
import com.top.bean.Test;
import com.top.mapper.TestMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@Service
public class TestServiceImpl implements TestService {
@Autowired
private TestMapper testMapper;
@Override
public Test login(String name, String password) {
return testMapper.login(name, password);
}
}
Controller层
package com.top.controller;
import com.alibaba.fastjson.JSON;
import com.top.bean.Test;
import com.top.service.TestService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.ArrayList;
import java.util.Map;
@Controller
@RequestMapping("/test")
public class TestController {
@Autowired
private TestService testService;
@RequestMapping("login")
public String login(String name ,String password){
Test login = testService.login(name, password);
if (login != null ) {
return "redirect:/index.jsp";
} else {
return "redirect:/login.jsp";
}
}
}
数据库大家自己创建,这里就不详细创建了,页面我这里这是简单的写了一个登录的页面
切记一定要创建数据库并将 数据库配置文件的数据库名称
改为 *自己创建的名称
*
九、运行测试
- 这时候运行
tomcat
,浏览器会自动加载,如果,没有加载则访问URL
http://localhost:8080/ssmDemo
- 会看到如下页面,登录自己的姓名和密码进行验证登录。
![789b4fc254d60d2984dca553efed0056.png](https://i-blog.csdnimg.cn/blog_migrate/7bcd6fe89d8a7f81391357da882104c5.jpeg)
![4b448d948d3c10bdb2f52e22202243b6.png](https://i-blog.csdnimg.cn/blog_migrate/794efb95da566e02c58813c494f06a5a.jpeg)
![289428dd31499828998b7792de2af856.png](https://i-blog.csdnimg.cn/blog_migrate/70156a2003ab686aa6240b751e4e8363.jpeg)
- 项目结构如下:
![c5c09d88621f51ce7d4d390800dd6309.png](https://i-blog.csdnimg.cn/blog_migrate/c5eaba2497086b4cdf1c0891f5da5290.jpeg)
![f57c06727a52f1b2fe1d4915bcc50247.png](https://i-blog.csdnimg.cn/blog_migrate/75756b88c1c7ff4d41dc4e16bdc3af82.jpeg)
![f6b642bce8f1bf2a1cec931745f06ca4.png](https://i-blog.csdnimg.cn/blog_migrate/1dabd053ae1b59ee92d11b3ed80d6869.jpeg)
总结
到此为止,整个SSM
项目就完美的整合完成了。如自己还有什么需求可以在此基础上继续编写,如需还有什么问题可在下方评论。谢谢
希望可以帮助到更多的学者 ,后续也会更新很多文章,想要了解学习的可以持续关注下哟 别着急,还有更多的秘密和有趣的代码等着你来探索!
![3cd3e502ad029e70bec134873de32d52.png](https://i-blog.csdnimg.cn/blog_migrate/e3dc99dde7ef605b86bfc080e01c906b.jpeg)
分享嗨起来,美德传起来,点个星标从此探索之路不迷茫!
微信扫描二维码,关注我的原创日更公众号,可以查看更多程序的秘密!
http://weixin.qq.com/r/3Do3L-PEX64grbdM92-O (二维码自动识别)