`

Spring+SpringMVC+MyBatis+Maven框架整合

阅读更多
本文记录了Spring+SpringMVC+MyBatis+Maven框架整合的记录,主要记录以下几点
一、Maven需要引入的jar包
二、Spring与SpringMVC的配置分离
三、Spring与MyBatis的整合

一、Maven需要引入的jar包
本文默认读者已经掌握Maven的使用,Maven配置片段如下
<!-- 引入spring-webmvc与spring-jdbc -->
<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-webmvc</artifactId>
	<version>${springframework.version}</version>
</dependency>
<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-jdbc</artifactId>
	<version>${springframework.version}</version>
</dependency>
<!-- 引入mybatis与mybatis-spring整合包 -->
<dependency>
	<groupId>org.mybatis</groupId>
	<artifactId>mybatis</artifactId>
	<version>${mybatis.version}</version>
</dependency>
<dependency>
	<groupId>org.mybatis</groupId>
	<artifactId>mybatis-spring</artifactId>
	<version>${mybatis-spring.version}</version>
</dependency>
<!-- 引入oracle数据库jdbc驱动包 -->
<dependency>
	<groupId>com.oracle</groupId>
	<artifactId>ojdbc14</artifactId>
	<version>${oracle14.version}</version>
</dependency>
<!-- 引入c3p0连接池依赖包 -->
<dependency>
	<groupId>c3p0</groupId>
	<artifactId>c3p0</artifactId>
	<version>${c3p0.version}</version>
</dependency>


二、Spring与SpringMVC的配置分离

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

2、web.xml的配置片段,下面的配置信息将Spring与SpringMVC的配置分别放到了applicationContext*.xml和springmvc-servlet.xml
<!-- 配置spring-web上下文监听器 -->
<listener>
	<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 配置需要读取的spring配置文件路径 -->
<!-- classpath*表示读取多个classpath -->
<!-- applicationContext*表示匹配多个applicationContext开头的spring配置文件 -->
<context-param>
	<param-name>contextConfigLocation</param-name>
	<param-value>classpath*:applicationContext*.xml</param-value>
</context-param>

<!-- 配置springmvc的DispatcherServlet,处理所有.do结尾的url -->
<servlet>
	<servlet-name>springmvc</servlet-name>
	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
	<!-- 配置springmvc的配置文件路径 -->
	<init-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:springmvc-servlet.xml</param-value>
	</init-param>
</servlet>
<servlet-mapping>
	<servlet-name>springmvc</servlet-name>
	<url-pattern>*.do</url-pattern>
</servlet-mapping>

<!-- 配置springmvc编码拦截器 -->
<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>


3、springmvc的配置片段如下,springmvc-servlet.xml
<!-- 自动扫描注解,只扫描的Controller注解,其它注解的扫描交给spring去处理 -->
<context:component-scan base-package="org.jisonami.controller">
	<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
<!-- 配置springmvc的视图解析器 -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"
p:prefix="/WEB-INF/content/" p:suffix=".jsp">
</bean>

4、目前本例中只是用了一个spring配置文件,即applicationContext.xml,如下:
<!-- 自动扫描spring注解,排除springmvc已扫描的Controller注解 -->
<context:component-scan base-package="org.jisonami">
	<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>


5、关于spring配置文件中的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"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context.xsd">


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


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

2、整合之前,数据库的连接信息是在SqlMapConfig.xml中配置的,并且Mapper的扫描也是在SqlMapConfig.xml中配置的
最麻烦的是我们完成crud操作的代码有比较多的冗余,即如下所示的形式:
// 完成一个新增操作
InputStream is = Resources.getResourceAsStream("SqlMapConfig.xml");
SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(is);
SqlSession session = sessionFactory.openSession();
UserMapper userMapper = session.getMapper(UserMapper.class);
userMapper.save(user);
session.commit();
session.close();


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


4、整合之后,数据库的连接信息与Mapper的扫描的配置片段直接移到applicationContext.xml中去了,完成SqlSessionFactory、SqlSession、UserMapper注入
applicationContext.xml中mybatis的配置片段:
<!-- mybatis与spring整合 -->
<!-- 加载数据库配置文件 -->
<context:property-placeholder location="classpath:DBConfig.properties"/>
<!-- 配置数据源,使用c3p0连接池 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
	<property name="driverClass" value="${jdbc.driver}"></property>
	<property name="jdbcUrl" value="${jdbc.url}"></property>
	<property name="user" value="${jdbc.user}"></property>
	<property name="password" value="${jdbc.pass}"></property>
</bean>
<!-- 配置sqlSessionFactory -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
	<property name="configLocation" value="classpath:SqlMapConfig.xml" />
	<property name="dataSource" ref="dataSource" />
</bean>
<!-- 扫描mapper接口 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
	<property name="basePackage" value="org.jisonami.mybatis.mapper"></property>
	<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
</bean>


5、原来的SqlMapConfig.xml文件中只剩下寥寥几行配置信息,
<configuration>
	<!-- 给entity起别名,在mapper配置文件中写sql语句时会用到 -->
	<typeAliases>
		<package name="org.jisonami.entity"/>
	</typeAliases>
</configuration>


6、以UserMapper.xml配置片段为例,描述整合后的简洁编程方式
<!-- mapper的命名空间namespace是Mapper接口的全限定名 -->
<mapper namespace="org.jisonami.mybatis.mapper.UserMapper">

	<!-- id是唯一标识符,与Mapper接口的方法名保持一致,参数类型parameterType是参数类型的全限定名,这里使用的是别名 -->
	<insert id="save" parameterType="User">
		<selectKey keyColumn="id" keyProperty="id" resultType="String" order="BEFORE">
			select sys_guid() from dual
		</selectKey>
		insert into t_user(id, name, password) values(#{id}, #{name}, #{password})
	</insert>
</mapper>

UserMapper接口中的方法声明如下:
public interface UserMapper {
	public void save(User user);
}

调用部分代码,直接注入UserMapper
@Autowired
private UserMapper userMapper;
public void save(User user) {
	userMapper.save(user);
}


至此,Spring+SpringMVC+MyBatis+Maven框架整合就完成了,更详细的代码参考我的github项目Jisonami2的0.0.x版本
https://github.com/jisonami/Jisonami2/tree/0.0.x
1
0
分享到:
评论
2 楼 15882967370 2016-05-04  
1 楼 7454103 2016-05-03  

相关推荐

    SpringMvc+Spring+Mybatis+Maven整合.part10

    通过SpringMvc+Spring+Mybatis+Maven整合,学习用maven搭建框架

    spring+springmvc+mybatis+maven框架整合

    SSM框架整合是Java开发中常见的技术栈,包括Spring、SpringMVC和MyBatis三个核心组件,再结合Maven进行构建和依赖管理。本文将详细介绍这三个框架的整合过程及其重要知识点。 首先,Spring框架是Java企业级应用的...

    SpringMvc+Spring+Mybatis+Maven+注解方式=整合

    "SpringMvc+Spring+Mybatis+Maven+注解方式"是一个经典的Java后端技术栈,它整合了四个关键组件,为开发人员提供了强大的工具和框架支持。下面将详细讲解这四个组件及其整合方式。 1. **Spring Framework**: ...

    整合Spring+SpringMVC+Mybatis+Maven+Mysql项目实例

    整合搭建Spring+SpringMVC+Mybatis+Maven+Mysql开发实例

    maven+springmvc+redis+mybatis整合

    本项目以“maven+springmvc+redis+mybatis整合”为主题,旨在提供一个基于这些技术的集成框架,特别强调了利用Redis作为缓存来提升应用性能。下面将详细阐述这个框架中的各个组成部分以及它们之间的协作。 首先,...

    springMVC+Spring+Mybatis+Maven整合代码案例

    3、技术框架:Spring 4.1.4.RELEASE、Spring MVC 4.1.4.RELEASE、MyBatis 3.2.8 二、整合思路: 1、设计数据库:设计好表结构,最好符合3NF,使用Generator自动生成Mybatis相关表信息 2、创建Maven项目,按需映入...

    Spring+SpringMVC+Mybatis+Velocity+Maven demo

    整合Spring、SpringMVC、Mybatis、Velocity和Maven可以创建出高效、可维护的Java Web应用。这个压缩包提供的示例项目是学习和理解这些技术如何协同工作的绝佳资源。开发者可以通过分析和运行这个项目,深入理解这些...

    Spring+SpringMVC+Mybatis+Maven+bootstrap+ajax+jQuery整合开发简单的员工后台管理系统

    在本项目中,"Spring+SpringMVC+Mybatis+Maven+bootstrap+ajax+jQuery整合开发简单的员工后台管理系统",我们看到一个基于Java技术栈的Web应用开发实例。这个系统利用了多个核心技术来构建一个功能完备的员工管理...

    maven+spring+springMVC+mybatis

    maven+spring+springMVC+mybatis 框架搭建 ...Maven+spring+springMVC+mybatis 框架的整合提供了一个完整的 Web 应用程序开发解决方案,涵盖了项目管理、框架选择、数据库持久层、前台应用程序开发等多个方面。

    SSM框架(Spring+SpringMVC+MyBatis)+shiro+Maven.zip

    ● 实现方法: 使用MySQL 建立数据库。服务端使用SSM框架(Spring+SpringMVC+MyBatis)+shiro+Maven,使用Myeclipse进行开发。前端使用MUi和HUI框架和vue(与后台交互模板)和Html5+css3来实现移动端App的开发。

    SSM框架(IDEA+Spring+SpringMVC+Maven+Mybatis+MySQL).zip

    SSM框架是Java Web开发中常用的三大框架——Spring、SpringMVC和Mybatis的组合,它们协同工作,构建高效、灵活的Web应用。IDEA作为Java开发的主流集成开发环境,Maven则作为项目管理和构建工具,而MySQL是常见的关系...

    idea创建ssm(spring+springMVC+mybatis+mysql+maven)基础登录框架源码含sql表语句

    SSM框架是Java Web开发中常用的三大框架集成,即Spring、SpringMVC和Mybatis的组合,它们各自负责不同的职责,协同工作以构建强大的企业级应用。Maven作为项目管理和构建工具,使得依赖管理和构建流程更为简洁。在...

    spring+springMVC+myBatis+maven项目整合

    【标题】"spring+springMVC+myBatis+maven项目整合"是一个常见的Java Web开发技术栈,这个项目集成了Spring框架(用于依赖注入和管理)、SpringMVC(用于处理HTTP请求和视图渲染)、MyBatis(作为持久层框架)以及...

    springMVC+spring+mybatis+maven框架代码

    【标题】"springMVC+spring+mybatis+maven框架代码"所涉及的知识点主要集中在四个核心组件上:Spring MVC、Spring、MyBatis和Maven。这些是Java Web开发中常用的四大框架,它们共同构建了一个高效、灵活的后端应用...

    SpringMvc+Spring+MyBatis+Maven整合视频源码+数据库

    本资源提供的"SpringMvc+Spring+MyBatis+Maven整合视频源码+数据库"是针对这四个框架的集成实践,通过源码分析,有助于开发者深入理解它们的协同工作方式。 Spring MVC 是Spring框架的一部分,它作为控制器,负责...

    基于SpringMVC+Spring+MyBatis+Maven项目案例.zip

    基于SpringMVC+Spring+MyBatis+Maven项目案例 基于SpringMVC+Spring+MyBatis+Maven项目案例 基于SpringMVC+Spring+MyBatis+Maven项目案例 基于SpringMVC+Spring+MyBatis+Maven项目案例 基于SpringMVC+Spring+MyBatis...

    Spring+SpringMVC+Mybatis框架整合例子(SSM)

    1. **引入依赖**:在项目中添加Spring、SpringMVC和Mybatis的依赖库,通常通过Maven或Gradle构建工具来管理。 2. **配置Spring**:创建Spring的配置文件,定义Bean的生命周期和依赖关系,包括数据源、...

    基于IDEA+Spring+SpringMVC+Mybatis+Redis+Shiro+Maven实现的教务管理系统+源码

    基于IDEA+Spring+SpringMVC+Mybatis+Redis+Shiro+Maven实现的教务管理系统+源码,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ 基于IDEA+Spring+SpringMVC+...

    Spring+springMVC+Mybatis+Maven项目

    【Spring+SpringMVC+Mybatis+Maven项目】是一个典型的Java Web开发框架组合,用于构建高效、可扩展的企业级应用程序。在这个项目中,Spring作为核心容器管理组件,SpringMVC处理HTTP请求和响应,Mybatis则负责数据库...

    springmvc+spring+mybatis+maven示例

    在IT领域,Spring MVC、Spring、MyBatis和Maven是四个非常重要的开源框架和工具,它们在构建Java Web应用程序时发挥着核心作用。这里,我们将深入探讨这四大组件及其在实际项目中的应用。 首先,Spring框架是Java...

Global site tag (gtag.js) - Google Analytics