Spring、SpringMVC与Mybatis整合工程的搭建

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wjycgl/article/details/80838311


小编前段时间写了一篇ssm框架整合的教程,并添加了Mybatis通用mapper插件,整个ssm三大框架(Spring+SpringMVC+Mybatis)整合过程太复杂,步骤比较多,而且还有一些重复的配置,如果有兴趣,可以分别学习ssm框架的整合,如下所示:

最容易的ssm三大框架整合(spring+springmvc+mybatis)教程

ssm框架使用通用Mapper和BaseService

mybatis generator插件maven自动生成dao,model,mapper

所以这次将这ssm三大框架的整合进行了大量的优化与缩减,学习起来就非常容易了,步骤也会少很多,也比较科学,那么我们该如何整合ssm框架呢?先看小编的目录:

1:添加mysql数据库连接信息与log4j日志配置

2:添加mybatis分页助手

3:mybatis与spring整合,并添加mysql datasource数据源,以及配置事务管理器

4:配置springmvc视图控制器

5:在web.xml中配置启动spring,并加载springmvc

先看看小编的项目分包结构吧,这样比较容易理解整个ssm框架的整合过程了:

让我们开始学习如何整合SSM框架吧!

开始之前请加入ssm框架所需要的所有jar包,如下:


   
   
  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/xsd/maven-4.0.0.xsd">
  3.    <modelVersion>4.0.0 </modelVersion>
  4.    <groupId>com.voavoice </groupId>
  5.    <artifactId>english </artifactId>
  6.    <version>0.0.1-SNAPSHOT </version>
  7.    <packaging>war </packaging>
  8. <!-- 集中定义依赖版本号 -->
  9. <properties>
  10.    <junit.version>4.10 </junit.version>
  11.    <spring.version>4.1.3.RELEASE </spring.version>
  12.    <mybatis.version>3.2.8 </mybatis.version>
  13.    <mybatis.spring.version>1.2.2 </mybatis.spring.version>
  14.    <mybatis.paginator.version>1.2.15 </mybatis.paginator.version>
  15.    <mysql.version>5.1.32 </mysql.version>
  16.    <slf4j.version>1.6.4 </slf4j.version>
  17.    <druid.version>1.0.9 </druid.version>
  18.    <jolbox.version>0.8.0.RELEASE </jolbox.version>
  19.    <httpclient.version>4.3.5 </httpclient.version>
  20.    <jstl.version>1.2 </jstl.version>
  21.    <servlet-api.version>2.5 </servlet-api.version>
  22.    <jsp-api.version>2.0 </jsp-api.version>
  23.    <mapper.version>2.3.4 </mapper.version>
  24.    <pagehelper.version>3.7.5 </pagehelper.version>
  25.    <jsqlparser.version>0.9.1 </jsqlparser.version>
  26.    <joda-time.version>2.5 </joda-time.version>
  27.    <commons-lang3.version>3.3.2 </commons-lang3.version>
  28.    <commons-io.version>1.3.2 </commons-io.version>
  29.    <commons-fileupload.version>1.3.2 </commons-fileupload.version>
  30.    <commons-codec.version>1.9 </commons-codec.version>
  31.    <hibernate-validator.version>5.1.3.Final </hibernate-validator.version>
  32.   </properties>
  33.  
  34.    <dependencies>
  35.     <!-- 单元测试 -->
  36.     <dependency>
  37.      <groupId>junit </groupId>
  38.      <artifactId>junit </artifactId>
  39.      <version>${junit.version} </version>
  40.      <scope>test </scope>
  41.     </dependency>
  42.     <!-- Spring -->
  43.     <dependency>
  44.      <groupId>org.springframework </groupId>
  45.      <artifactId>spring-context </artifactId>
  46.      <version>${spring.version} </version>
  47.     </dependency>
  48.     <dependency>
  49.      <groupId>org.springframework </groupId>
  50.      <artifactId>spring-beans </artifactId>
  51.      <version>${spring.version} </version>
  52.     </dependency>
  53.     <dependency>
  54.      <groupId>org.springframework </groupId>
  55.      <artifactId>spring-webmvc </artifactId>
  56.      <version>${spring.version} </version>
  57.     </dependency>
  58.     <dependency>
  59.      <groupId>org.springframework </groupId>
  60.      <artifactId>spring-jdbc </artifactId>
  61.      <version>${spring.version} </version>
  62.     </dependency>
  63.     <dependency>
  64.      <groupId>org.springframework </groupId>
  65.      <artifactId>spring-aspects </artifactId>
  66.      <version>${spring.version} </version>
  67.     </dependency>
  68.     <!-- Mybatis -->
  69.     <dependency>
  70.      <groupId>org.mybatis </groupId>
  71.      <artifactId>mybatis </artifactId>
  72.      <version>${mybatis.version} </version>
  73.     </dependency>
  74.     <dependency>
  75.      <groupId>org.mybatis </groupId>
  76.      <artifactId>mybatis-spring </artifactId>
  77.      <version>${mybatis.spring.version} </version>
  78.     </dependency>
  79.     <!-- 通用Mapper -->
  80.     <dependency>
  81.      <groupId>com.github.abel533 </groupId>
  82.      <artifactId>mapper </artifactId>
  83.      <version>${mapper.version} </version>
  84.     </dependency>
  85.    
  86.     <!-- 分页助手 -->
  87.     <dependency>
  88.      <groupId>com.github.pagehelper </groupId>
  89.      <artifactId>pagehelper </artifactId>
  90.      <version>${pagehelper.version} </version>
  91.     </dependency>
  92.     <dependency>
  93.      <groupId>com.github.jsqlparser </groupId>
  94.      <artifactId>jsqlparser </artifactId>
  95.      <version>${jsqlparser.version} </version>
  96.     </dependency>
  97.     <!-- MySql -->
  98.     <dependency>
  99.      <groupId>mysql </groupId>
  100.      <artifactId>mysql-connector-java </artifactId>
  101.      <version>${mysql.version} </version>
  102.     </dependency>
  103.     <!-- 日志 -->
  104.     <dependency>
  105.      <groupId>org.slf4j </groupId>
  106.      <artifactId>slf4j-log4j12 </artifactId>
  107.      <version>${slf4j.version} </version>
  108.     </dependency>
  109.     <dependency>
  110.      <groupId>com.jolbox </groupId>
  111.      <artifactId>bonecp-spring </artifactId>
  112.      <version>${jolbox.version} </version>
  113.     </dependency>
  114.    
  115.     <!-- httpclient -->
  116.     <dependency>
  117.      <groupId>org.apache.httpcomponents </groupId>
  118.      <artifactId>httpclient </artifactId>
  119.      <version>${httpclient.version} </version>
  120.     </dependency>
  121.     <!-- JSP相关 -->
  122.     <dependency>
  123.      <groupId>jstl </groupId>
  124.      <artifactId>jstl </artifactId>
  125.      <version>${jstl.version} </version>
  126.     </dependency>
  127.     <dependency>
  128.      <groupId>javax.servlet </groupId>
  129.      <artifactId>servlet-api </artifactId>
  130.      <version>${servlet-api.version} </version>
  131.      <scope>provided </scope>
  132.     </dependency>
  133.     <dependency>
  134.      <groupId>javax.servlet </groupId>
  135.      <artifactId>jsp-api </artifactId>
  136.      <version>${jsp-api.version} </version>
  137.      <scope>provided </scope>
  138.     </dependency>
  139.     <!-- 时间操作组件 -->
  140.     <dependency>
  141.      <groupId>joda-time </groupId>
  142.      <artifactId>joda-time </artifactId>
  143.      <version>${joda-time.version} </version>
  144.     </dependency>
  145.     <!-- Apache工具组件 -->
  146.     <dependency>
  147.      <groupId>org.apache.commons </groupId>
  148.      <artifactId>commons-lang3 </artifactId>
  149.      <version>${commons-lang3.version} </version>
  150.     </dependency>
  151.     <dependency>
  152.      <groupId>org.apache.commons </groupId>
  153.      <artifactId>commons-io </artifactId>
  154.      <version>${commons-io.version} </version>
  155.     </dependency>
  156.     <dependency>
  157.      <groupId>commons-fileupload </groupId>
  158.      <artifactId>commons-fileupload </artifactId>
  159.      <version>${commons-fileupload.version} </version>
  160. </dependency>
  161.     <!-- 加密解密 -->
  162.     <dependency>
  163.      <groupId>commons-codec </groupId>
  164.      <artifactId>commons-codec </artifactId>
  165.      <version>${commons-codec.version} </version>
  166.     </dependency>
  167.     <!-- 数据校验 -->
  168.     <dependency>
  169.      <groupId>org.hibernate </groupId>
  170.      <artifactId>hibernate-validator </artifactId>
  171.      <version>${hibernate-validator.version} </version>
  172.     </dependency>
  173. <dependency>
  174.   <groupId>com.alibaba </groupId>
  175.   <artifactId>fastjson </artifactId>
  176.   <version>1.2.38 </version>
  177. </dependency>
  178.    </dependencies>
  179.    <build>
  180. <finalName>english </finalName>
  181. <plugins>
  182. <plugin>
  183.      <groupId>org.apache.tomcat.maven </groupId>
  184.      <artifactId>tomcat7-maven-plugin </artifactId>
  185.      <version>2.2 </version>
  186. <configuration>
  187. <port>8080 </port>
  188. <path>/ </path>
  189. <uriEncoding>UTF-8 </uriEncoding>
  190. </configuration>
  191. </plugin>
  192. </plugins>
  193. </build>
  194. </project>

步骤一:在项目的resources目录下添加jdbc.properties配置,用于配置数据库连接信息,代码如下:


   
   
  1. jdbc.driver=com.mysql.jdbc.Driver
  2. jdbc.url=jdbc:mysql://125.256.217.215:3306/voa?useUnicode=true&characterEncoding=utf8&autoReconnect=true&allowMultiQueries=true
  3. jdbc.username=root
  4. jdbc.password=root
  5. jdbc.idleConnection=60
  6. jdbc.idleMaxAge=30
  7. jdbc.maxConnectionNum=200
  8. jdbc.minConnectionNum=5

为了能正常操作数据库,记录服务器的log日志,需要添加log4j.properties日志信息文件,代码如下:


   
   
  1. # Configure logging for testing: optionally with log file
  2. log4j.rootLogger=WARN, stdout
  3. # log4j.rootLogger=WARN, stdout, logfile
  4. log4j.appender.stdout=org.apache.log4j.ConsoleAppender
  5. log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
  6. log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - %m%n
  7. log4j.appender.logfile=org.apache.log4j.FileAppender
  8. log4j.appender.logfile.File=target/spring.log
  9. log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
  10. log4j.appender.logfile.layout.ConversionPattern=%d %p [%c] - %m%n

步骤二:添加mybatis的相关配置,例如mybatis通用mapper插件与pageHelper分页助手等,新建mybatis-config.xml文件,代码如下:


   
   
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE configuration
  3.   PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  4.   "http://mybatis.org/dtd/mybatis-3-config.dtd">
  5. <configuration>
  6. <!-- 引入外部资源配置文件 -->
  7. <!-- <properties resource="jdbc.properties" /> -->
  8. <plugins>
  9. <!-- 分页助手 -->
  10. <plugin interceptor="com.github.pagehelper.PageHelper">
  11. <property name="dialect" value="mysql" />
  12. <!-- 设置为true时,使用RowBounds分页会进行count查询 -->
  13. <property name="rowBoundsWithCount" value="true" />
  14. </plugin>
  15. <!-- 通用mapper插件 -->
  16. <plugin interceptor="com.github.abel533.mapperhelper.MapperInterceptor">
  17. <!--主键自增回写方法,默认值MYSQL,详细说明请看文档 -->
  18. <property name="IDENTITY" value="mysql" />
  19. <!--通用Mapper接口,多个通用接口用逗号隔开 -->
  20. <property name="mappers" value="com.github.abel533.mapper.Mapper" />
  21. </plugin>
  22. </plugins>
  23. </configuration>

步骤三:spring与mybatis整合,添加mybatis数据源,并配置数据库事务回滚等,用于出错时回滚数据,新建spring-context.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"  xmlns:p= "http://www.springframework.org/schema/p"
  4. xmlns:context= "http://www.springframework.org/schema/context"
  5. xmlns:aop= "http://www.springframework.org/schema/aop"
  6. xmlns:tx= "http://www.springframework.org/schema/tx"
  7. xsi:schemaLocation= "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
  8.         http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
  9.         http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd 
  10.         http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
  11. <!-- 使用spring自带的占位符替换功能 -->
  12. <bean
  13. class= "org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  14. <!-- 允许JVM参数覆盖 -->
  15. <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
  16. <!-- 忽略没有找到的资源文件 -->
  17. <property name="ignoreResourceNotFound" value="true" />
  18. <!-- 加载数据库资源文件 -->
  19. <property name="locations">
  20. <list>
  21. <value>classpath:jdbc.properties </value>
  22. </list>
  23. </property>
  24. </bean>
  25. <!-- 扫描基本包 -->
  26. <context:component-scan base-package="com.voavoice.english" />
  27. <bean id="dataSource" class="com.jolbox.bonecp.BoneCPDataSource"
  28. destroy-method= "close">
  29. <!-- 数据库驱动 -->
  30. <property name="driverClass" value="${jdbc.driver}" />
  31. <!-- 相应驱动的jdbcUrl -->
  32. <property name="jdbcUrl" value="${jdbc.url}" />
  33. <!-- 数据库的用户名 -->
  34. <property name="username" value="${jdbc.username}" />
  35. <!-- 数据库的密码 -->
  36. <property name="password" value="${jdbc.password}" />
  37. <!-- 检查数据库连接池中空闲连接的间隔时间,单位是分,默认值:240,如果要取消则设置为0 -->
  38. <property name="idleConnectionTestPeriod" value="${jdbc.idleConnection}" />
  39. <!-- 连接池中未使用的链接最大存活时间,单位是分,默认值:60,如果要永远存活设置为0 -->
  40. <property name="idleMaxAge" value="${jdbc.idleMaxAge}" />
  41. <!-- 每个分区最大的连接数 -->
  42. <property name="maxConnectionsPerPartition" value="${jdbc.maxConnectionNum}" />
  43. <!-- 每个分区最小的连接数 -->
  44. <property name="minConnectionsPerPartition" value="${jdbc.minConnectionNum}" />
  45. </bean>
  46. <!-- sqlSessionFactory配置 -->
  47. <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  48. <!-- 配置数据源 -->
  49. <property name="dataSource" ref="dataSource"/>
  50. <!-- 扫描mybatis全局文件 -->
  51. <property name="configLocation" value="classpath:mybatis/mybatis-config.xml"/>
  52. <!-- 扫描mapper映射文件 -->
  53. <property name="mapperLocations" value="classpath:mapper/*.xml"/>
  54. <!-- 配置别名包扫描,实体类 -->
  55. <property name="typeAliasesPackage" value="com.voavoice.english.entity"/>
  56. </bean>
  57. <!-- 扫描mapper接口文件-->
  58. <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
  59. <property name="basePackage" value="com.voavoice.english.dao"/>
  60. </bean>
  61. <!-- 定义事务管理器 -->
  62. <bean id="transactionManager"
  63. class= "org.springframework.jdbc.datasource.DataSourceTransactionManager">
  64. <property name="dataSource" ref="dataSource" />
  65. </bean>
  66. <!-- 定义事务策略 -->
  67. <tx:advice id="txAdvice" transaction-manager="transactionManager">
  68. <tx:attributes>
  69. <!--所有以query开头的方法都是只读的 -->
  70. <tx:method name="query*" read-only="true" />
  71. <tx:method name="get*" read-only="true" />
  72. <tx:method name="find*" read-only="true" />
  73. <tx:method name="select*" read-only="true" />
  74. <!--其他方法使用默认事务策略 -->
  75. <tx:method name="*" rollback-for="Throwable"/>
  76. </tx:attributes>
  77. </tx:advice>
  78. <aop:config>
  79. <aop:pointcut id="myPointcut" expression="execution(* com.voavoice.english.service.*.*(..))" />
  80. <!--将定义好的事务处理策略应用到上述的切入点 -->
  81. <aop:advisor advice-ref="txAdvice" pointcut-ref="myPointcut" />
  82. </aop:config>
  83. </beans>

步骤四:配置springmvc视图控制器,用于前端界面跳转时寻找jsp文件,以及controller接口的扫描,新建spring-mvc.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"  xmlns:p= "http://www.springframework.org/schema/p"
  4. xmlns:context= "http://www.springframework.org/schema/context"
  5. xmlns:mvc= "http://www.springframework.org/schema/mvc"
  6. xsi:schemaLocation= "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
  7.         http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
  8.         http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
  9. <!-- 注解驱动 -->
  10. <mvc:annotation-driven/>
  11. <!-- 描述conctroller -->
  12. <context:component-scan base-package="com.voavoice.english.controller"/>
  13. <!-- 视图解释器 -->
  14. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  15. <!-- 前缀 -->
  16. <property name="prefix" value="/WEB-INF/views/"/>
  17. <!-- 后缀 -->
  18. <property name="suffix" value=".jsp"/>
  19. </bean>
  20. <!-- 定义图片解释器 -->
  21. <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">  
  22. <!-- 设置默认编码 -->
  23. <property name="defaultEncoding" value="utf-8"> </property>
  24. <!-- 上传图片最大大小5M--> 
  25. <property name="maxUploadSize" value="52424400"> </property>  
  26. </bean>  
  27. </beans>

步骤五:在web.xml文件中加载spring-context.xml,并启动springmvc控制器,配置如下:


   
   
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3.           xmlns= "http://java.sun.com/xml/ns/javaee"
  4.           xsi:schemaLocation= "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  5.           id= "WebApp_ID"  version= "3.0">
  6. <!-- 启动spring -->
  7. <context-param>
  8. <param-name>contextConfigLocation </param-name>
  9. <param-value>classpath:spring/spring-context.xml </param-value>
  10. </context-param>
  11. <!-- applicationContext -->
  12. <listener>
  13. <listener-class>org.springframework.web.context.ContextLoaderListener </listener-class>
  14. </listener>
  15. <!-- 编码过滤器,以UTF8编码 -->
  16. <filter>
  17. <filter-name>encodingFilter </filter-name>
  18. <filter-class>org.springframework.web.filter.CharacterEncodingFilter </filter-class>
  19. <init-param>
  20. <param-name>encoding </param-name>
  21. <param-value>UTF8 </param-value>
  22. </init-param>
  23. </filter>
  24. <filter-mapping>
  25. <filter-name>encodingFilter </filter-name>
  26. <url-pattern>/* </url-pattern>
  27. </filter-mapping>
  28. <!-- 加载springMVC -->
  29. <servlet>
  30. <servlet-name>english </servlet-name>
  31. <servlet-class>org.springframework.web.servlet.DispatcherServlet </servlet-class>
  32. <init-param>
  33. <param-name>contextConfigLocation </param-name>
  34. <param-value>classpath:spring/spring-mvc.xml </param-value>
  35. </init-param>
  36. <load-on-startup>1 </load-on-startup>
  37. </servlet>
  38. <servlet-mapping>
  39. <servlet-name>english </servlet-name>
  40. <url-pattern>/* </url-pattern>
  41. </servlet-mapping>
  42.      <welcome-file-list>
  43.      <welcome-file>index.jsp </welcome-file>
  44.      </welcome-file-list>
  45. </web-app>

在eclipse中使用maven的“tomcat7:run”命令启动tomcat即可成功启动,如果要测试mysql数据库是否连接成功,可以参考spring junit的测试是否能正常连接数据库,并插入一条数据到mysql表中,参考链接:springmvc+spring+junit4单元测试案例

来源网站:太平洋学习网,转载请注明出处: http://www.tpyyes.com/a/javaweb/2018/0621/638.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值