`
wbj0110
  • 浏览: 1610172 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

Spring MVC整合Mybatis实例

阅读更多

示例下载地址:http://download.csdn.net/detail/geloin/4506640

        本文基于Spring 注解,让Spring跑起来。本文使用Mysql数据库。

        (1) 导入相关包,包结构如下图所示:

        (2) 修改src/applicationContext.xml文件,结果如下所示:

 

[java] view plaincopy
 
  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:tx="http://www.springframework.org/schema/tx"  
  6.     xsi:schemaLocation="  
  7.     http://www.springframework.org/schema/beans   
  8.     http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
  9.     http://www.springframework.org/schema/tx   
  10.     http://www.springframework.org/schema/tx/spring-tx-3.0.xsd   
  11.     http://www.springframework.org/schema/context   
  12.     http://www.springframework.org/schema/context/spring-context-3.0.xsd">  
  13.       
  14.     <!-- 引入jdbc配置文件 -->  
  15.     <context:property-placeholder location="classpath:jdbc.properties" />  
  16.   
  17.     <!--创建jdbc数据源 -->  
  18.     <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"  
  19.         destroy-method="close">  
  20.         <property name="driverClassName" value="${driver}" />  
  21.         <property name="url" value="${url}" />  
  22.         <property name="username" value="${username}" />  
  23.         <property name="password" value="${password}" />  
  24.     </bean>  
  25.   
  26.     <!-- (事务管理)transaction manager, use JtaTransactionManager for global tx -->  
  27.     <bean id="transactionManager"  
  28.         class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  
  29.         <property name="dataSource" ref="dataSource" />  
  30.     </bean>  
  31.   
  32.     <!-- 创建SqlSessionFactory,同时指定数据源 -->  
  33.     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  
  34.         <property name="dataSource" ref="dataSource" />  
  35.     </bean>  
  36.       
  37.     <!-- 可通过注解控制事务 -->  
  38.     <tx:annotation-driven />  
  39.   
  40.     <!-- Mapper接口所在包名,Spring会自动查找其下的Mapper -->  
  41.     <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">  
  42.         <property name="basePackage" value="com.geloin.spring.mapper" />  
  43.     </bean>  
  44.       
  45. </beans>  

 

        (3) 在src下添加jdbc.properties

 

[java] view plaincopy
 
  1. driver=com.mysql.jdbc.Driver  
  2. url=jdbc:mysql://localhost:3306/ruisystem  
  3. username=root  
  4. password=root  


        (4) 在com.geloin.spring.entity包下添加实体类,实体类对应于数据表,其属性与数据表相同或多于数据表。

 

 

[java] view plaincopy
 
  1. /** 
  2.  * 
  3.  * @author geloin 
  4.  * @date 2012-5-5 上午10:24:43 
  5.  */  
  6. package com.geloin.spring.entity;  
  7.   
  8. /** 
  9.  *  
  10.  * @author geloin 
  11.  * @date 2012-5-5 上午10:24:43 
  12.  */  
  13. public class Menu {  
  14.     /** 
  15.      * 惟一标识 
  16.      */  
  17.     private Integer id;  
  18.     /** 
  19.      * 父ID 
  20.      */  
  21.     private Integer parentId;  
  22.     /** 
  23.      * 名称 
  24.      */  
  25.     private String name;  
  26.     /** 
  27.      * 对应的地址 
  28.      */  
  29.     private String url;  
  30.     /** 
  31.      * 是否显示在左侧 
  32.      */  
  33.     private Integer isShowLeft;  
  34.   
  35.     /** 
  36.      *  
  37.      * @author geloin 
  38.      * @date 2012-5-5 上午10:26:19 
  39.      * @return the id 
  40.      */  
  41.     public Integer getId() {  
  42.         return id;  
  43.     }  
  44.   
  45.     /** 
  46.      *  
  47.      * @author geloin 
  48.      * @date 2012-5-5 上午10:26:19 
  49.      * @param id 
  50.      *            the id to set 
  51.      */  
  52.     public void setId(Integer id) {  
  53.         this.id = id;  
  54.     }  
  55.   
  56.     /** 
  57.      *  
  58.      * @author geloin 
  59.      * @date 2012-5-5 上午10:26:19 
  60.      * @return the parentId 
  61.      */  
  62.     public Integer getParentId() {  
  63.         return parentId;  
  64.     }  
  65.   
  66.     /** 
  67.      *  
  68.      * @author geloin 
  69.      * @date 2012-5-5 上午10:26:19 
  70.      * @param parentId 
  71.      *            the parentId to set 
  72.      */  
  73.     public void setParentId(Integer parentId) {  
  74.         this.parentId = parentId;  
  75.     }  
  76.   
  77.     /** 
  78.      *  
  79.      * @author geloin 
  80.      * @date 2012-5-5 上午10:26:19 
  81.      * @return the name 
  82.      */  
  83.     public String getName() {  
  84.         return name;  
  85.     }  
  86.   
  87.     /** 
  88.      *  
  89.      * @author geloin 
  90.      * @date 2012-5-5 上午10:26:19 
  91.      * @param name 
  92.      *            the name to set 
  93.      */  
  94.     public void setName(String name) {  
  95.         this.name = name;  
  96.     }  
  97.   
  98.     /** 
  99.      *  
  100.      * @author geloin 
  101.      * @date 2012-5-5 上午10:26:19 
  102.      * @return the url 
  103.      */  
  104.     public String getUrl() {  
  105.         return url;  
  106.     }  
  107.   
  108.     /** 
  109.      *  
  110.      * @author geloin 
  111.      * @date 2012-5-5 上午10:26:19 
  112.      * @param url 
  113.      *            the url to set 
  114.      */  
  115.     public void setUrl(String url) {  
  116.         this.url = url;  
  117.     }  
  118.   
  119.     /** 
  120.      *  
  121.      * @author geloin 
  122.      * @date 2012-5-5 上午10:26:19 
  123.      * @return the isShowLeft 
  124.      */  
  125.     public Integer getIsShowLeft() {  
  126.         return isShowLeft;  
  127.     }  
  128.   
  129.     /** 
  130.      *  
  131.      * @author geloin 
  132.      * @date 2012-5-5 上午10:26:19 
  133.      * @param isShowLeft 
  134.      *            the isShowLeft to set 
  135.      */  
  136.     public void setIsShowLeft(Integer isShowLeft) {  
  137.         this.isShowLeft = isShowLeft;  
  138.     }  
  139.   
  140. }  


        (5) 在com.geloin.spring.mapper下添加实体类与数据表的映射关系(com.geloin.spring.mapper与applicationContext.xml中的配置一致)。

 

 

[java] view plaincopy
 
  1. /** 
  2.  * 
  3.  * @author geloin 
  4.  * @date 2012-5-5 上午10:26:34 
  5.  */  
  6. package com.geloin.spring.mapper;  
  7.   
  8. import java.util.List;  
  9.   
  10. import org.apache.ibatis.annotations.Param;  
  11. import org.apache.ibatis.annotations.Result;  
  12. import org.apache.ibatis.annotations.Results;  
  13. import org.apache.ibatis.annotations.Select;  
  14. import org.springframework.stereotype.Repository;  
  15.   
  16. import com.geloin.spring.entity.Menu;  
  17.   
  18. /** 
  19.  *  
  20.  * @author geloin 
  21.  * @date 2012-5-5 上午10:26:34 
  22.  */  
  23. @Repository(value = "menuMapper")  
  24. public interface MenuMapper {  
  25.   
  26.     @Select(value = "${sql}")  
  27.     @Results(value = { @Result(id = true, property = "id", column = "id"),  
  28.             @Result(property = "parentId", column = "c_parent_id"),  
  29.             @Result(property = "url", column = "c_url"),  
  30.             @Result(property = "isShowLeft", column = "c_is_show_left"),  
  31.             @Result(property = "name", column = "c_name") })  
  32.     List<Menu> operateReturnBeans(@Param(value = "sql") String sql);  
  33. }  


        其中,@Repository表示这是一个被Spring管理的资源,资源名称为menuMapper;@Select表示operateReturnBeans方法为一个select方法;@Results表示返回结果,@Result将返回结果中的字段名与实体类关联;@Param表示String sql这个变量是用于Mybatis的一个变量,其名称为sql(value值),该变量在@Select中调用(通过${sql}调用)。

 

        (6) 在com.geloin.spring.service中添加MenuService接口

 

[java] view plaincopy
 
  1. /** 
  2.  * 
  3.  * @author geloin 
  4.  * @date 2012-5-5 上午10:28:42 
  5.  */  
  6. package com.geloin.spring.service;  
  7.   
  8. import java.util.List;  
  9.   
  10. import com.geloin.spring.entity.Menu;  
  11.   
  12. /** 
  13.  *  
  14.  * @author geloin 
  15.  * @date 2012-5-5 上午10:28:42 
  16.  */  
  17. public interface MenuService {  
  18.     /** 
  19.      * 查询所有 
  20.      *  
  21.      * @author geloin 
  22.      * @date 2012-5-5 上午10:28:55 
  23.      * @return 
  24.      */  
  25.     List<Menu> find();  
  26. }  


        (7) 在com.geloin.spring.service.impl中添加MenuServiceImpl作为MenuService接口的实现

 

 

[java] view plaincopy
 
  1. /** 
  2.  * 
  3.  * @author geloin 
  4.  * @date 2012-5-5 上午10:29:22 
  5.  */  
  6. package com.geloin.spring.service.impl;  
  7.   
  8. import java.util.List;  
  9.   
  10. import javax.annotation.Resource;  
  11.   
  12. import org.springframework.stereotype.Repository;  
  13. import org.springframework.transaction.annotation.Transactional;  
  14.   
  15. import com.geloin.spring.entity.Menu;  
  16. import com.geloin.spring.mapper.MenuMapper;  
  17. import com.geloin.spring.service.MenuService;  
  18.   
  19. /** 
  20.  *  
  21.  * @author geloin 
  22.  * @date 2012-5-5 上午10:29:22 
  23.  */  
  24. @Repository(value = "menuService")  
  25. @Transactional  
  26. public class MenuServiceImpl implements MenuService {  
  27.   
  28.     @Resource(name = "menuMapper")  
  29.     private MenuMapper menuMapper;  
  30.   
  31.     /* 
  32.      * (non-Javadoc) 
  33.      *  
  34.      * @see com.geloin.spring.service.MenuService#find() 
  35.      */  
  36.     @Override  
  37.     public List<Menu> find() {  
  38.         String sql = "select * from tb_system_menu";  
  39.         return this.menuMapper.operateReturnBeans(sql);  
  40.     }  
  41.   
  42. }  


        其中,@Transactional表示该类被Spring作为管理事务的类,@Resource引入一个Spring定义的资源,资源名为menuMapper(name值),即为第七步定义的映射类。

 

        (8) 修改控制器LoginController

 

[java] view plaincopy
 
  1. /** 
  2.  * 
  3.  * @author geloin 
  4.  * @date 2012-5-5 上午9:31:52 
  5.  */  
  6. package com.geloin.spring.controller;  
  7.   
  8. import java.util.HashMap;  
  9. import java.util.List;  
  10. import java.util.Map;  
  11.   
  12. import javax.annotation.Resource;  
  13. import javax.servlet.http.HttpServletResponse;  
  14.   
  15. import org.springframework.stereotype.Controller;  
  16. import org.springframework.web.bind.annotation.RequestMapping;  
  17. import org.springframework.web.servlet.ModelAndView;  
  18.   
  19. import com.geloin.spring.entity.Menu;  
  20. import com.geloin.spring.service.MenuService;  
  21.   
  22. /** 
  23.  *  
  24.  * @author geloin 
  25.  * @date 2012-5-5 上午9:31:52 
  26.  */  
  27. @Controller  
  28. @RequestMapping(value = "background")  
  29. public class LoginController {  
  30.   
  31.     @Resource(name = "menuService")  
  32.     private MenuService menuService;  
  33.   
  34.     /** 
  35.      *  
  36.      *  
  37.      * @author geloin 
  38.      * @date 2012-5-5 上午9:33:22 
  39.      * @return 
  40.      */  
  41.     @RequestMapping(value = "to_login")  
  42.     public ModelAndView toLogin(HttpServletResponse response) throws Exception {  
  43.   
  44.         Map<String, Object> map = new HashMap<String, Object>();  
  45.   
  46.         List<Menu> result = this.menuService.find();  
  47.   
  48.         map.put("result", result);  
  49.   
  50.         return new ModelAndView("background/menu", map);  
  51.     }  
  52. }  


        通过map将从数据库中获取的值传递到jsp页面,"background/menu"值经context-dispatcher.xml转化后,变为/WEB-INF/pages/background/menu.jsp,即,方法toLogin的含义为:从数据库中获取菜单信息,然后将之存储到map中,通过map把菜单列表传递到/WEB-INF/pages/background/menu.jsp页面用于显示。

 

        (9) 编写/WEB-INF/pages/background/menu.jsp页面

 

[java] view plaincopy
 
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"  
  2.     pageEncoding="UTF-8"%>  
  3. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>  
  4. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  5. <html>  
  6. <head>  
  7. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />  
  8. <title>Insert title here</title>  
  9. </head>  
  10. <body>  
  11.     <c:forEach items="${result }" var="item">  
  12.         ${item.id }--${item.name }--${item.parentId }--${item.url }--${item.isShowLeft }<br />  
  13.     </c:forEach>  
  14. </body>  
  15. </html>  


        (10) 显示结果

 

 

分享到:
评论

相关推荐

    spring mvc 整合mybatis实例

    Spring MVC提供了强大的控制层,而MyBatis则专注于数据访问层,这两者的整合使得开发过程更为高效和灵活。下面将详细解释如何将Spring MVC与MyBatis进行整合,并实现一个实际的示例。 1. **Spring MVC框架介绍** ...

    Spring MVC整合Mybatis

    **Spring MVC 整合 Mybatis 知识点详解** 在现代Java Web开发中,Spring MVC 和 Mybatis 是两个非常流行的框架。Spring MVC 提供了强大的MVC架构支持,而Mybatis则是一个轻量级的持久层框架,专注于SQL映射。将两者...

    Java EE 框架整合开发⼊⻔到实战——Spring+Spring MVC+MyBatis(微课版)课后习题答案.pdf

    这份文档名为《Java EE 框架整合开发入门到实战——Spring+Spring MVC+MyBatis(微课版)课后习题答案.pdf》,它显然是关于Java EE中流行的三个框架整合使用的教程。这三个框架分别是Spring、Spring MVC和MyBatis,...

    spring+spring mvc+mybatis框架整合实现超市货物管理系统

    总的来说,"spring+spring mvc+mybatis框架整合实现超市货物管理系统"是一个涵盖后端开发基础技能的项目,涉及了JavaEE的多个层面,从Web层的路由处理,到业务逻辑的实现,再到数据库操作,以及用户认证和分页显示等...

    互联网轻量级SSM框架解密:Spring、Spring MVC、MyBatis源码深度剖析

    《互联网轻量级SSM框架解密:Spring、Spring MVC、MyBatis源码深度剖析》Spring 源码剖析篇基于Spring 4.3.2 版本,剖析了Spring 上下文、Spring AOP 和Spring 事务的实现,并通过实例展示了框架陷阱的隐蔽性及学习...

    spring mvc 和 mybatis整合的实例

    通过这个实例,我们可以看到Spring MVC和MyBatis的整合能帮助我们快速地搭建一个功能完备的Web应用,实现了MVC架构和数据库操作的分离,提高了开发效率。在实际项目中,我们还可以根据需求进一步优化,例如引入缓存...

    Spring + Spring MVC + MyBatis整合项目(源码)

    在这个"Spring + Spring MVC + MyBatis整合项目"中,你可能会看到以下关键组件和配置: 1. **配置文件**:项目中会包含Spring的`applicationContext.xml`,定义了bean的装配;Spring MVC的`servlet-context.xml`,...

    Java EE 框架整合 开发入门到实战-Spring+Spring MVC+MyBatis微课版复习笔记

    此外,了解Spring框架整合MyBatis及Spring MVC的细节,对于开发基于Java EE的企业级应用非常关键。Spring MVC负责Web层的请求处理,MyBatis则是持久层框架,能够简化数据库操作。熟练掌握这些框架的整合使用,能够...

    spring mvc整合mybatis例子

    通过以上步骤,你可以实现Spring MVC与MyBatis的整合,构建出一个既能优雅处理Web请求,又能高效访问数据库的应用程序。在实际开发中,还可以结合Spring Boot和Spring Data JPA等技术进一步简化配置和提升开发效率。

    spring MVC3 mybatis3 spring3整合实例

    Spring MVC、MyBatis 和 Spring 是Java开发领域中三大核心框架,它们的整合使用能够...这个教程中的"spring MVC3 mybatis3 spring3整合实例"应该会详细讲解这些内容,帮助开发者更好地理解和掌握这三大框架的整合使用。

    《Java EE企业级应用开发教程Spring+Spring MVC+MyBatis》_源代码.zip

    《Java EE企业级应用开发教程Spring+Spring MVC+MyBatis》是一本深入探讨Java企业级应用程序开发的书籍,源代码包含多个章节的实例,旨在帮助读者理解和掌握使用Spring、Spring MVC和MyBatis框架进行实际开发的关键...

    Spring+spring MVC+mybatis框架项目

    SSM框架,即Spring、Spring MVC和Mybatis的组合,是Java Web开发中常见的轻量级框架集成。这个项目利用这三个框架实现了一个简单的增删改查功能,且保证了其完美运行,使得开发者可以直接导入并使用,无需进行复杂的...

    《Java EE企业级应用开发教程(Spring+Spring MVC+MyBatis)》配套资源.zip

    1. **示例代码**:这些代码展示了如何在实际项目中整合Spring、Spring MVC和MyBatis。它们通常包括配置文件、实体类、DAO接口及实现、Service层接口及实现、Controller层的处理逻辑等,帮助读者理解各个组件的交互...

    Spring+spring MVC+MyBatis示例

    **Spring+Spring MVC+MyBatis 整合详解** 在Java Web开发中,Spring、Spring MVC和MyBatis是常见的三大框架,它们的整合能够构建出高效、灵活且易于维护的Web应用程序。这个示例程序就是一个典型的三者结合的实例,...

    基于java+ssm(spring+spring mvc+mybatis+maven)实现高仿bilibili视频网站源码+文档

    基于ssm(spring+spring mvc+mybatis+maven)实现的高仿bilibili视频网站+源码+开发文档,...ssm(spring+spring mvc+mybatis+maven)高仿bilibili视频网站项目实例 里面包含论坛, 购物商城 网页 后台管理的java项目集成

    spring + spring mvc +mybatis整合开发所需jar包

    在SSM整合开发中,常见的jar包包括Spring的核心库、Spring MVC的库、MyBatis的库、数据库驱动、以及`mybatis-spring`库,这些库共同支撑起SSM的运行环境。 6. web 开发相关: 在Web开发中,除了SSM框架外,还需要...

    互联网轻量级SSM框架解密:Spring、Spring MVC、MyBatis源码深度剖析 .rar

    SSM框架,全称为Spring、Spring MVC和MyBatis,是Java开发中广泛使用的轻量级Web应用框架组合。这三大框架各自承担着不同的职责,共同构建了一个高效、灵活的后端开发环境。本篇文章将深入探讨这三个核心组件,解析...

    Spring mvc 和 mybatis 整合,mybatis使用注解模式

    总结来说,Spring MVC与MyBatis的整合使得我们能够充分利用两者的优势:Spring MVC提供了强大的MVC架构和依赖注入,而MyBatis的注解模式则简化了SQL映射。通过这种方式,开发者可以更专注于业务逻辑,提高开发效率和...

    activiti+spring+srping Mvc+mybatis+maven整合

    本项目是关于"activiti+spring+spring Mvc+mybatis+maven"的整合,旨在创建一个基于Activiti工作流引擎、Spring、Spring MVC、MyBatis以及Maven的开发环境。下面将详细介绍这些技术及其整合过程。 首先,`activiti`...

    spting4mvc+mybatis整合实例(入门)

    在本实例中,我们将探讨如何将Spring MVC框架与MyBatis持久层框架进行整合,以构建一个基础的Web应用程序。Spring MVC提供了强大的模型-视图-控制器架构,而MyBatis则是一个轻量级的SQL映射框架,使得数据库操作更为...

Global site tag (gtag.js) - Google Analytics