Spring MVC整合Mybatis实例
2012-05-05 10:52
381 查看
示例下载地址:http://download.csdn.net/detail/geloin/4506640
本文基于Spring 注解,让Spring跑起来。本文使用Mysql数据库。
(1) 导入相关包,包结构如下图所示:
(2) 修改src/applicationContext.xml文件,结果如下所示:
(3) 在src下添加jdbc.properties
(4) 在com.geloin.spring.entity包下添加实体类,实体类对应于数据表,其属性与数据表相同或多于数据表。
(5) 在com.geloin.spring.mapper下添加实体类与数据表的映射关系(com.geloin.spring.mapper与applicationContext.xml中的配置一致)。
其中,@Repository表示这是一个被Spring管理的资源,资源名称为menuMapper;@Select表示operateReturnBeans方法为一个select方法;@Results表示返回结果,@Result将返回结果中的字段名与实体类关联;@Param表示String sql这个变量是用于Mybatis的一个变量,其名称为sql(value值),该变量在@Select中调用(通过${sql}调用)。
(6) 在com.geloin.spring.service中添加MenuService接口
(7) 在com.geloin.spring.service.impl中添加MenuServiceImpl作为MenuService接口的实现
其中,@Transactional表示该类被Spring作为管理事务的类,@Resource引入一个Spring定义的资源,资源名为menuMapper(name值),即为第七步定义的映射类。
(8) 修改控制器LoginController
通过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页面
(10) 显示结果
本文基于Spring 注解,让Spring跑起来。本文使用Mysql数据库。
(1) 导入相关包,包结构如下图所示:
(2) 修改src/applicationContext.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:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <!-- 引入jdbc配置文件 --> <context:property-placeholder location="classpath:jdbc.properties" /> <!--创建jdbc数据源 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="${driver}" /> <property name="url" value="${url}" /> <property name="username" value="${username}" /> <property name="password" value="${password}" /> </bean> <!-- (事务管理)transaction manager, use JtaTransactionManager for global tx --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean> <!-- 创建SqlSessionFactory,同时指定数据源 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> </bean> <!-- 可通过注解控制事务 --> <tx:annotation-driven /> <!-- Mapper接口所在包名,Spring会自动查找其下的Mapper --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.geloin.spring.mapper" /> </bean> </beans>
(3) 在src下添加jdbc.properties
driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/ruisystem username=root password=root
(4) 在com.geloin.spring.entity包下添加实体类,实体类对应于数据表,其属性与数据表相同或多于数据表。
/** * * @author geloin * @date 2012-5-5 上午10:24:43 */ package com.geloin.spring.entity; /** * * @author geloin * @date 2012-5-5 上午10:24:43 */ public class Menu { /** * 惟一标识 */ private Integer id; /** * 父ID */ private Integer parentId; /** * 名称 */ private String name; /** * 对应的地址 */ private String url; /** * 是否显示在左侧 */ private Integer isShowLeft; /** * * @author geloin * @date 2012-5-5 上午10:26:19 * @return the id */ public Integer getId() { return id; } /** * * @author geloin * @date 2012-5-5 上午10:26:19 * @param id * the id to set */ public void setId(Integer id) { this.id = id; } /** * * @author geloin * @date 2012-5-5 上午10:26:19 * @return the parentId */ public Integer getParentId() { return parentId; } /** * * @author geloin * @date 2012-5-5 上午10:26:19 * @param parentId * the parentId to set */ public void setParentId(Integer parentId) { this.parentId = parentId; } /** * * @author geloin * @date 2012-5-5 上午10:26:19 * @return the name */ public String getName() { return name; } /** * * @author geloin * @date 2012-5-5 上午10:26:19 * @param name * the name to set */ public void setName(String name) { this.name = name; } /** * * @author geloin * @date 2012-5-5 上午10:26:19 * @return the url */ public String getUrl() { return url; } /** * * @author geloin * @date 2012-5-5 上午10:26:19 * @param url * the url to set */ public void setUrl(String url) { this.url = url; } /** * * @author geloin * @date 2012-5-5 上午10:26:19 * @return the isShowLeft */ public Integer getIsShowLeft() { return isShowLeft; } /** * * @author geloin * @date 2012-5-5 上午10:26:19 * @param isShowLeft * the isShowLeft to set */ public void setIsShowLeft(Integer isShowLeft) { this.isShowLeft = isShowLeft; } }
(5) 在com.geloin.spring.mapper下添加实体类与数据表的映射关系(com.geloin.spring.mapper与applicationContext.xml中的配置一致)。
/** * * @author geloin * @date 2012-5-5 上午10:26:34 */ package com.geloin.spring.mapper; import java.util.List; import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Result; import org.apache.ibatis.annotations.Results; import org.apache.ibatis.annotations.Select; import org.springframework.stereotype.Repository; import com.geloin.spring.entity.Menu; /** * * @author geloin * @date 2012-5-5 上午10:26:34 */ @Repository(value = "menuMapper") public interface MenuMapper { @Select(value = "${sql}") @Results(value = { @Result(id = true, property = "id", column = "id"), @Result(property = "parentId", column = "c_parent_id"), @Result(property = "url", column = "c_url"), @Result(property = "isShowLeft", column = "c_is_show_left"), @Result(property = "name", column = "c_name") }) List<Menu> operateReturnBeans(@Param(value = "sql") String sql); }
其中,@Repository表示这是一个被Spring管理的资源,资源名称为menuMapper;@Select表示operateReturnBeans方法为一个select方法;@Results表示返回结果,@Result将返回结果中的字段名与实体类关联;@Param表示String sql这个变量是用于Mybatis的一个变量,其名称为sql(value值),该变量在@Select中调用(通过${sql}调用)。
(6) 在com.geloin.spring.service中添加MenuService接口
/** * * @author geloin * @date 2012-5-5 上午10:28:42 */ package com.geloin.spring.service; import java.util.List; import com.geloin.spring.entity.Menu; /** * * @author geloin * @date 2012-5-5 上午10:28:42 */ public interface MenuService { /** * 查询所有 * * @author geloin * @date 2012-5-5 上午10:28:55 * @return */ List<Menu> find(); }
(7) 在com.geloin.spring.service.impl中添加MenuServiceImpl作为MenuService接口的实现
/** * * @author geloin * @date 2012-5-5 上午10:29:22 */ package com.geloin.spring.service.impl; import java.util.List; import javax.annotation.Resource; import org.springframework.stereotype.Repository; import org.springframework.transaction.annotation.Transactional; import com.geloin.spring.entity.Menu; import com.geloin.spring.mapper.MenuMapper; import com.geloin.spring.service.MenuService; /** * * @author geloin * @date 2012-5-5 上午10:29:22 */ @Repository(value = "menuService") @Transactional public class MenuServiceImpl implements MenuService { @Resource(name = "menuMapper") private MenuMapper menuMapper; /* * (non-Javadoc) * * @see com.geloin.spring.service.MenuService#find() */ @Override public List<Menu> find() { String sql = "select * from tb_system_menu"; return this.menuMapper.operateReturnBeans(sql); } }
其中,@Transactional表示该类被Spring作为管理事务的类,@Resource引入一个Spring定义的资源,资源名为menuMapper(name值),即为第七步定义的映射类。
(8) 修改控制器LoginController
/** * * @author geloin * @date 2012-5-5 上午9:31:52 */ package com.geloin.spring.controller; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; import com.geloin.spring.entity.Menu; import com.geloin.spring.service.MenuService; /** * * @author geloin * @date 2012-5-5 上午9:31:52 */ @Controller @RequestMapping(value = "background") public class LoginController { @Resource(name = "menuService") private MenuService menuService; /** * * * @author geloin * @date 2012-5-5 上午9:33:22 * @return */ @RequestMapping(value = "to_login") public ModelAndView toLogin(HttpServletResponse response) throws Exception { Map<String, Object> map = new HashMap<String, Object>(); List<Menu> result = this.menuService.find(); map.put("result", result); return new ModelAndView("background/menu", map); } }
通过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页面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Insert title here</title> </head> <body> <c:forEach items="${result }" var="item"> ${item.id }--${item.name }--${item.parentId }--${item.url }--${item.isShowLeft }<br /> </c:forEach> </body> </html>
(10) 显示结果
相关文章推荐
- Spring mvc整合mybatis基于mysql数据库实现用户增删改查及其分页显示的完整入门实例【转】
- Spring mvc整合mybatis基于mysql数据库实现用户增删改查及其分页显示的完整入门实例【转】
- Spring mvc整合mybatis基于mysql数据库实现用户增删改查及其分页显示的完整入门实例【转】
- Spring MVC整合Mybatis实例
- Spring MVC整合Mybatis实例
- Spring mvc整合mybatis基于mysql数据库实现用户增删改查及其分页显示的完整入门实例【转】
- Spring MVC 框架 整合 MyBatis 框架实例
- Spring mvc整合mybatis基于mysql数据库实现用户增删改查及其分页显示的完整入门实例【转】
- Spring mvc整合mybatis基于mysql数据库实现用户增删改查及其分页显示的完整入门实例【转】
- Spring MVC整合Mybatis实例
- spring MVC 与 MyBatis的整合实例
- 使用maven与MyEclipse整合ssm(Spring MVC、Spring、Mybatis)三大框架并实现用户注册(环境搭载+实例源码下载)
- Spring MVC整合Mybatis实例
- Spring+SpringMVC+mybatis+easyui整合实例(三)spring mvc整合及mybatis事务部分
- Spring+SpringMVC+mybatis+easyui整合实例-----spring mvc整合及mybatis事务部分
- Spring mvc整合mybatis基于mysql数据库实现用户增删改查及其分页显示的完整入门实例【转】
- Spring mvc整合mybatis基于mysql数据库实现用户增删改查及其分页显示的完整入门实例【转】
- Mybatis 和 spring mvc 项目整合流程注解版实例(个人理解)
- Spring MVC整合Mybatis实例
- 整合Spring MVC,mybatis,hibernate,freemarker框架实现的自定义注解Validator验证机制实现对敏感词过滤的代码分享