Spring MVC整合Mybatis实例

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

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

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

Spring MVC整合Mybatis实例_第1张图片

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



	
	
	

	
	
		
		
		
		
	

	
	
		
	

	
	
		
	
	
	
	

	
	
		
	
	

        (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 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 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 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 map = new HashMap();

		List 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"%>




Insert title here


	
		${item.id }--${item.name }--${item.parentId }--${item.url }--${item.isShowLeft }

        (10) 显示结果

Spring MVC整合Mybatis实例_第2张图片

你可能感兴趣的:(Framework)