继前一篇的例子http://www.cnblogs.com/EasonJim/p/7052388.html,已经集成了Spring框架,现在将改造成Spring MVC的项目,并实现如下功能:

1、不用每次都手动指定具体的XML文件,而是采用通配符自动查找XML文件,也是Mapping文件。

2、不用每次都手动指定实体文件,即POJOs,而是采用包名的形式指定最上层的包。

此次集成Spring MVC框架,主要需要用到以下文件:

1、web.xml:用于关联Spring的Servlet映射。

2、spring-mvc-servlet.xml:用于配置Spring的Servlet映射。

3、beans.xml:用于配置MyBatis与Spring结合的Beans映射。其中包括了数据库的具体连接,实体的映射包名查找,Mapping的XML文件的通配符查找等。

下面是具体的集成步骤:

1、项目整体结构:

2、POM依赖配置:

  1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  2. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  3. <modelVersion>4.0.0</modelVersion>
  4. <groupId>com.jsoft.testmybatis</groupId>
  5. <artifactId>test1</artifactId>
  6. <packaging>war</packaging>
  7. <version>0.0.1-SNAPSHOT</version>
  8. <name>test1 Maven Webapp</name>
  9. <url>http://maven.apache.org</url>
  10. <dependencies>
  11. <dependency>
  12. <groupId>junit</groupId>
  13. <artifactId>junit</artifactId>
  14. <version>3.8.1</version>
  15. <scope>test</scope>
  16. </dependency>
  17.  
  18. <!-- Servlet Library -->
  19. <!-- http://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
  20. <dependency>
  21. <groupId>javax.servlet</groupId>
  22. <artifactId>javax.servlet-api</artifactId>
  23. <version>3.1.0</version>
  24. <scope>provided</scope>
  25. </dependency>
  26. <!-- JSTL -->
  27. <!-- https://mvnrepository.com/artifact/org.apache.taglibs/taglibs-standard-impl -->
  28. <dependency>
  29. <groupId>org.apache.taglibs</groupId>
  30. <artifactId>taglibs-standard-impl</artifactId>
  31. <version>1.2.5</version>
  32. </dependency>
  33. <!-- https://mvnrepository.com/artifact/org.apache.taglibs/taglibs-standard-jstlel -->
  34. <dependency>
  35. <groupId>org.apache.taglibs</groupId>
  36. <artifactId>taglibs-standard-jstlel</artifactId>
  37. <version>1.2.5</version>
  38. </dependency>
  39. <!-- Spring Core -->
  40. <!-- http://mvnrepository.com/artifact/org.springframework/spring-core -->
  41. <dependency>
  42. <groupId>org.springframework</groupId>
  43. <artifactId>spring-core</artifactId>
  44. <version>4.1.4.RELEASE</version>
  45. </dependency>
  46. <!-- Spring Web -->
  47. <!-- http://mvnrepository.com/artifact/org.springframework/spring-web -->
  48. <dependency>
  49. <groupId>org.springframework</groupId>
  50. <artifactId>spring-web</artifactId>
  51. <version>4.1.4.RELEASE</version>
  52. </dependency>
  53. <!-- Spring Web MVC -->
  54. <!-- http://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
  55. <dependency>
  56. <groupId>org.springframework</groupId>
  57. <artifactId>spring-webmvc</artifactId>
  58. <version>4.1.4.RELEASE</version>
  59. </dependency>
  60. <!-- Spring Context -->
  61. <!-- http://mvnrepository.com/artifact/org.springframework/spring-context -->
  62. <dependency>
  63. <groupId>org.springframework</groupId>
  64. <artifactId>spring-context</artifactId>
  65. <version>4.1.4.RELEASE</version>
  66. </dependency>
  67. <!-- Spring JDBC -->
  68. <!-- http://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
  69. <dependency>
  70. <groupId>org.springframework</groupId>
  71. <artifactId>spring-jdbc</artifactId>
  72. <version>4.1.4.RELEASE</version>
  73. </dependency>
  74. <!-- mysql-connector-java -->
  75. <!-- http://mvnrepository.com/artifact/mysql/mysql-connector-java -->
  76. <dependency>
  77. <groupId>mysql</groupId>
  78. <artifactId>mysql-connector-java</artifactId>
  79. <version>5.1.38</version>
  80. </dependency>
  81. <!-- mybatis -->
  82. <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
  83. <dependency>
  84. <groupId>org.mybatis</groupId>
  85. <artifactId>mybatis</artifactId>
  86. <version>3.4.4</version>
  87. </dependency>
  88. <!-- mybatis-spring -->
  89. <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
  90. <dependency>
  91. <groupId>org.mybatis</groupId>
  92. <artifactId>mybatis-spring</artifactId>
  93. <version>1.3.1</version>
  94. </dependency>
  95. <!-- commons-dbcp -->
  96. <!-- https://mvnrepository.com/artifact/commons-dbcp/commons-dbcp -->
  97. <dependency>
  98. <groupId>commons-dbcp</groupId>
  99. <artifactId>commons-dbcp</artifactId>
  100. <version>1.4</version>
  101. </dependency>
  102.  
  103. </dependencies>
  104. <build>
  105. <finalName>test1</finalName>
  106.  
  107. <plugins>
  108. <!-- Config: Maven Tomcat Plugin -->
  109. <!-- http://mvnrepository.com/artifact/org.apache.tomcat.maven/tomcat7-maven-plugin -->
  110. <!-- http://tomcat.apache.org/maven-plugin-2.0/tomcat7-maven-plugin/plugin-info.html -->
  111. <plugin>
  112. <groupId>org.apache.tomcat.maven</groupId>
  113. <artifactId>tomcat7-maven-plugin</artifactId>
  114. <version>2.2</version>
  115. <!-- Config: contextPath and Port (Default:8080) -->
  116. <!-- <configuration>
  117. <path>/</path>
  118. <port>8899</port>
  119. </configuration> -->
  120. </plugin>
  121. <!-- Config: Maven Jetty Plugin -->
  122. <!-- http://mvnrepository.com/artifact/org.mortbay.jetty/jetty-maven-plugin -->
  123. <!-- http://www.eclipse.org/jetty/documentation/current/jetty-maven-plugin.html -->
  124. <plugin>
  125. <groupId>org.eclipse.jetty</groupId>
  126. <artifactId>jetty-maven-plugin</artifactId>
  127. <version>9.4.3.v20170317</version>
  128. <!-- Config: contextPath and Port (Default:8080) -->
  129. <!-- <configuration>
  130. <httpConnector>
  131. <port>8899</port>
  132. </httpConnector>
  133. <webAppConfig>
  134. <contextPath>/</contextPath>
  135. </webAppConfig>
  136. </configuration> -->
  137. </plugin>
  138. </plugins>
  139.  
  140. </build>
  141. </project>

3、web.xml配置:

  1. <web-app id="WebApp_ID" version="3.0"
  2. xmlns="http://java.sun.com/xml/ns/javaee"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
  5. http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
  6.  
  7. <display-name>Archetype Created Web Application</display-name>
  8.  
  9. <servlet>
  10. <servlet-name>spring-mvc</servlet-name>
  11. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  12. <!-- 默认:[servlet-name]-servlet.xml -->
  13. <!-- 通过初始化参数,指定xml文件的位置 -->
  14. <!-- <init-param>
  15. <param-name>contextConfigLocation</param-name>
  16. <param-value>/WEB-INF/helloworld-context.xml</param-value>
  17. </init-param> -->
  18. <load-on-startup>1</load-on-startup>
  19. </servlet>
  20.  
  21. <servlet-mapping>
  22. <servlet-name>spring-mvc</servlet-name>
  23. <url-pattern>/</url-pattern>
  24. </servlet-mapping>
  25.  
  26. <!-- 添加其它xml配置 -->
  27. <context-param>
  28. <param-name>contextConfigLocation</param-name>
  29. <param-value>classpath:beans.xml</param-value><!-- 映射beans,里面配置数据库连接信息以及MyBatis的映射文件 -->
  30. </context-param>
  31. <listener>
  32. <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  33. </listener>
  34.  
  35. </web-app>

4、spring-mvc-servlet.xml配置:

  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:p="http://www.springframework.org/schema/p"
  5. xmlns:context="http://www.springframework.org/schema/context"
  6. xmlns:mvc="http://www.springframework.org/schema/mvc"
  7. xsi:schemaLocation="http://www.springframework.org/schema/beans
  8. http://www.springframework.org/schema/beans/spring-beans.xsd
  9. http://www.springframework.org/schema/context
  10. http://www.springframework.org/schema/context/spring-context.xsd
  11. http://www.springframework.org/schema/mvc
  12. http://www.springframework.org/schema/mvc/spring-mvc.xsd">
  13.  
  14. <context:component-scan base-package="com.jsoft.testmybatis.controller" />
  15.  
  16. <context:annotation-config />
  17.  
  18. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  19. <property name="prefix">
  20. <value>/WEB-INF/jsp/</value>
  21. </property>
  22. <property name="suffix">
  23. <value>.jsp</value>
  24. </property>
  25. </bean>
  26.  
  27. </beans>

这里是常规的Web映射,没有相关的MyBatis配置。

5、beans.xml配置:

  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. xsi:schemaLocation="http://www.springframework.org/schema/beans
  5. http://www.springframework.org/schema/beans/spring-beans.xsd">
  6.  
  7. <!--采用DBCP连接池 -->
  8. <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
  9. <property name="driverClassName" value="com.mysql.jdbc.Driver" />
  10. <property name="url" value="jdbc:mysql://127.0.0.1:3306/Test?serverTimezone=UTC" />
  11. <property name="username" value="root" />
  12. <property name="password" value="root" />
  13. </bean>
  14.  
  15. <!-- 事务 -->
  16. <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  17. <property name="dataSource" ref="dataSource" />
  18. </bean>
  19.  
  20. <!-- 新建SessionFactonry -->
  21. <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  22. <!--dataSource属性指定要用到的连接池 -->
  23. <property name="dataSource" ref="dataSource" />
  24. <!--configLocation属性指定mybatis的核心配置文件 -->
  25. <property name="configLocation" value="classpath:Configuration.xml" />
  26. <!-- 所有配置的mapper文件 -->
  27. <property name="mapperLocations" value="classpath:com/jsoft/testmybatis/models/*.xml" />
  28. <!-- 所有的实体 -->
  29. <property name="typeAliasesPackage" value="com.jsoft.testmybatis.models"/>
  30. </bean>
  31.  
  32. <!-- 映射接口文件 -->
  33. <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  34. <property name="basePackage" value="com.jsoft.testmybatis.inter" />
  35. </bean>
  36.  
  37. </beans>

这里关联了MyBatis,并且通过<property name="mapperLocations" value="classpath:com/jsoft/testmybatis/models/*.xml" />实现通配符的查找,不用手动具体指定每一个XML文件,<property name="typeAliasesPackage" value="com.jsoft.testmybatis.models"/>这里通过顶层包名去查找下面的POJOs。

6、由上一节文章中配置的Configuration.xml文件,是具体指定了POJOs和XML文件的,但是这里就全部取消了,直接为空,留下日后需要配置MyBatis其它属性。

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

7、UserController.java,就是单纯的

  1. package com.jsoft.testmybatis.controller;
  2.  
  3. import java.util.List;
  4.  
  5. import javax.servlet.http.HttpServletRequest;
  6. import javax.servlet.http.HttpServletResponse;
  7.  
  8. import org.springframework.beans.factory.annotation.Autowired;
  9. import org.springframework.stereotype.Controller;
  10. import org.springframework.web.bind.annotation.RequestMapping;
  11. import org.springframework.web.servlet.ModelAndView;
  12.  
  13. import com.jsoft.testmybatis.inter.IUserOperation;
  14. import com.jsoft.testmybatis.models.Article;
  15.  
  16. @Controller
  17. @RequestMapping("/article")
  18. public class UserController {
  19. @Autowired
  20. IUserOperation userMapper;
  21.  
  22. @RequestMapping("/list")
  23. public ModelAndView listall(HttpServletRequest request,HttpServletResponse response){
  24. List<Article> articles=userMapper.getUserArticles(1);
  25. ModelAndView mav=new ModelAndView("/article/list");
  26. mav.addObject("articles",articles);
  27. return mav;
  28. }
  29. }

这里需要说明的就是基于Spring的@Autowired注解,其实是beans.xml中配置的<property name="basePackage" value="com.jsoft.testmybatis.inter" />的作用,通过顶层包进行查找接口文件,然后标有@Autowired注解的属性会自动查找并装配。

8、list.jsp,Web页面,通过JSTL标签进行数据输出:

  1. <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" isELIgnored="false"%>
  2. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  4. <html>
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  7. <title>Insert title here</title>
  8. </head>
  9. <body>
  10. <c:forEach items="${articles}" var="item">
  11. ${item.id }--${item.title }--${item.content }<br />
  12. </c:forEach>
  13. </body>
  14. </html>

9、最后通过POM内置的Tomcat组件运行,命令如下:

  1. mvn tomcat7:run

测试数据结果:

测试工程:https://github.com/easonjim/5_java_example/tree/master/mybatis/test6

参考:

http://www.yihaomen.com/article/java/318.htm

MyBatis3-与Spring MVC 4集成的更多相关文章

  1. mybatis实战教程(mybatis in action)之六:与Spring MVC 的集成

    前面几篇文章已经讲到了mybatis与spring 的集成.但这个时候,所有的工程还不是web工程,虽然我一直是创建的web 工程.今天将直接用mybatis与Spring mvc 的方式集成起来,源 ...

  2. spring mvc mybatis集成踩的坑

    开园这么多年了也没写几篇文章,现在想想光看别人的也不行啊,咱也自己写写,就写这天我我在做spring mvc与mybatis的集成时遇到的问题 1 spring与mybatis的集成 这个相信大家都弄 ...

  3. mybatis :与Spring MVC 的集成

    用mybatis与Spring mvc 的方式集成起来,源码在本文结尾处下载.主要有以下几个方面的配置1. web.xml 配置 spring dispatchservlet ,比如为:mvc-dis ...

  4. Mybatis学习(6)与Spring MVC 的集成

    前面几篇文章已经讲到了mybatis与spring 的集成.但这个时候,所有的工程还不是web工程,虽然我一直是创建的web 工程.今天将直接用mybatis与Spring mvc 的方式集成起来,源 ...

  5. Java Spring MVC项目搭建(一)——Spring MVC框架集成

    1.Java JDK及Tomcat安装 我这里安装的是JDK 1.8 及 Tomcat 8,安装步骤详见:http://www.cnblogs.com/eczhou/p/6285248.html 2. ...

  6. Spring MVC 急速集成 Shiro 实录

    相信有很多的程序员,不愿意进行用户管理这块代码实现. 原因之一,不同的JavaEE 系统,用户管理都会有个性化的实现,逻辑很繁琐. 而且是系统门面,以后背锅的几率非常大,可谓是低收益高风险. 最近在系 ...

  7. springboot (spring mvc)集成swagger

    最近用springboot构建rest接口,考虑到最方便的验证接口,想到了引入swagger. 基本的步骤大致如下: 1.pom中引入swagger依赖: <dependency> < ...

  8. 改造继续之eclipse集成tomcat开发spring mvc项目配置一览

    在上一篇的环境配置中,你还只能基于maven开发一个javase的项目,本篇来看如果开发一个web项目,所以还得配置一下tomcat和spring mvc. 一:Tomcat安装 在.net web开 ...

  9. Spring MVC集成Swagger

    什么是Swagger? 大部分 Web 应用程序都支持 RESTful API,但不同于 SOAP API——REST API 依赖于 HTTP 方法,缺少与 Web 服务描述语言(Web Servi ...

  10. spring mvc集成freemarker使用

    freemarker作为视图技术出现的比velocity早,想当年struts风靡一时,freemarker作为视图层也风光了一把.但现在velocity作为后起之秀的轻量级模板引擎,更容易得到青睐. ...

随机推荐

  1. 【移动支付】.NET微信扫码支付接入(模式二-NATIVE)

    一.前言       经过两三天的琢磨总算完成了微信扫码支付功能,不得不感叹几句: 微信提供的DEMO不错,直接复制粘贴就可以跑起来了: 微信的配置平台我真是服了.公众平台.商户平台.开放平台,一个平 ...

  2. 浴谷八连测R4题解

    一开始出了点bug能看见排行榜,于是我看见我半个小时就A掉了前两题,信心场QAQ T1字符串题就不说了qwq #include<iostream> #include<cstring& ...

  3. 【bzoj4212】神牛的养成计划

    Portal --> bzoj4212 Description ​ 给你\(n\)个字符串,接下来有\(m\)个询问,每个询问由两个给定的字符串\(s_1\)和\(s_2\)组成,对于每个询问输 ...

  4. Spring MVC入门示例

    1.新建一个Java Web项目 2.导入jar包 3.在WEB-INF下面建一个hello.jsp页面. <%@ page language="java" import=& ...

  5. 协程-遇到I/O自动切换

    参考博客:http://www.cnblogs.com/alex3714/articles/5248247.html 一.前言 Gevent 是一个第三方库,可以轻松通过gevent实现并发同步或异步 ...

  6. jQuery常用插件大全

    1.五星级插件jRating 详细文档介绍:http://www.myjqueryplugins.com/jquery-plugin/jrating 2.图片展示插件Swiper和Slider swi ...

  7. JPA映射持久化对象(Entity)

    推荐阅读:JPA criteria 查询:类型安全与面向对象 来源: http://blog.sina.com.cn/s/blog_49fd52cf0100rzjn.html 一个普通的POJO类通过 ...

  8. spring mvc入门配置

    现在主流的Web MVC框架除了Struts这个主力 外,其次就是Spring MVC了,因此这也是作为一名程序员需要掌握的主流框架,框架选择多了,应对多变的需求和业务时,可实行的方案自然就多了.不过 ...

  9. NOIP模拟4

    期望得分:20+100+100=220 实际得分:20+100+100=220 特判相离.内含 对于两圆相交的情况,一直在考虑求交点 实际上相交的面积可以用两个扇形减去两个三角形 正弦定理.余弦定理来 ...

  10. 洛谷 P2345 奶牛集会

    https://www.luogu.org/problem/show?pid=2345 题目描述 约翰的N 头奶牛每年都会参加“哞哞大会”.哞哞大会是奶牛界的盛事.集会上的活动很 多,比如堆干草,跨栅 ...