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

摘要: 前面几篇文章已经讲到了mybatis与spring 的集成。但这个时候,所有的工程还不是web工程,虽然我一直是创建的web 工程。今天将直接用mybatis与Spring mvc 的方式集成起来,主要有以下几个方面的配置1. web.xml 配置 spring dispatchservlet ,比如为:mvc-dispatcher2. mvc-dispatcher-servlet.xml 文件配置3. spring applicationContext.XML文件配置(与数据库相关,与mybatis sqlSessionFaction 整合,扫描所有mybatis mapper 文件等.)4. 编写controller 类5. 编写页面代码.

前面几篇文章已经讲到了mybatis与spring 的集成。但这个时候,所有的工程还不是web工程,虽然我一直是创建的web 工程。今天将直接用mybatis与Spring mvc 的方式集成起来,源码在本文结尾处下载.主要有以下几个方面的配置
1. web.xml 配置 spring dispatchservlet ,比如为:mvc-dispatcher
2. mvc-dispatcher-servlet.xml 文件配置
3. spring applicationContext.XML文件配置(与数据库相关,与mybatis sqlSessionFaction 整合,扫描所有mybatis mapper 文件等.)
4. 编写controller 类
5. 编写页面代码.
先有个大概映像,整个工程图如下:
[/code]

1. web.xml 配置 spring dispatchservlet ,比如为:mvc-dispatcher


    contextConfigLocation
    classpath*:config/applicationContext.xml
  
  
    org.springframework.web.context.ContextLoaderListener
  
  
    
			org.springframework.web.context.ContextCleanupListener
  
  
    mvc-dispatcher
    org.springframework.web.servlet.DispatcherServlet
    1
  
  
    mvc-dispatcher
    /
  

2. 在web.xml 同目录下配置 mvc-dispatcher-servlet.xml 文件,这个文件名前面部分必须与你在web.xml里面配置的DispatcherServlet 的servlet名字对应.其内容为:


	
	
	
	  
      
     
	
		
			/WEB-INF/pages/
		
		
			.jsp
		
	



3. 在源码目录 config 目录下配置 spring 配置文件 applicationContext.xml
   
    
		
	
	
	
	
	  
	
	
	 
   
      
      
      
      
     
     
   
  
  
	 	 
  


不知道为什么,一旦我用了 MapperScannerConfigurer 去扫描所有的mapper 接口时,数据库配置datasource 就不能用读取database.properties文件了。报错: Cannot load JDBC driver class '${jdbc.driverClassName}',网上有人说在spring 3.1.1 下用 sqlSessionFactionBean 注入可以解决,但我用 spring 3.1.3 还是有问题,所以只好把数据库连接信息直接配置在了XML 文件里面。

4. 编写 controller 层
package com.yihaomen.controller;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import com.yihaomen.inter.IUserOperation;
import com.yihaomen.model.Article;

@Controller
@RequestMapping("/article")
public class UserController {
	@Autowired
	IUserOperation userMapper;

	@RequestMapping("/list")
	public ModelAndView listall(HttpServletRequest request,HttpServletResponse response){
		List
articles=userMapper.getUserArticles(1); ModelAndView mav=new ModelAndView("list"); mav.addObject("articles",articles); return mav; } } 5. 页面文件: [code] ${item.id }--${item.title }--${item.content }


运行结果:


当然还有 mybatis 的Configure.xml 配置文件,与上一讲的差不多,唯一不同的就是不用再配置类似如下的: ,所有这些都交给 在配置 sqlSessionFactory 的时候,由 去导入了。

源码下载:

mybatis spring3 MVC 程序下载

数据库下载:

spring mvc 数据库测试文件

上一篇: Spring MVC程序中得到静态资源文件css,js,图片文件的路径问题总结
下一篇: python 中动态创建类的方法.

Avatar

菜鸟 评论于: 2017-08-11

为啥只有UserController用了注解,两个实体类和接口都没有注解和相关的spring配置文件,这样spring也能进行注入管理吗?
我下载了源码,控制台不报错,article/list显示404,并且我在UserControlle对应的requestMapping的方法中设置了打印语句,控制台也没输出,是不是少配置了什么,都没起作用呢

Avatar

N3verL4nd 评论于: 2017-05-16


是不是这个原因啊?

Avatar

小海 评论于: 2017-04-12

@轻舞肥羊,谢谢您的教程。

Avatar

pjatyhm 评论于: 2017-03-14

[quote=newcodeer]例子正常运行,但是我不清楚,model包下面的User和Article两个类是什么时候被容器管理的。[/quote]这个应该是ServletContext被创建完之后就完成了mybatis的一系列工作。web.xml里配置两个ServletContextListener,ContextLoaderListener读取了配置并进行了装配。

Avatar

恒毅 评论于: 2016-12-27

[quote=放学不走]补充下,这个jeeSqlSessionFactory是上面定义出来的,[/quote]

这个是怎么定义的呢?

Avatar

感谢老司机 评论于: 2016-07-30

我用的eclipse EE最新版本 ,jdk8 ,程序跑步起来,老是提示找不到javax.http。*这个包,我手动加进去也不行
[reply=yihaomen,2016-07-31 09:44 PM]估计是servlet包吧报错吧,你可以加入 server 包,比如 tomcat, 要么你把servlet包弄进去。[/reply]

Avatar

newcodeer 评论于: 2016-06-24

例子正常运行,但是我不清楚,model包下面的User和Article两个类是什么时候被容器管理的。

Avatar

菜鸟入坑之路 评论于: 2016-02-16

请问一下 我的一直报404 the requested resource is not available。。。。
求帮忙 助攻!!谢谢博主大大 

Avatar

qp 评论于: 2015-07-08

扫描mapper接口需要在前方插入

Avatar

放学不走 评论于: 2014-11-22

补充下,这个jeeSqlSessionFactory是上面定义出来的,

Avatar

wangnima 评论于: 2014-11-22

 
勃主好,问题帮你找到了,你只要把这个id换个名字就可以了。亲测
如果还不行,在下面的mapperScannerConfigurer里面配个
就可以了
问题原因还待研究哈。可不可以qq好友?我的1357790349

Avatar

wangnima 评论于: 2014-11-20

p:url="jdbc:mysql://127.0.0.1:3306/mybatis?characterEncoding=utf8" 
        p:username="root" p:password="password"
        p:maxActive="10" p:maxIdle="10">
你好,问下这p:url等上述这是什么写法?
是提前定义好的标签吗?求指教,谢谢。
[reply=轻舞肥羊,2014-11-20 09:51 PM]这是SPRING的东西,查看下spring 相关文档,类似于[/reply]

Avatar

oyj 评论于: 2014-07-06

为什么我输入localhost:9999//MyBatis_Spring3_Jsp/article/list,提示The requested resource is not available. 我是源码解压下来直接部署的,包也都没有问题的 
[reply=轻舞肥羊,2014-11-20 09:51 PM]debug看看controller 有没有相应,源码是没有问题的哦。[/reply]

Avatar

juanzi 评论于: 2014-04-08

INFO: No TLD files were found in [file:/jdk1.7.0_21/jre/lib/ext/zipfs.jar]. Consider adding the JAR to 

...

一直提示这些是什么原因啊?
[reply=轻舞肥羊,2014-04-08 11:31 PM]JDK,JRE 环境正确吗?[/reply]

Avatar

222 评论于: 2014-04-04

为什么我的查询结果只有一条

Avatar

oyb 评论于: 2014-03-07

请问这个数据库测试文件mybatis.sql怎么用啊?
 评论 ( What Do You Think )
名称
邮箱
网址
评论
验证
   
 

 


  • 微信公众号

  • 我的微信

站点声明:

1、一号门博客CMS,由Python, MySQL, Nginx, Wsgi 强力驱动

2、部分文章或者资源来源于互联网, 有时候很难判断是否侵权, 若有侵权, 请联系邮箱:summer@yihaomen.com, 同时欢迎大家注册用户,主动发布无版权争议的 文章/资源.

3、鄂ICP备14001754号-3, 鄂公网安备 42280202422812号