标签:
本文基于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 MVC整合Mybatis实例
标签:
原文地址:http://www.cnblogs.com/zhenjava/p/4714325.html