首页 > 编程语言 > 详细

Spring+SpringMVC+MyBatis+Maven框架整合

时间:2016-05-19 02:04:36      阅读:274      评论:0      收藏:0      [点我收藏+]

本文记录了Spring+SpringMVC+MyBatis+Maven框架整合的记录,主要记录以下几点?
一、Maven需要引入的jar包?
二、Spring与SpringMVC的配置分离?
三、Spring与MyBatis的整合?
一、Maven需要引入的jar包?
本文默认读者已经掌握Maven的使用,Maven配置片段如下?

Xml代码??bubuko.com,布布扣
  1. <!--?引入spring-webmvc与spring-jdbc?-->??
  2. <dependency>??
  3. ????<groupId>org.springframework</groupId>??
  4. ????<artifactId>spring-webmvc</artifactId>??
  5. ????<version>${springframework.version}</version>??
  6. </dependency>??
  7. <dependency>??
  8. ????<groupId>org.springframework</groupId>??
  9. ????<artifactId>spring-jdbc</artifactId>??
  10. ????<version>${springframework.version}</version>??
  11. </dependency>??
  12. <!--?引入mybatis与mybatis-spring整合包?-->??
  13. <dependency>??
  14. ????<groupId>org.mybatis</groupId>??
  15. ????<artifactId>mybatis</artifactId>??
  16. ????<version>${mybatis.version}</version>??
  17. </dependency>??
  18. <dependency>??
  19. ????<groupId>org.mybatis</groupId>??
  20. ????<artifactId>mybatis-spring</artifactId>??
  21. ????<version>${mybatis-spring.version}</version>??
  22. </dependency>??
  23. <!--?引入oracle数据库jdbc驱动包?-->??
  24. <dependency>??
  25. ????<groupId>com.oracle</groupId>??
  26. ????<artifactId>ojdbc14</artifactId>??
  27. ????<version>${oracle14.version}</version>??
  28. </dependency>??
  29. <!--?引入c3p0连接池依赖包?-->??
  30. <dependency>??
  31. ????<groupId>c3p0</groupId>??
  32. ????<artifactId>c3p0</artifactId>??
  33. ????<version>${c3p0.version}</version>??
  34. </dependency>??



二、Spring与SpringMVC的配置分离?

1、有必要说明一下,web.xml中配置的执行顺序获取【下载地址】? ?:?
listener>filter>servlet,而同一种配置片段则按照从上到下的顺序执行。?

2、web.xml的配置片段,下面的配置信息将Spring与SpringMVC的配置分别放到了applicationContext*.xml和springmvc-servlet.xml?

Xml代码??bubuko.com,布布扣
  1. <!--?配置spring-web上下文监听器?-->??
  2. <listener>??
  3. ????<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>??
  4. </listener>??
  5. <!--?配置需要读取的spring配置文件路径?-->??
  6. <!--?classpath*表示读取多个classpath?-->??
  7. <!--?applicationContext*表示匹配多个applicationContext开头的spring配置文件?-->??
  8. <context-param>??
  9. ????<param-name>contextConfigLocation</param-name>??
  10. ????<param-value>classpath*:applicationContext*.xml</param-value>??
  11. </context-param>??
  12. ??
  13. <!--?配置springmvc的DispatcherServlet,处理所有.do结尾的url?-->??
  14. <servlet>??
  15. ????<servlet-name>springmvc</servlet-name>??
  16. ????<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>??
  17. ????<!--?配置springmvc的配置文件路径?-->??
  18. ????<init-param>??
  19. ????????<param-name>contextConfigLocation</param-name>??
  20. ????????<param-value>classpath:springmvc-servlet.xml</param-value>??
  21. ????</init-param>??
  22. </servlet>??
  23. <servlet-mapping>??
  24. ????<servlet-name>springmvc</servlet-name>??
  25. ????<url-pattern>*.do</url-pattern>??
  26. </servlet-mapping>??
  27. ??
  28. <!--?配置springmvc编码拦截器?-->??
  29. <filter>??
  30. ????<filter-name>encodingFilter</filter-name>??
  31. ????<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>??
  32. ????<init-param>??
  33. ????????<param-name>encoding</param-name>??
  34. ????????<param-value>utf-8</param-value>??
  35. ????</init-param>??
  36. ????<init-param>??
  37. ????????<param-name>forceEncoding</param-name>??
  38. ????????<param-value>true</param-value>??
  39. ????</init-param>??
  40. </filter>??
  41. <filter-mapping>??
  42. ????<filter-name>encodingFilter</filter-name>??
  43. ????<url-pattern>/*</url-pattern>??
  44. </filter-mapping>??



3、springmvc的配置片段如下,springmvc-servlet.xml?

Xml代码??bubuko.com,布布扣
  1. <!--?自动扫描注解,只扫描的Controller注解,其它注解的扫描交给spring去处理?-->??
  2. <context:component-scan?base-package="org.jisonami.controller">??
  3. ????<context:include-filter?type="annotation"?expression="org.springframework.stereotype.Controller"/>??
  4. </context:component-scan>??
  5. <!--?配置springmvc的视图解析器?-->??
  6. <bean?id="viewResolver"?class="org.springframework.web.servlet.view.InternalResourceViewResolver"??
  7. p:prefix="/WEB-INF/content/"?p:suffix=".jsp">??
  8. </bean>??


4、目前本例中只是用了一个spring配置文件,即applicationContext.xml,如下:?
<!-- 自动扫描spring注解,排除springmvc已扫描的Controller注解 -->?

Xml代码??bubuko.com,布布扣
  1. <context:component-scan?base-package="org.jisonami">??
  2. ????<context:exclude-filter?type="annotation"?expression="org.springframework.stereotype.Controller"/>??
  3. </context:component-scan>??



5、关于spring配置文件中的xml头部:?

Xml代码??bubuko.com,布布扣
  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. ????xsi:schemaLocation="??
  7. ????????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">??



6、此时已经可以在代码中使用注解来配置spring的bean了,即如下形式的代码完成依赖注入:?

Java代码??bubuko.com,布布扣
  1. @Autowired??
  2. private?UserService?userService;??



三、Spring与MyBatis的整合?
1、MyBatis的使用主要是使用Mapper接口+Mapper.xml中写sql的方式来实现更灵活的dao层,这一部分在与spring整合之后是不变的?
而mybatis的全局配置文件则是SqlMapConfig.xml,也可以是其它的名字。?

2、整合之前,数据库的连接信息是在SqlMapConfig.xml中配置的,并且Mapper的扫描也是在SqlMapConfig.xml中配置的?
最麻烦的是我们完成crud操作的代码有比较多的冗余,即如下所示的形式:?

Java代码??bubuko.com,布布扣
  1. //?完成一个新增操作??
  2. InputStream?is?=?Resources.getResourceAsStream("SqlMapConfig.xml");??
  3. SqlSessionFactory?sessionFactory?=?new?SqlSessionFactoryBuilder().build(is);??
  4. SqlSession?session?=?sessionFactory.openSession();??
  5. UserMapper?userMapper?=?session.getMapper(UserMapper.class);??
  6. userMapper.save(user);??
  7. session.commit();??
  8. session.close();??



3、与spring整合的目的则是将SqlSessionFactory、SqlSession、UserMapper的创建和SqlSession的事物提交与关闭交给spring容器进行管理,?
实现只需要调用一行代码的效果,即?

Java代码??bubuko.com,布布扣
  1. userMapper.save(user);??



4、整合之后,数据库的连接信息与Mapper的扫描的配置片段直接移到applicationContext.xml中去了,完成SqlSessionFactory、SqlSession、UserMapper注入?
applicationContext.xml中mybatis的配置片段:?

Xml代码??bubuko.com,布布扣
  1. <!--?mybatis与spring整合?-->??
  2. <!--?加载数据库配置文件?-->??
  3. <context:property-placeholder?location="classpath:DBConfig.properties"/>??
  4. <!--?配置数据源,使用c3p0连接池?-->??
  5. <bean?id="dataSource"?class="com.mchange.v2.c3p0.ComboPooledDataSource"?destroy-method="close">??
  6. ????<property?name="driverClass"?value="${jdbc.driver}"></property>??
  7. ????<property?name="jdbcUrl"?value="${jdbc.url}"></property>??
  8. ????<property?name="user"?value="${jdbc.user}"></property>??
  9. ????<property?name="password"?value="${jdbc.pass}"></property>??
  10. </bean>??
  11. <!--?配置sqlSessionFactory?-->??
  12. <bean?id="sqlSessionFactory"?class="org.mybatis.spring.SqlSessionFactoryBean">??
  13. ????<property?name="configLocation"?value="classpath:SqlMapConfig.xml"?/>??
  14. ????<property?name="dataSource"?ref="dataSource"?/>??
  15. </bean>??
  16. <!--?扫描mapper接口?-->??
  17. <bean?class="org.mybatis.spring.mapper.MapperScannerConfigurer">??
  18. ????<property?name="basePackage"?value="org.jisonami.mybatis.mapper"></property>??
  19. ????<property?name="sqlSessionFactoryBeanName"?value="sqlSessionFactory"></property>??
  20. </bean>??



5、原来的SqlMapConfig.xml文件中只剩下寥寥几行配置信息,?

Xml代码??bubuko.com,布布扣
  1. <configuration>??
  2. ????<!--?给entity起别名,在mapper配置文件中写sql语句时会用到?-->??
  3. ????<typeAliases>??
  4. ????????<package?name="org.jisonami.entity"/>??
  5. ????</typeAliases>??
  6. </configuration>??



6、以UserMapper.xml配置片段为例,描述整合后的简洁编程方式?

Xml代码??bubuko.com,布布扣
  1. <!--?mapper的命名空间namespace是Mapper接口的全限定名?-->??
  2. <mapper?namespace="org.jisonami.mybatis.mapper.UserMapper">??
  3. ??
  4. ????<!--?id是唯一标识符,与Mapper接口的方法名保持一致,参数类型parameterType是参数类型的全限定名,这里使用的是别名?-->??
  5. ????<insert?id="save"?parameterType="User">??
  6. ????????<selectKey?keyColumn="id"?keyProperty="id"?resultType="String"?order="BEFORE">??
  7. ????????????select?sys_guid()?from?dual??
  8. ????????</selectKey>??
  9. ????????insert?into?t_user(id,?name,?password)?values(#{id},?#{name},?#{password})??
  10. ????</insert>??
  11. </mapper>??


UserMapper接口中的方法声明如下:?

Java代码??bubuko.com,布布扣
  1. public?interface?UserMapper?{??
  2. ????public?void?save(User?user);??
  3. }??


调用部分代码,直接注入UserMapper?

Java代码??bubuko.com,布布扣
  1. @Autowired??
  2. private?UserMapper?userMapper;??
  3. public?void?save(User?user)?{??
  4. ????userMapper.save(user);??
  5. }??

?

Spring+SpringMVC+MyBatis+Maven框架整合

原文:http://201605072609.iteye.com/blog/2298285

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!