SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)

发布时间:2019-09-22  栏目:Python  评论:0 Comments

1、准备

IntelliJ IDEA
Tomcat
JDK
Maven
mysql
spring、springmvc、mybatis 了解

近年来一经如上标准你都持有,那么通过本身这篇博客 你确定能够组成出 SSM
框架,达成如下效果

图片 1

凡事博客共分为三部分:

  • 树立 基于 Maven 的 WEB 项目,运维 汤姆cat ,项目运维
  • 结缘 Mybatis+Spring ,实行单元测量试验 能够成功从数据库查询出多少作用
  • 组成 Mybaits+Spring+SpringMVC,输入Url 完毕总体 MVC 的流水生产线

硬件条件:

2、步骤

因为说的比相当细,所在此从前面第4局地都掌握能够跳过。

处理器:intel CORE i5 7th Gen

2.1 第四盘部

1.新建基于 Maven 的Web工程

图片 2

2.填写 GroupId 和 ArtifactId,参考

 groupId一般分为几个段,这里笔者只说两段,第一段为域,第二段为集团名称。域又分为org、com、cn等等多数,在那之中org为非营利组织,com为商业贸易组织。举个apache集团的tomcat项目例子:这一个类型的groupId是org.apache,它的域是org(因为tomcat是非营利项目),集团名称是apache,artigactId是tomcat。

图片 3

3.填写 Maven 配置。

图片 4

图形中1、2、3各自:1:首先你要先陈设好 Maven,假使安顿好了,去 CMD 魔声分界面下输入mvn --version
命令,要是有体现,则象征已经配备好了,就算没,下载maven,配置遭受变量。maven下载地址

2:选择大家的 maven 文件夹下的 setting,那Ritter别要留心,恐怕因为
“墙”的原因,下载 maven jar 包 很轻便堵塞,所以建议在 setting.xml
配置国内镜像,比如Ali云。

1      <!-- 复制如上一段镜像代码配置,添加阿里云镜像 -->2      <mirror>3       <id>alimaven</id>4       <mirrorOf>central</mirrorOf>5       <name>aliyun maven</name>6       <url>http://maven.aliyun.com/nexus/content/groups/public/</url>7     </mirror>

图片 5

在相应地方填上如上代码就可以。

3.这里为了从头初阶,作者新建了个货仓地址。这里大家随便,也足以和自己一样。

图片 6

4.填写工程名,module名,后面一个是 workspace 后面一个代表二个品种

图片 7

5.制造架构包

图片 8一经这里弹出此对话框,记得点击
auto。
图片 9
图片 10

新建文件夹,利用Sources Resources 五个标签分别转化 Java 和 Resources
文件夹

6.新建tomcat而且配备

图片 11
图片 12

7.起动项目

图片 13

内存: 4G

2.2 第二有个别

**1.添加 maven 依赖。**因为 pom.xml 里面 jar
包太多,太占内容,所以从源码中复制吧。

2.因为SSM三者结合全数身处三个 .xml 中太杂。所以这里拆成多少个
spring-mybaits.xmlspring-servicespring-web 配置
spring-mybatis.xml
,包括如下内容:

  • 数据库配置文件 jdbc.properties。包罗数据库地址 密码 库名等等。

1     <!-- 1.配置数据库相关参数properties的属性:${url} -->2     <context:property-placeholder location="classpath:jdbc.properties" />
  • 连接池。这里运用 c3p0。

 1    <!-- 2.数据库连接池 --> 2     <bean  class="com.mchange.v2.c3p0.ComboPooledDataSource"> 3         <!-- 配置连接池属性 --> 4         <property name="driverClass" value="${jdbc.driver}" /> 5         <property name="jdbcUrl" value="${jdbc.url}" /> 6         <property name="user" value="${jdbc.username}" /> 7         <property name="password" value="${jdbc.password}" /> 8  9         <!-- c3p0连接池的私有属性 -->10         <property name="maxPoolSize" value="30" />11         <property name="minPoolSize" value="10" />12         <!-- 关闭连接后不自动commit -->13         <property name="autoCommitOnClose" value="false" />14         <!-- 获取连接超时时间 -->15         <property name="checkoutTimeout" value="10000" />16         <!-- 当获取连接失败重试次数 -->17         <property name="acquireRetryAttempts" value="2" />18     </bean>
  • 配备SqlSessionFactory对象。专项使用来猎取 sqlSession。

 1     <!-- 3.配置SqlSessionFactory对象 --> 2     <bean  class="org.mybatis.spring.SqlSessionFactoryBean"> 3         <!-- 注入数据库连接池 --> 4         <property name="dataSource" ref="dataSource" /> 5         <!-- 配置MyBaties全局配置文件:mybatis-config.xml --> 6         <property name="configLocation" value="classpath:mybatis-config.xml" /> 7         <!-- 扫描entity包 使用别名 --> 8         <property name="typeAliasesPackage" value="ssm.entity" /> 9         <!-- 扫描sql配置文件:mapper需要的xml文件 -->10         <property name="mapperLocations" value="classpath*:mapper/*.xml" />11     </bean>

resources下新建mybatis-config.xml,此文件也称作 mybatis
的主干配置文件。里面内容为空 临时

1 <?xml version="1.0" encoding="UTF-8" ?>2 <!DOCTYPE configuration3         PUBLIC "-//mybatis.org//DTD Config 3.0//EN"4         "http://mybatis.org/dtd/mybatis-3-config.dtd">5 <configuration>6 7 </configuration>

新建 entity 包,用来放实体类,也正是 pojo。同期在 sqlSession
工厂中围观整个实体类包。那样在 mapper 中就可以用
类名做别称,不用写整个类的相对地方路径了。

1   <select  parameterType="String" resultType="User">2       SELECT3             *4       FROM5             USER6       WHERE7             username = #{username}8   </select>

譬喻说个中的 User。不然将在写成

1 ssm.entity.User

对此 sql 配置文件,小编那边坐落 resources–>mapper–> 下。

图片 14

对于 *mapper.xml 的职位管理有广大中艺术。有的放在 mapper 包下。然后在
mapper 下创建三个包,分别放 daomapper

图片 15

还有个别根据效果与利益建包,四个意义建三个包,个中富含一组 成效文件,分别是
*Dao *Mapper.xml

图片 16

现实如何做依据实际项目情状来,假若项目系统机能复杂或许提议后边三种,不然到时候会十分的悲戚(项目多,文件就多,假诺第一种办法,则跨度大,显示器占满
:) )

<property name="mapperLocations" value="classpath*:mapper/*.xml" />
<property name="configLocation" value="classpath:mybatis-config.xml" />
依据自个儿其实际景况况填写

  • mapper 动态代理开拓,扫描 dao 接口。

1    <!-- 4.配置扫描Dao接口包,动态实现Dao接口,注入到spring容器中 -->2     <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">3         <!-- 注入sqlSessionFactory -->4         <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />5         <!-- 给出需要扫描Dao接口包 -->6         <property name="basePackage" value="ssm.dao" />7     </bean>

<property name="basePackage" value="ssm.dao" /> 依据自个儿其实况况填写

ok!到这边地点,大家的 spring-mybatis 就陈设好了。已经得以因此 mybatis
操作数据库了,现在大家来测量试验下 这一步出标题没。
先往数据库插入一些数据。这里自身提供一份自己的 sql 文件,若是各位有需求,
直接运转就足以了。

 1 DROP TABLE IF EXISTS `items`; 2 CREATE TABLE `items` ( 3   `id` int(11) NOT NULL AUTO_INCREMENT, 4   `name` varchar NOT NULL COMMENT '商品名称', 5   `price` float NOT NULL COMMENT '商品定价', 6   `detail` text COMMENT '商品描述', 7   `pic` varchar DEFAULT NULL COMMENT '商品图片', 8   `createtime` datetime NOT NULL COMMENT '生产日期', 9   PRIMARY KEY 10 ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;11 12 -- ----------------------------13 -- Records of items14 -- ----------------------------15 INSERT INTO `items` VALUES ('1', '台式机', '3000.0', '该电脑质量非常好!!!!', null, '2016-02-03 13:22:53');16 INSERT INTO `items` VALUES ('2', '笔记本', '6000.0', '笔记本性能好,质量好!!!!!', null, '2015-02-09 13:22:57');17 INSERT INTO `items` VALUES ('3', '背包', '200.0', '名牌背包,容量大质量好!!!!', null, '2015-02-06 13:23:02');18 19 -- ----------------------------20 -- Table structure for user21 -- ----------------------------22 DROP TABLE IF EXISTS `user`;23 CREATE TABLE `user` (24   `id` int(11) NOT NULL AUTO_INCREMENT,25   `username` varchar NOT NULL COMMENT '用户名称',26   `birthday` date DEFAULT NULL COMMENT '生日',27   `sex` char DEFAULT NULL COMMENT '性别',28   `address` varchar DEFAULT NULL COMMENT '地址',29   PRIMARY KEY 30 ) ENGINE=InnoDB AUTO_INCREMENT=27 DEFAULT CHARSET=utf8;31 32 -- ----------------------------33 -- Records of user34 -- ----------------------------35 INSERT INTO `user` VALUES ('1', '王五', null, '2', null);36 INSERT INTO `user` VALUES ('10', '张三', '2014-07-10', '1', '北京市');37 INSERT INTO `user` VALUES ('16', '张小明', null, '1', '河南郑州');38 INSERT INTO `user` VALUES ('22', '陈小明', null, '1', '河南郑州');39 INSERT INTO `user` VALUES ('24', '张三丰', null, '1', '河南郑州');40 INSERT INTO `user` VALUES ('25', '陈小明', null, '1', '河南郑州');41 INSERT INTO `user` VALUES ('26', '王五', null, null, null);

图片 17

图片 18

那是全体项指标组织。 在entity下建立User实体类,注意字段对齐。
dao下建立UserDao

 1 import org.apache.ibatis.annotations.Param; 2 import ssm.entity.User; 3 import java.util.List; 4  5 /** 6  * Created by guozhaohui628@gmail.com on 2018/5/7 7  * Description: 8  */ 9 public interface UserDao {10 11     public List<User> queryUserListByUsername(String username);12 13     public List<User> queryUserListByUsername2Sex(@Param("username")String username, @Param int sex);14 15 }

mapper下新建UserMappper.xml用来写 sql
语句。因为测验,所以这边写叁个简便的 sql 查询。

 1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE mapper 3         PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 4         "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 5 <mapper namespace="ssm.mapper.UserDao"> 6     <!-- 目的:为dao接口方法提供sql语句配置 --> 7   <select  parameterType="String" resultType="User"> 8       SELECT 9             *10       FROM11             USER12       WHERE13             username = #{username}14   </select>15 16     <select  resultType="User">17         SELECT18             *19         FROM20             USER21         WHERE22             username = #{username}23         AND sex = #{sex}24     </select>25 </mapper>

其间有一个地点要专一 <mapper namespace="ssm.mapper.UserDao"> 映射位置换到温馨的,大概大家两不均等。

此地有个小手艺非常要留心,一般开拓中,我们都是先在把 sql
写完运转正确才放到这里面来,举例下图中,何况为了赏心悦目,复制 sql
语句前都会正式下 sql 语句,制止太乱。

图片 19

ok! 写一个测验类 测验下。

 1 import org.junit.Test; 2 import org.springframework.context.ApplicationContext; 3 import org.springframework.context.support.ClassPathXmlApplicationContext; 4 import ssm.dao.UserDao; 5 import ssm.entity.User; 6  7 import java.util.List; 8  9 /**10  * Created by guozhaohui628@gmail.com on 2018/5/711  * Description:12  */13 public class TestPratice {14     @Test15     public void A(){16         ApplicationContext ac = new ClassPathXmlApplicationContext("spring-mybatis.xml");17         UserDao userDao = ac.getBean(UserDao.class);18         List<User> userList = userDao.queryUserListByUsername2Sex("王五",1);19 //        List<User> userList = userDao.queryUserListByUsername;20         System.out.println(userList.toString;21     }22 }

图片 20

好的,到这一步,表明大家的 mybatis 和 spring 整合没难题。

硬盘:500G

2.3 第三有的

前几日来写spring-service.xml,比较轻松,正是扫描下service类包和配备事务。

 1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4        xmlns:context="http://www.springframework.org/schema/context" 5        xmlns:tx="http://www.springframework.org/schema/tx" 6        xsi:schemaLocation="http://www.springframework.org/schema/beans 7     http://www.springframework.org/schema/beans/spring-beans.xsd 8     http://www.springframework.org/schema/context 9     http://www.springframework.org/schema/context/spring-context.xsd10     http://www.springframework.org/schema/tx11     http://www.springframework.org/schema/tx/spring-tx.xsd">12     <!-- 扫描service包下所有使用注解的类型 -->13     <context:component-scan base-package="ssm.service" />14 15     <!-- 配置事务管理器 -->16     <bean 17           class="org.springframework.jdbc.datasource.DataSourceTransactionManager">18         <!-- 注入数据库连接池 -->19         <property name="dataSource" ref="dataSource" />20     </bean>21 22     <!-- 配置基于注解的声明式事务 -->23     <tx:annotation-driven transaction-manager="transactionManager" />24 </beans>

spring + springmvc 整合 建立 spring-web ,里面内容比非常少,只是扫描了
controller 用来保险前端调控器 DispatcherServlet
能够找到并步入相关办法中。 同期还安插了试图分析器 ViewResolve
那样我们跳转视图时直接写 视图名称即可,不用写相对地址路线了。

1     <!-- 3.配置jsp 显示ViewResolver -->2     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">3         <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />4         <property name="prefix" value="/jsp/" />5         <property name="suffix" value=".jsp" />6     </bean>7 8     <!-- 4.扫描web相关的 controller -->9     <context:component-scan base-package="ssm.controller" />

末段正是安排 web.xml。首要作用是 配置
前端调节器DispatcherServlet重大是阻碍法则管理。这里我们是怀有都阻挡。其次是
刚才大家 书写的 七个spring-*.xml文本在此处配置运行。

 1  <!-- spring mvc servlet--> 2   <servlet> 3     <servlet-name>SpringMVC</servlet-name> 4     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 5     <init-param> 6       <param-name>contextConfigLocation</param-name> 7       <param-value>classpath:/spring-*.xml</param-value> 8     </init-param> 9   </servlet>10   <servlet-mapping>11     <servlet-name>SpringMVC</servlet-name>12     <!-- 此处也可以配置成 *.do *.action形式 -->13     <url-pattern>/</url-pattern>14   </servlet-mapping>

接下来正是日记和编码,对于当前的测验没啥功用,不过照旧安顿可以吗

 1 <context-param> 2     <param-name>log4jConfigLocation</param-name> 3     <param-value>classpath:log4j.properties</param-value> 4   </context-param> 5  6   <!-- 编码过滤器 --> 7   <filter> 8     <filter-name>encodingFilter</filter-name> 9     <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>10     <init-param>11       <param-name>encoding</param-name>12       <param-value>UTF-8</param-value>13     </init-param>14   </filter>15   <filter-mapping>16     <filter-name>encodingFilter</filter-name>17     <url-pattern>/*</url-pattern>18   </filter-mapping>

好的 终于搞完了,现在能够欣慰的写代码了。未来备选一个这么的 jsp 文件。

图片 21

 1 <%@ page language="java" contentType="text/html; charset=UTF-8" 2     pageEncoding="UTF-8"%> 3 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 4 <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt"  prefix="fmt"%> 5 <%@ page isELIgnored="false" %> 6 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 7 <html> 8 <head> 9 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">10 <title>查询商品列表</title>11 </head>12 <body> 13 <form action="${pageContext.request.contextPath}/items/queryitem.action" method="post">14 查询条件:15 <table width="100%" border=1>16 <tr>17 <td><input type="submit" value="查询"/></td>18 </tr>19 </table>20 商品列表:21 <table width="100%" border=1>22 <tr>23     <td>商品名称</td>24     <td>商品价格</td>25     <td>生产日期</td>26     <td>商品描述</td>27     <td>操作</td>28 </tr>29 <c:forEach items="${itemList }" var="item">30 <tr>31     <td>${item.name }</td>32     <td>${item.price }</td>33     <td>${item.createtime}</td>34     <td>${item.detail }</td>35     <td><a href="${pageContext.request.contextPath }/itemEdit.action?id=${item.id}">修改</a></td>36 </tr>37 </c:forEach>38 </table>39 </form>40 </body>41 42 </html>

大家须求查询全数的 item 数据呈现在上头。

图片 22

首先写ItemsDao

 1 import org.springframework.stereotype.Repository; 2 import ssm.entity.Items; 3  4 import java.util.List; 5  6 /** 7  * Created by guozhaohui628@gmail.com on 2018/5/8 8  * Description: 9  */10 @Repository11 public interface ItemsDao {12     public List<Items> queryAllItemsList();13 }

对应的ImtesMapper.xml

 1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE mapper 3         PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 4         "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 5 <mapper namespace="ssm.dao.ItemsDao"> 6     <!-- 目的:为dao接口方法提供sql语句配置 --> 7     <select  resultType="Items"> 8          SELECT 9             *10         FROM11             items;12     </select>13 </mapper>

书写ItemsService接口和 其达成类

 1 import ssm.entity.Items; 2  3 import java.util.List; 4  5 /** 6  * Created by guozhaohui628@gmail.com on 2018/5/8 7  * Description: 8  */ 9 public interface ItemsService {10 11     List<Items> queryAllItemsList();12 13 }

 1 package ssm.service; 2  3 import org.springframework.beans.factory.annotation.Autowired; 4 import org.springframework.stereotype.Service; 5 import ssm.dao.ItemsDao; 6 import ssm.entity.Items; 7  8 import java.util.List; 9 10 /**11  * Created by guozhaohui628@gmail.com on 2018/5/812  * Description:13  */14 @Service15 public class ItemsServiceImpl implements ItemsService {16 17     // 注入Service依赖18     @Autowired19     private ItemsDao itemsdao;20 21     @Override22     public List<Items> queryAllItemsList() {23         return itemsdao.queryAllItemsList();24     }25 }

最后写ItemsController

 1 import org.springframework.beans.factory.annotation.Autowired; 2 import org.springframework.stereotype.Controller; 3 import org.springframework.web.bind.annotation.RequestMapping; 4 import org.springframework.web.servlet.ModelAndView; 5 import ssm.entity.Items; 6 import ssm.service.ItemsServiceImpl; 7  8 import java.util.List; 9 10 11 /**12  * Created by guozhaohui628@gmail.com on 2018/5/813  * Description:14  */15 @Controller16 public class ItemsController {17 18 19     // 注入Service依赖20     @Autowired21     private ItemsServiceImpl itemsService;22 23     @RequestMapping(value = "items/queryitem.action")24     public ModelAndView itemsList(){25         ModelAndView mav = new ModelAndView();26         List<Items> itemsList = itemsService.queryAllItemsList();27         System.out.println(itemsList.toString;28         mav.addObject("itemList", itemsList);29         mav.setViewName("itemList");30         return mav;31     }32 }

.jsp中的代码已经写好了,直接用就能够了。 我们要测量试验要么直接点击这一个地址,要么点击查询

图片 23

图片 24

OK,完事儿,写的可比细,所以比较长。希望对你有帮助~

参考:

  • SSM框架——Spring+SpringMVC+Mybatis的搭建教程
  • SSM框架搭建(spring+springmvc+mybatis)
  • SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)

软件条件:windows 10

付出情状:

IDE:MyEclipse 2014

jdk:1.7

服务器:tomcat 7.0

框架版本:

spring4.0 + springMVC4.0 + MyBatis 3.2.6 + Maven

富有希图干活启幕做完,伊始步入正题:

整合spring+mybatis

第一步:创造一个Maven
web项目,引进相应的jar包。

Maven
web项目教程:http://blog.csdn.net/zhshulin/article/details/37921705

第二步:Maven引进须要的JA福睿斯包

为了便于前边说的时候没有供给引进JACRUISER包,作者这里平素提交全数要求的JAPAJERO包,那都以基本的JA奥迪Q3包,各样包的是为啥的都有注释,就不再多说了。

 pom.xml:

<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>com.sion</groupId>
  <artifactId>SSM</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>SSM Maven Webapp</name>
  <url>http://maven.apache.org</url>
   <properties>  
        <!-- spring版本号 -->  
        <spring.version>4.0.2.RELEASE</spring.version>  
        <!-- mybatis版本号 -->  
        <mybatis.version>3.2.6</mybatis.version>  
        <!-- log4j日志文件管理包版本 -->  
        <slf4j.version>1.7.7</slf4j.version>  
        <log4j.version>1.2.17</log4j.version>  
    </properties>  
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
     <!-- spring核心包 -->  
        <dependency>  
            <groupId>org.springframework</groupId>  
            <artifactId>spring-core</artifactId>  
            <version>${spring.version}</version>  
        </dependency>  

        <dependency>  
            <groupId>org.springframework</groupId>  
            <artifactId>spring-web</artifactId>  
            <version>${spring.version}</version>  
        </dependency>  
        <dependency>  
            <groupId>org.springframework</groupId>  
            <artifactId>spring-oxm</artifactId>  
            <version>${spring.version}</version>  
        </dependency>  
        <dependency>  
            <groupId>org.springframework</groupId>  
            <artifactId>spring-tx</artifactId>  
            <version>${spring.version}</version>  
        </dependency>  

        <dependency>  
            <groupId>org.springframework</groupId>  
            <artifactId>spring-jdbc</artifactId>  
            <version>${spring.version}</version>  
        </dependency>  

        <dependency>  
            <groupId>org.springframework</groupId>  
            <artifactId>spring-webmvc</artifactId>  
            <version>${spring.version}</version>  
        </dependency>  
        <dependency>  
            <groupId>org.springframework</groupId>  
            <artifactId>spring-aop</artifactId>  
            <version>${spring.version}</version>  
        </dependency>  

        <dependency>  
            <groupId>org.springframework</groupId>  
            <artifactId>spring-context-support</artifactId>  
            <version>${spring.version}</version>  
        </dependency>  

        <dependency>  
            <groupId>org.springframework</groupId>  
            <artifactId>spring-test</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>1.2.2</version>  
        </dependency>  
        <!-- 导入java ee jar 包 -->  
        <dependency>  
            <groupId>javax</groupId>  
            <artifactId>javaee-api</artifactId>  
            <version>7.0</version>  
        </dependency>  
        <!-- 导入Mysql数据库链接jar包 -->  
        <dependency>  
            <groupId>mysql</groupId>  
            <artifactId>mysql-connector-java</artifactId>  
            <version>5.1.30</version>  
        </dependency>  
        <!-- 导入dbcp的jar包,用来在applicationContext.xml中配置数据库 -->  
        <dependency>  
            <groupId>commons-dbcp</groupId>  
            <artifactId>commons-dbcp</artifactId>  
            <version>1.2.2</version>  
        </dependency>  
        <!-- JSTL标签类 -->  
        <dependency>  
            <groupId>jstl</groupId>  
            <artifactId>jstl</artifactId>  
            <version>1.2</version>  
        </dependency>  
        <!-- 日志文件管理包 -->  
        <!-- log start -->  
        <dependency>  
            <groupId>log4j</groupId>  
            <artifactId>log4j</artifactId>  
            <version>${log4j.version}</version>  
        </dependency>  


        <!-- 格式化对象,方便输出日志 -->  
        <dependency>  
            <groupId>com.alibaba</groupId>  
            <artifactId>fastjson</artifactId>  
            <version>1.1.41</version>  
        </dependency>  


        <dependency>  
            <groupId>org.slf4j</groupId>  
            <artifactId>slf4j-api</artifactId>  
            <version>${slf4j.version}</version>  
        </dependency>  

        <dependency>  
            <groupId>org.slf4j</groupId>  
            <artifactId>slf4j-log4j12</artifactId>  
            <version>${slf4j.version}</version>  
        </dependency>  
        <!-- log end -->  
        <!-- 映入JSON -->  
        <dependency>  
            <groupId>org.codehaus.jackson</groupId>  
            <artifactId>jackson-mapper-asl</artifactId>  
            <version>1.9.13</version>  
        </dependency>  
        <!-- 上传组件包 -->  
        <dependency>  
            <groupId>commons-fileupload</groupId>  
            <artifactId>commons-fileupload</artifactId>  
            <version>1.3.1</version>  
        </dependency>  
        <dependency>  
            <groupId>commons-io</groupId>  
            <artifactId>commons-io</artifactId>  
            <version>2.4</version>  
        </dependency>  
        <dependency>  
            <groupId>commons-codec</groupId>  
            <artifactId>commons-codec</artifactId>  
            <version>1.9</version>  
        </dependency>  
  </dependencies>
  <build>
    <finalName>SSM</finalName>
  </build>
</project>

其三步:建构JDBC属性文件

jdbc.properties(文件编码修改为utf-8)

#MySQL数据库驱动 
driver=com.mysql.jdbc.Driver
#数据库连接
url=jdbc:mysql://127.0.0.1:3306/student
#MySQL数据库用户名 
username=root
#MySQL数据库密码 
password=root  
#定义初始连接数  
initialSize=0  
#定义最大连接数  
maxActive=20  
#定义最大空闲  
maxIdle=20  
#定义最小空闲  
minIdle=1  
#定义最长等待时间  
maxWait=60000  

 

第四步:建设构造spring-mybatis.xml配置文件

 那个文件便是用来成功spring和mybatis的三结合的。那在那之中也不多行安顿,重要的正是机动扫描,自动注入,配置数据库。注释也很详细,我们看看就清楚了。

 

<?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:p="http://www.springframework.org/schema/p"  
    xmlns:context="http://www.springframework.org/schema/context"  
    xmlns:mvc="http://www.springframework.org/schema/mvc"  
    xsi:schemaLocation="http://www.springframework.org/schema/beans    
                        http://www.springframework.org/schema/beans/spring-beans-3.1.xsd    
                        http://www.springframework.org/schema/context    
                        http://www.springframework.org/schema/context/spring-context-3.1.xsd    
                        http://www.springframework.org/schema/mvc    
                        http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">  
    <!-- 自动扫描 -->  
    <context:component-scan base-package="com.sion" />  
    <!-- 引入配置文件 -->  
    <bean id="propertyConfigurer"  
        class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
        <property name="location" value="classpath:jdbc.properties" />  
    </bean>  

    <bean id="dataSource" class="org.apache.commons.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/sion/ssm/mapping/*.xml"></property>  
    </bean>  

    <!-- DAO接口所在包名,Spring会自动查找其下的类 -->  
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">  
        <property name="basePackage" value="com.sion.ssm.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>  

 

 

 

第五步:Log4j**天性文件**

 

log4j.rootLogger=INFO,Console,File  
#定义日志输出目的地为控制台  
log4j.appender.Console=org.apache.log4j.ConsoleAppender  
log4j.appender.Console.Target=System.out  
#可以灵活地指定日志输出格式,下面一行是指定具体的格式  
log4j.appender.Console.layout = org.apache.log4j.PatternLayout  
log4j.appender.Console.layout.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 = ALL  
log4j.appender.File.layout = org.apache.log4j.PatternLayout  
log4j.appender.File.layout.ConversionPattern =[%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%n  

 

第六步:**始建测验用表


 

CREATE TABLE `student` (
  `STU_ID` varchar(12) NOT NULL auto_increment COMMENT '学生编号',
  `STU_NAME` varchar(20) default NULL COMMENT '学生姓名',
  `STU_SEX` varchar(2) default NULL COMMENT '学生性别',
  `STU_AGE` int(10) default NULL COMMENT '学生年龄',
  `STU_CLASS` varchar(50) default NULL COMMENT '学生班级',
  `STU_ADDRESS` varchar(200) default NULL COMMENT '家庭地址',
  PRIMARY KEY  (`STU_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of student
-- ----------------------------
INSERT INTO `student` VALUES ('201401122345', '张三', '男', '20', '软件工程1701', '北京市海淀区苏州街XXX号');
INSERT INTO `student` VALUES ('201401122125', '李四', '女', '21', '工商管理1601', '山东省济南市历下区XXX街道XXX号');
INSERT INTO `student` VALUES ('201301572389', '王武', '男', '23', '电子商务1402', '河北省石家庄市长安区XXX号');

 

第七步:利用MyBatis Generator自动创设代码

参照博文:http://www.cnblogs.com/klslb/p/6908535.html

应用MyBatis
Generator创设的文书代码,已经把增加和删除改查的章程漫天落到实处。不用再自个儿写,再一次应验一下,种种艺术的功用:

selectByPrimaryKey:依据主键ID查询单个对象【借使查询全部,将主键ID传入三个空字符串就可以,记得代码要制止空指针相当】

deleteByPrimaryKey:依照主键ID删除单个对象

insert:安排新数据(插入全体数据项)

insertSelective:插入新数据(插入N个数据项【N小于等于表字段数量】)

updateByPrimaryKeySelective:依赖主键ID修改单个对象的数量(修改N个数据项【N小于等于表字段数量】)

updateByPrimaryKey:依照主键ID修改单个对象的数量(修改全部多少)

 

确立项目目录结构,将创设好的实体类,映射文件,dao代码,放到相应的包下。

在意:记得修改映射文件的

<mapper
namespace=”DAO接口全路径” >
<resultMap id=”BaseResultMap” type=”对应实体类全路线” >

<insert
id=”insert” parameterType=”对应实体类全路线” >

<insert
id=”insertSelective” parameterType=”对应实体类全路径” >

<update
id=”updateByPrimaryKeySelective” parameterType=”对应实体类全路线”
>

<update
id=”updateByPrimaryKey” parameterType=”对应实体类全路径” >

 

第八步:建设构造工作类接口和促成类

在工作包下新建贰个接口IStudentService和StudentServiceImpl

 

IStudentService代码:

 

package com.sion.ssm.service;

import com.sion.ssm.po.Student;

public interface IStudentService {
    int deleteByPrimaryKey(Integer stuId);

    int insert(Student record);

    int insertSelective(Student record);

    Student selectByPrimaryKey(Integer stuId);

    int updateByPrimaryKeySelective(Student record);

    int updateByPrimaryKey(Student record);
}

 

 

 

StudentServiceImpl代码:

 

 

 Student瑟维斯Impl完毕IStudentService重写里面装有的章程后,注入DAO,然后相应的艺术调用DAO相应的不二等秘书籍就可以,因为是单表查询,未有怎么专门的工作逻辑处理,所以直接调用,假诺项目中提到到工作管理,能够在StudentServiceImpl相应的不二秘技中写代码做专门的工作处理,因为Service自身就是做作业逻辑处理的。

 

package com.sion.ssm.service.impl;

import org.springframework.stereotype.Service;

import com.sion.ssm.dao.IStudentDAO;
import com.sion.ssm.po.Student;
import com.sion.ssm.service.IStudentService;
@Service("studentService") 
public class StudentServiceImpl implements IStudentService{
    /* 注入DAO */
    private IStudentDAO studentDAO;

    @Override
    public int deleteByPrimaryKey(Integer stuId) {
        return this.studentDAO.deleteByPrimaryKey(stuId);
    }

    @Override
    public int insert(Student student) {
        return this.studentDAO.insert(student);
    }

    @Override
    public int insertSelective(Student student) {
        return this.studentDAO.insertSelective(student);
    }

    @Override
    public Student selectByPrimaryKey(Integer student) {
        return this.studentDAO.selectByPrimaryKey(student);
    }

    @Override
    public int updateByPrimaryKeySelective(Student student) {
        return this.studentDAO.updateByPrimaryKeySelective(student);
    }

    @Override
    public int updateByPrimaryKey(Student student) {
        return this.studentDAO.updateByPrimaryKey(student);
    }

}

到此!已经完毕了spring+mybatis的组合,接下去继续实行springMVC的组成!

 

整合SpringMVC

 

 第一步:配置spring-mvc.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:p="http://www.springframework.org/schema/p"  
    xmlns:context="http://www.springframework.org/schema/context"  
    xmlns:mvc="http://www.springframework.org/schema/mvc"  
    xsi:schemaLocation="http://www.springframework.org/schema/beans    
                        http://www.springframework.org/schema/beans/spring-beans-3.1.xsd    
                        http://www.springframework.org/schema/context    
                        http://www.springframework.org/schema/context/spring-context-3.1.xsd    
                        http://www.springframework.org/schema/mvc    
                        http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">  
    <!-- 自动扫描该包,使SpringMVC认为包下用了@controller注解的类是控制器 -->  
   <context:component-scan base-package="com.sion.ssm.action" />  
   <!--避免IE执行AJAX时,返回JSON出现下载文件 -->  
   <bean id="mappingJacksonHttpMessageConverter"  
       class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">  
       <property name="supportedMediaTypes">  
           <list>  
               <value>text/html;charset=UTF-8</value>  
           </list>  
       </property>  
   </bean>  
   <!-- 启动SpringMVC的注解功能,完成请求和注解POJO的映射 -->  
   <bean  
       class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">  
       <property name="messageConverters">  
           <list>  
               <ref bean="mappingJacksonHttpMessageConverter" /> <!-- JSON转换器 -->  
           </list>  
       </property>  
   </bean>  
   <!-- 定义跳转的文件的前后缀 ,视图模式配置-->  
   <bean class="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="org.springframework.web.multipart.commons.CommonsMultipartResolver">    
       <!-- 默认编码 -->  
       <property name="defaultEncoding" value="utf-8" />    
       <!-- 文件大小最大值 -->  
       <property name="maxUploadSize" value="10485760000" />    
       <!-- 内存中的最大值 -->  
        <property name="maxInMemorySize" value="40960" />    
    </bean>   

</beans>  

第二步:配置web.xml文件

这里面临spring-mybatis.xml的引进以及配备的spring-mvc的Servlet即是为着完毕SSM整合,在此之前2框架整合没有须要在这里实行别的配置。配置一样有详尽注明,相当少解释了。

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>
  <!-- Spring和mybatis的配置文件 -->  
    <context-param>  
        <param-name>contextConfigLocation</param-name>  
        <param-value>classpath:spring-mybatis.xml</param-value>  
    </context-param>  
    <!-- 编码过滤器 -->  
    <filter>  
        <filter-name>encodingFilter</filter-name>  
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  
        <async-supported>true</async-supported>  
        <init-param>  
            <param-name>encoding</param-name>  
            <param-value>UTF-8</param-value>  
        </init-param>  
    </filter>  
    <filter-mapping>  
        <filter-name>encodingFilter</filter-name>  
        <url-pattern>/*</url-pattern>  
    </filter-mapping>  
    <!-- Spring监听器 -->  
    <listener>  
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
    </listener>  
    <!-- 防止Spring内存溢出监听器 -->  
    <listener>  
        <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>  
    </listener>  

    <!-- Spring MVC servlet -->  
    <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:spring-MVC.xml</param-value>  
        </init-param>  
        <load-on-startup>1</load-on-startup>  
        <async-supported>true</async-supported>  
    </servlet>  
    <servlet-mapping>  
        <servlet-name>SpringMVC</servlet-name>  
        <!-- 此处可以可以配置成*.do  *.action,对应struts的后缀习惯 -->  
        <url-pattern>*.action</url-pattern>  
    </servlet-mapping>  
    <welcome-file-list>  
        <welcome-file>/index.jsp</welcome-file>  
    </welcome-file-list>  
</web-app>

到此停止,基本上ssm整合已经做到!能够把品种布局到tomcat下运行,访谈localhost:8080/SSM,如若出现以下分界面,表达,恭喜您!马到成功!

图片 25

 

留下评论

网站地图xml地图