示例下载地址:http://download.csdn.net/detail/geloin/4506640
本文基于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:
-
http:
-
http:
-
http:
-
http:
-
http:
-
-
<!-- 引入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:
-
username=root
-
password=root
(4) 在com.geloin.spring.entity包下添加实体类,实体类对应于数据表,其属性与数据表相同或多于数据表。
(5) 在com.geloin.spring.mapper下添加实体类与数据表的映射关系(com.geloin.spring.mapper与applicationContext.xml中的配置一致)。
-
-
-
-
-
-
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;
-
-
-
-
-
-
-
@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接口
-
-
-
-
-
-
package com.geloin.spring.service;
-
-
import java.util.List;
-
-
import com.geloin.spring.entity.Menu;
-
-
-
-
-
-
-
public interface MenuService {
-
-
-
-
-
-
-
-
List<Menu> find();
-
}
(7) 在com.geloin.spring.service.impl中添加MenuServiceImpl作为MenuService接口的实现
-
-
-
-
-
-
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;
-
-
-
-
-
-
-
@Repository(value = "menuService")
-
@Transactional
-
public class MenuServiceImpl implements MenuService {
-
-
@Resource(name = "menuMapper")
-
private MenuMapper menuMapper;
-
-
-
-
-
-
-
@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
-
-
-
-
-
-
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;
-
-
-
-
-
-
-
@Controller
-
@RequestMapping(value = "background")
-
public class LoginController {
-
-
@Resource(name = "menuService")
-
private MenuService menuService;
-
-
-
-
-
-
-
-
-
@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 整合Mybatis实例
原文:http://blog.csdn.net/xiaole0313/article/details/46925873