你的位置:首页 > ASP.net教程

[ASP.net教程]Maven搭建SpringMVC+Mybatis项目详解


整理的比较粗略,将代码分享给大家,【源码地址获取】

前言

         最近比较闲,复习搭建一下项目,这次主要使用Spring+SpringMVC+Mybatis。项目持久层使用Mybatis3,控制层使用SpringMVC4.1,使用Spring4.1管理控制器,数据库连接池使用druid数据源,该项数据库暂使用MySQL。

 

1、 数据库表结构以及maven项目结构

         数据表非常的简单(不是重点),如下:

         

       创建maven项目,详细见上一篇maven创建(http://blog.csdn.net/fengshizty/article/details/43019561),创建Maven Project时,将Filter选择为org.apache.maven.archetypes。填写完相关项目坐标信息后项目结构如下:

        

     注:若无src/main/java,src/test/java,src/test/resources时,创建这个几个Source Folder。

 

 2、修改pom.

     这儿将全部使用的Maven依赖贴出了,对应什么作用上面都有解释,如下:

     pom.

<project 

3、使用Generator自动生成Mybatis相关表信息

      自动生成表的Model,Mapping,Dao文件,先关使用见文章 http://blog.csdn.net/fengshizty/article/details/43086833 

并将其导入到项目的src/main/java包中。

      其中生成的Model中UserInfo如下:

UserInfo.java(其中List<CourseInfo> courseInfos手动添加的)

package org.andy.shop.model;import java.util.List;public class UserInfo {	private Integer id;	private String uname;	private Integer unumber;	private List<CourseInfo> courseInfos;	public Integer getId() {		return id;	}	public void setId(Integer id) {		this.id = id;	}	public String getUname() {		return uname;	}	public void setUname(String uname) {		this.uname = uname == null ? null : uname.trim();	}	public Integer getUnumber() {		return unumber;	}	public void setUnumber(Integer unumber) {		this.unumber = unumber;	}	public List<CourseInfo> getCourseInfos() {		return courseInfos;	}}


   Dao包中的UserInfoMapper.java

  

package org.andy.shop.dao;import java.util.List;import org.andy.shop.model.UserInfo;public interface UserInfoMapper {    int deleteByPrimaryKey(Integer id);    int insert(UserInfo record);    int insertSelective(UserInfo record);    UserInfo selectByPrimaryKey(Integer id);    int updateByPrimaryKeySelective(UserInfo record);    int updateByPrimaryKey(UserInfo record);        List<UserInfo> selectAll();}


mapping 中的配置文件UserInfoMapper.

<?



4、引入Spring并配置相关属性

     在src/main/resources创建spring的配置文件,这里创建了spring.

   

<?

 

5、引入Mybatis并配置数据连接池等信息

   5.1、数据连接池druid配置信息 

   配置连接池配置信息在config.properties中,如下:

 

#mysql version database druid settingvalidationQuery=SELECT 1jdbc.url=jdbc:mysql://localhost:3306/shop?useUnicode=true&characterEncoding=utf-8jdbc.username=rootjdbc.password=12345

 

  5.2、配置Mybatis相关信息

    以下是mybatis的配置信息:spring-mybatis.

<?


主要配置数据连接池,事务管理, mybatis关联映射等,事务采用aop的声明式事务。

 

6、引入日志

     在src/main/resources中添加log4j日志配置信息:

   log4j.properties

### set log levels ###log4j.rootLogger = INFO , C , D , E ### console ###log4j.appender.C = org.apache.log4j.ConsoleAppenderlog4j.appender.C.Target = System.outlog4j.appender.C.layout = org.apache.log4j.PatternLayoutlog4j.appender.C.layout.ConversionPattern = [springmvc_mybatis_demo][%p] [%-d{yyyy-MM-dd HH:mm:ss}] %C.%M(%L) | %m%n### log file ###log4j.appender.D = org.apache.log4j.DailyRollingFileAppenderlog4j.appender.D.File = ../logs/springmvc-mybatis-demo.loglog4j.appender.D.Append = truelog4j.appender.D.Threshold = INFO log4j.appender.D.layout = org.apache.log4j.PatternLayoutlog4j.appender.D.layout.ConversionPattern = [springmvc_mybatis_demo][%p] [%-d{yyyy-MM-dd HH:mm:ss}] %C.%M(%L) | %m%n### exception ###log4j.appender.E = org.apache.log4j.DailyRollingFileAppenderlog4j.appender.E.File = ../logs/springmvc-mybatis-demo_error.log log4j.appender.E.Append = truelog4j.appender.E.Threshold = ERROR log4j.appender.E.layout = org.apache.log4j.PatternLayoutlog4j.appender.E.layout.ConversionPattern = [sspringmvc_mybatis_demo][%p] [%-d{yyyy-MM-dd HH:mm:ss}] %C.%M(%L) | %m%n

7、创建Service

    在src/main/java中创建相关的org.andy.shop.service包和org.andy.shop.service.Impl包。

    UserService接口:

 

package org.andy.shop.service;import java.util.List;import org.andy.shop.model.UserInfo;/**   * 创建时间:2015-1-27 下午5:15:03   * @author andy   * @version 2.2   */public interface UserService {	UserInfo getUserById(int id);		List<UserInfo> getUsers();		int insert(UserInfo userInfo);}

   UserServiceImpl实现Service:

package org.andy.shop.service.impl;import java.util.List;import org.andy.shop.dao.UserInfoMapper;import org.andy.shop.model.UserInfo;import org.andy.shop.service.UserService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;/** * 创建时间:2015-1-27 下午5:22:59 *  * @author andy * @version 2.2 */@Service("userService")public class UserServiceImpl implements UserService {	@Autowired	private UserInfoMapper userInfoMapper;	@Override	public UserInfo getUserById(int id) {		return userInfoMapper.selectByPrimaryKey(id);	}	@Override	public List<UserInfo> getUsers() {		return userInfoMapper.selectAll();	}	@Override	public int insert(UserInfo userInfo) {				int result = userInfoMapper.insert(userInfo);				System.out.println(result);		return result;	}}

 

8、测试Spring和Mybatis配置

   在src/test/java中写测试类,检测是否能够读出数据,若能读出则证明Spring+Mybatis整合成功。

TestUserService测试类:

package org.andy.shop.service;import java.util.List;import org.andy.shop.model.UserInfo;import org.apache.log4j.Logger;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import com.alibaba.fastjson.JSON;/** * 创建时间:2015-1-27 下午10:45:38 *  * @author andy * @version 2.2 */@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(locations = { "classpath:spring.


若是测试成功,那证明已经成功了一半了。

9、引入SpringMVC

   9.1 配置SpringMVC配置信息

    SpringMVC的配置信息主要包括控制层Controller的bean管理,视图层和控制层配置等等,下面是spring-mvc.

 

<?


  自动扫描org.andy.shop.controller报下还有@Controller的控制层,注入为bean。

 9.2、Web容器web.

    web容器配置启动加载的配置文件,设置SpringMVC拦截的请求(此处拦截.htmls结尾的url请求)

<?



  9.3、Controller控制层

    在org.andy.shop.controller创建控制层,如UserController.java

 

package org.andy.shop.controller;import java.util.List;import org.andy.shop.model.UserInfo;import org.andy.shop.service.UserService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.ui.ModelMap;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.ResponseBody;/**   * 创建时间:2015-1-28 下午1:17:27   * @author andy   * @version 2.2   */@Controller@RequestMapping("/user")public class UserController {	@Autowired	private UserService userService;		@RequestMapping("/showInfo/{userId}")	public String showUserInfo(ModelMap modelMap, @PathVariable int userId){		UserInfo userInfo = userService.getUserById(userId);		modelMap.addAttribute("userInfo", userInfo);		return "/user/showInfo";	}		@RequestMapping("/showInfos")	public @ResponseBody Object showUserInfos(){		List<UserInfo> userInfos = userService.getUsers();		return userInfos;	}}

9.4、视图层

  在WEB-INF创建视图总目录views(为了安全起见一般都在WEB-INF下创建),创建/user/showInfo.jsp视图文件。

 

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><!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>userInfo</title></head><body>     姓名: ${userInfo.uname}</body></html>

 

 9.5、项目总目录结构

   到此为demo以及基本创建完成总目录如下:

     

10、项目测试

    将项目编译,Maven build...输入clean compile package,部署到Tomcat服务器,启动项目。

   测试1:测试第一个url,  http://localhost:8080/springmvc_mybatis_demo/user/showInfo/1.htmls

     

 

   测试2:测试第二个json数据返回的url,  http://localhost:8080/springmvc_mybatis_demo/user/showInfos.htmls

    

ok,数据正常显示,SpringMVC+Mybatis搭建成功。