`
禹爸爸
  • 浏览: 87513 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Mybatis系列(九)Spring & Mybatis整合

 
阅读更多

Mybatis系列之Spring & Mybatis整合

引言

前面用了八篇博客简单的向大家介绍了Mybatis的基础知识及简单用例。了解了这些知识后,还差最后一招,我们就可以修炼好独孤九剑,进入到更高一层的武艺境界 --SSM(Spring + Spring MVC + Mybatis)开发阶段了。

关于Spring及Spring MVC的基础概念这里就不再赘述了。不了解的,大家可以通过度娘谷哥自行脑补。

 

开发环境

IDE: STS(Spring Tools Suite)官网网址:http://spring.io/tools/sts

Spring Framework: 3.1.1.RELEASE

Mybatis Version: 3.3.0

Mybatis-Spring: 1.2.3

创建Spring MVC项目

强烈推荐大家使用STS进行Spring项目的开发,她对Spring及Maven集存的非常好,轻松两步就可以创建一个Spring MVC项目:

  1. 点击新建按钮,在新建向导中选择Spring Project,点击下一步
  2. 选择Spring MVC Project,输入项目名称,点击完成

是不是很easy呀!项目创建好之后,还要完成一个动作,就是右击项目名称,选择Run As..菜单下的Maven Install,这样就可以把项目依赖的Jar包下载到本地了。新创建的项目目录结构如下图所示(请忽略src/main/java目录下的包及文件,这是最终完成后的项目结构)。

 

引入Jar包

在Maven的项目管理文件pom.xml中加入以下依赖即可。

<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-context</artifactId>
	<version>3.1.1 RELEASE</version>
	<exclusions>
		<!-- Exclude Commons Logging in favor of SLF4j -->
		<exclusion>
			<groupId>commons-logging</groupId>
			<artifactId>commons-logging</artifactId>
		</exclusion>
	</exclusions>
</dependency>
<dependency>
	<groupId>org.springframework</groupId>
	<artifactId>spring-webmvc</artifactId>
	<version>3.1.1 RELEASE</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.36</version>
</dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>4.2.1.RELEASE</version>
    <scope>compile</scope>
</dependency>
<dependency>
    <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> 
    <version>1.2.3</version>
</dependency>
<dependency>
    <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.3.0</version>
</dependency>

Spring与Mybatis整合

将所需Jar包导入之后,就可以着手将Spring与Mybatis进行整合(请注意,这里是将Spring与Mybatis进行整合,现在还没有涉及到Spring MVC)。这里我们使用了JUnit,每做一次整合,我们都需要进行测试,以确保向前走的每一小步都是正确的。

我们在src/main/resources目录下创建一个名为spring-mybatis.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-3.0.xsd">
	<context:component-scan base-package="com.emerson.suzhou" />

    <bean id="dataSource"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource" >
        <property name="driverClassName" value="com.mysql.jdbc.Driver" />
        <property name="url" value="jdbc:mysql://127.0.0.1:3306/your_database" />
        <property name="username" value="your_username" />
        <property name="password" value="your_password" />
    </bean>
    
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <!-- 自动扫描mapping.xml文件 -->
        <property name="mapperLocations" value="classpath:com/emerson/suzhou/mapping/*.xml"></property>
        <propertyname="configLocation"value="classpath:mybatis-config.xml"></property>
    </bean>
    <!-- DAO接口所在包名,Spring会自动查找其下的类 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.emerson.suzhou.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>
 在这个配置文件中,我们指定了:

 

  • 数据源:用于连接目标数据库
  • Spring扫描路径:会扫描指定路径下的所有Component,为后面的依赖注入做准备。如果我们需要对Mybatis进行一些特别设置,可以在这里指定配置文件的路径
  • 映射文件路径:Mybatis会在指定路径加下加载数据表是映射文件
  • Dao接口包名称:对应着每个数据表的映射文件,我们都会为其编写一个接口(请参见《Mybatis系列(六)接口式编程》)

ok,这个文件编写好之后,千万不要忘记在web.xml中指定spring-mybatis配置文件的位置!!这一步至关重要。否则在运行程序时会报出“creat bean error.....”的错误信息。

 

<!-- spring-mybatis configuration file location -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring-mybatis.xml</param-value>
    </context-param>

补充一句,STS自动生成的web.xml文件已经指定了root-context.xml文件位置,我们也可以把spring-mybatis.xml文件的内容全部搬到root-context.xml文件中,这样就不用添加下面这段代码了。

 

之后,我们就可以测试一下Spring与Mybatis是否可以正确的整合在一起。我继续使用在《Mybatis系列之简单示例》中使用的数据库进行测试。

在scr/main/java创建如下包:

com.emerson.suzhou.controller:存放控制器(后面测试Spring MVC时使用)

com.emerson.suzhou.dao:存放与映射文件相对应的接口文件

com.emerson.suzhou.mapping:存放数据表映射文件

com.emerson.suzhou.pojo:存放数据表实体类

com.emerson.suzhou.service:用在Controller与Dao之间的Service接口文件

com.emerson.suzou.service.impl:Service接口实现

数据表实体类文件内容如下。

 

package com.emerson.suzhou.pojo;

import java.sql.Timestamp;

public class User {
	/**
	 * 
	 */
	private int userId;

	/**
	 * 
	 */
	private String userPassword;
	
	/**
	 * 
	 */
	private String userName;

	/**
	 * 
	 */
	private String nickName;

	/**
	 * 
	 */
	private String email;

	/**
	 * 
	 */
	private int isValid;

	/**
	 * 
	 */
	private Timestamp createdTime;

	/**
	 * 
	 */
	private Timestamp updateTime;

        //setter , getter ...
}
 数据表映射文件内容如下。请注意,这里使用名称空间,一定要与相应的接口文件全限定名一致!

 

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.emerson.suzhou.dao.IUserDao">
	<sql id="columns">user_id, user_name, user_password, nick_name, email,
		is_valid, created_time, update_time
	</sql>

	<resultMap id="userResult" type="com.emerson.suzhou.pojo.User">
		<id property="userId" column="user_id" />
		<result property="userName" column="user_name" />
		<result property="userPassword" column="user_password" />
		<result property="nickName" column="nick_name" />
		<result property="email" column="email" />
		<result property="isValid" column="is_valid" />
		<result property="createdTime" column="created_time" />
		<result property="updateTime" column="update_time" />
	</resultMap>

	<!-- 根据传入的Id值,到数据库中查询记录 -->
	<select id="getById" parameterType="int" resultMap="userResult">
		SELECT
		<include refid="columns"></include>
		FROM sys_user WHERE user_id = #{id}
	</select>
</mapper>
接口文件。请注意,接口中定义的方法名称及参数,需要与映射文件中相应元素的id值相同。
package com.emerson.suzhou.dao;

import com.emerson.suzhou.pojo.User;

public interface IUserDao {
	
	public User getById(int id);

}
服务接口文件如下。
package com.emerson.suzhou.service;

import com.emerson.suzhou.pojo.User;

public interface IUserService {
    public User getById(int id);
}

 

服务接口实现文件如下。这里一定要使用Service注解标注。

package com.emerson.suzhou.service.impl;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import com.emerson.suzhou.dao.IUserDao;
import com.emerson.suzhou.pojo.User;
import com.emerson.suzhou.service.IUserService;

@Service("userService")
public class UserSerivceImpl implements IUserService {
	
	@Resource
	private IUserDao dao;

	@Override
	public User getById(int id) {
		return this.dao.getById(id);
	}
}

这些准备工作完成之后,我们就可以开始编写测试代码了。在scr/test/java/下创建测试文件,内容如下。

package com.emerson.suzhou;

import static org.junit.Assert.*;

import javax.annotation.Resource;

import org.apache.log4j.Logger;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import com.emerson.suzhou.pojo.User;
import com.emerson.suzhou.service.IUserService;

public class TestMybatis {
	
	private static Logger logger = Logger.getLogger(TestMybatis.class);
	
	@Resource
	private IUserService userService = null;

	@Before
	public void setUp() throws Exception {
	}

	@After
	public void tearDown() throws Exception {
	}

	@Test
	public void test() {
		assertNotNull(userService);
		User user = userService.getById(1);
		logger.info(user);
	}

}

如果在控制台看到数据表中查询到的内容输出,表示我们的配置是正确的。

 

目前,我们已经将Spring与Mybatis成功的整合在一起了,下面开始将Spring MVC也加入进来。

Spring MVC,来吧

STS在为我们创建Spring MVC项目时,已经自动生成了关于Spring MVC的配置文件,存放在src/main/webapp/WEB-INF/spring目录下,一个是root-context.xml,另一个是在其子目录appServlet下的servlet-context.xml。这两个配置文件的作用级别不同,一个是作用在事个项目上的,另一个则是仅作用在appServer上的(这个是由Spring MVC自动创建的一个Servlet,用于请求转发的,这一点从web.xml文件中就可以看出端倪)。

对于这两个文件,我们无需修改,可以直接使用。这就是我强烈推荐使用STS的原因之一。

接下来,我们要做的就是编写一个Controller测试一下。

package com.emerson.suzhou.controller;

import java.text.DateFormat;
import java.util.Date;
import java.util.Locale;

import javax.annotation.Resource;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.emerson.suzhou.pojo.User;
import com.emerson.suzhou.service.IUserService;

/**
 * Handles requests for the application home page.
 */
@Controller
public class HomeController {
	
	private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
	
	@Resource
	private IUserService userService;
	
	@RequestMapping(value = "showUser/{id}")
	public String showUser(@PathVariable int id, Model model) {
		User user = this.userService.getById(id);
		model.addAttribute("user", user);
		return "showUser";
	}
	
}

JSP文件如下。

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>测试</title>
  </head>
  
  <body>
    ${user.toString()}
  </body>
</html>

 将项目发布到服务器上运行,地浏览器地址栏中输入http://localhost:8080/suzhou/showUser/1,如果页面中可以显示出从数据库中查询到的数据即为正确。

 

至此,SSM的框架已全部整合完毕。独孤九剑已融入到小伙伴的血液中了,余下的就看个人修炼了〜〜〜我只能帮你到这里了〜〜〜〜

 

  • 大小: 367 KB
分享到:
评论

相关推荐

    基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 微信小程序

    基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 微信小程序 基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 微信小程序 基于 Spring Boot + MyBatis Plus + Vue ...

    spring_mybatis 整合jar包

    描述中提到"基本常用jar包的整合",意味着这个压缩包包含了一些基础且常用的库,这些库是进行Spring和MyBatis整合所必需的。例如,Spring的`spring-context`、`spring-beans`、`spring-jdbc`和`spring-tx`,以及...

    Mybatis与Spring整合所需的jar包

    mybatis与spring整合时所依赖的jar包,包括: 1.Mybatis所需的jar包括: ant-1.9.6.jar ant-launcher-1.9.6.jar asm-5.2.jar cglib-3.2.5.jar commons-logging-1.2.jar javassist-3.22.0-CR2.jar log4j-...

    mybatis与spring整合的全部jar包

    SSM(Spring、SpringMVC、MyBatis)框架整合是Java开发中常见的技术栈,主要用于构建企业级的Web应用程序。在这个压缩包中,我们找到了整合MyBatis和Spring所需的全部jar包,这对于初学者或者开发者搭建项目环境非常...

    mybatis-spring 整合jar包

    mybatis-spring 整合jar包,Spring和MyBatis环境整合mybatis-spring-1.1.1

    Spring整合Mybatis与SpringBoot整合Mybatis原理分析

    将Spring与Mybatis整合,可以充分利用两者的优点,构建出高效、灵活的Web应用。 1. **Spring整合Mybatis的基本步骤** - **引入依赖**: 在项目的pom.xml中添加Spring和Mybatis的相关依赖。 - **配置数据源**: ...

    mybatis与spring整合全部jar包

    这个“mybatis与spring整合全部jar包”包含了这三个框架整合所需的所有依赖库,使得开发者可以快速搭建SSM项目。 首先,让我们深入了解一下这三个组件: 1. **Spring**:Spring 是一个全面的Java企业级应用开发...

    mybatis3+spring4完美整合jar包

    本压缩包"mybatis3+spring4完美整合jar包"提供了最新的整合版本,帮助开发者快速构建基于MyBatis3和Spring4的应用。 MyBatis3是一个轻量级的持久层框架,它简化了SQL操作,允许开发者直接编写SQL语句,避免了ORM...

    Spring与Mybatis整合&&aop整合pageHelper分页插件

    在IT行业中,Spring框架和Mybatis的整合是常见的企业级应用开发模式,它们结合使用能够实现灵活、高效的数据访问层。PageHelper分页插件则是Mybatis中的一个实用工具,可以方便地对查询结果进行分页处理。接下来,...

    spring整合Mybatis

    最后,`springMybatis`可能是指项目的根目录或者模块名称,通常包含`src/main/resources`下的Mybatis配置文件、Mapper接口和XML文件,以及`src/main/java`下的业务逻辑和服务层代码。 综上所述,"Spring整合Mybatis...

    MyBatis整合Spring中间件jar包 mybatis-spring-1.3.0.jar

    MyBatis-Spring是MyBatis与Spring框架的整合组件,其主要目的是简化在Spring应用中集成MyBatis的过程,使两者能够无缝协作。mybatis-spring-1.3.0.jar是这个中间件的特定版本,包含了实现这种集成所需的所有类和资源...

    mybatis3+spring+springMVC4整合jar包.rar

    标题 "mybatis3+spring+springMVC4整合jar包.rar" 描述的是一个整合了MyBatis 3、Spring 4 和 Spring MVC 4 的项目压缩包。这个压缩包通常用于快速搭建一个基于Java的Web开发环境,尤其是用于处理数据库操作和前端...

    MyBatis 3 整合Spring3、SpringMVC

    【整合MyBatis 3与Spring 3、SpringMVC】 在企业级应用开发中,MyBatis作为一款轻量级的持久层框架,与Spring的集成是常见的做法,可以实现灵活的数据访问和事务管理。SpringMVC则用于处理前端请求,构建MVC架构。...

    mybatis-spring 整合包

    MyBatis-Spring 整合包是专门为将MyBatis持久层框架与Spring应用框架集成而设计的一个组件。这个包的出现旨在简化MyBatis在Spring环境中的配置和使用,使得开发者可以充分利用两者的优点,实现更加灵活和方便的数据...

    mybatis整合spring 实例

    这个实例中的"mybatis整合spring实例(完整版)"文件可能包含了上述所有步骤的源代码,包括Spring的配置文件、MyBatis的配置文件、Mapper接口、XML文件以及相关的Java类。通过仔细阅读和理解这些代码,开发者可以...

    mybatis-3.4.1-all & mybatis-spring-1.3.0

    总之,这个压缩包提供了 MyBatis 3.4.1 和 MyBatis-Spring 1.3.0 的完整环境,结合 MySQL 5.7 数据库,是学习和实践 MyBatis-Spring 整合的一个理想起点。通过深入阅读文档、配置示例和运行示例,开发者能够快速掌握...

    Spring3+springmvc+mybatis三大整合

    在"Spring3+SpringMVC+MyBatis"的整合过程中,通常会使用Spring的ApplicationContext来加载配置,管理所有组件。SpringMVC的配置需要定义DispatcherServlet,配置视图解析器如InternalResourceViewResolver,以及...

    Spring-Mybatis整合

    现在我们来详细讨论一下Spring-Mybatis整合的相关知识点。 1. **Spring 概述**: Spring 是一个全面的企业级应用框架,它提供了一个容器来管理对象的生命周期和依赖关系。Spring 的核心特性包括依赖注入(DI)和...

    Spring-SpringMVC-Mybatis整合所有jar包

    这个压缩包“Spring-SpringMVC-Mybatis整合所有jar包”包含了这三个框架整合所需的全部依赖,使得开发者能够快速搭建起一个功能完备的后端服务。 1. **Spring框架**:Spring是一个全面的开源应用框架,它提供了对...

Global site tag (gtag.js) - Google Analytics