0

0

Maven搭建SpringMVC+Mybatis项目详解

黄舟

黄舟

发布时间:2017-03-04 09:22:30

|

2033人浏览过

|

来源于php中文网

原创

前言

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

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

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

         

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

        

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


 2、修改pom.xml添加对应的包依赖

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

     pom.xml

[html] view plain copy


  1.   
        4.0.0  
        org.andy.sm  
        springmvc_mybatis_demo  
        war  
        0.0.1-SNAPSHOT  
      
        springmvc_mybatis_demo Maven Webapp  
        http://www.php.cn/  
      
          
            UTF-8  
            4.1.4.RELEASE  
            2.5.0  
          
      
          
      
              
                junit  
                junit  
                4.12  
                test  
              
      
              
              
                org.springframework  
                spring-core  
                ${spring.version}  
              
      
              
                org.springframework  
                spring-beans  
                ${spring.version}  
              
      
              
                org.springframework  
                spring-context  
                ${spring.version}  
              
      
              
                org.springframework  
                spring-tx  
                ${spring.version}  
              
      
              
                org.springframework  
                spring-web  
                ${spring.version}  
              
      
              
                org.springframework  
                spring-webmvc  
                ${spring.version}  
              
      
              
                org.springframework  
                spring-jdbc  
                ${spring.version}  
              
      
              
                org.springframework  
                spring-test  
                ${spring.version}  
                test  
              
      
              
              
                org.mybatis  
                mybatis  
                3.2.8  
              
      
              
              
                org.mybatis  
                mybatis-spring  
                1.2.2  
              
      
              
              
                mysql  
                mysql-connector-java  
                5.1.34  
              
      
              
              
                com.alibaba  
                druid  
                1.0.12  
              
      
              
                org.aspectj  
                aspectjweaver  
                1.8.4  
              
      
              
              
                log4j  
                log4j  
                1.2.17  
              
      
              
              
                javax.servlet  
                servlet-api  
                3.0-alpha-1  
              
      
              
                javax.servlet  
                jstl  
                1.2  
              
      
              
              
                org.codehaus.jackson  
                jackson-mapper-asl  
                1.9.13  
              
      
              
                com.alibaba  
                fastjson  
                1.2.3  
              
      
              
                com.fasterxml.jackson.core  
                jackson-annotations  
                ${jackson.version}  
              
      
              
                com.fasterxml.jackson.core  
                jackson-core  
                ${jackson.version}  
              
      
              
                com.fasterxml.jackson.core  
                jackson-databind  
                ${jackson.version}  
              
              
              
                commons-io  
                commons-io  
                2.4  
              
      
              
                commons-fileupload  
                commons-fileupload  
                1.2.2  
              
      
      
          
      
      
          
            springmvc_mybatis_demo  
              
                  
                  
                    org.apache.maven.plugins  
                    maven-surefire-plugin  
                    2.4.2  
                      
                        true  
                      
                  
      
                  
                    org.apache.maven.plugins  
                    maven-war-plugin  
                    2.3  
                      
                        src/main/webapp/WEB-INF/web.xml  
                      
                  
      
                  
                  
                    org.apache.maven.plugins  
                    maven-javadoc-plugin  
                    2.9.1  
                      
                        target/javadoc  
                        target/javadoc  
                        UTF-8  
                        UTF-8  
                        UTF-8  
                        private  
                      
                  
      
                  
                  
                    org.codehaus.cargo  
                    cargo-maven2-plugin  
                    1.0  
                      
                          
                            tomcat6x  
                            D:\WebServer\apache-tomcat-6.0.39  
                          
                          
                            existing  
                            D:\WebServer\apache-tomcat-6.0.39  
                          
                      
                  
      
              
      
          
    


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

      自动生成表的Model,Mapping,Dao文件,先关使用见文章 http://www.php.cn/ 

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

      其中生成的Model中UserInfo如下:

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


[java] view
 plain copy
package org.andy.shop.model;  
  
import java.util.List;  
  
public class UserInfo {  
    private Integer id;  
  
    private String uname;  
  
    private Integer unumber;  
  
    private List 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 getCourseInfos() {  
        return courseInfos;  
    }  
  
}

dao包中的userinfomapper.java

[java] view
 plain copy
 
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 selectAll();  
}




mapping 中的配置文件UserInfoMapper.xml


[html] view
 plain copy
 
  
  
  
      
          
          
          
      
      
        id, uname, unumber  
      
      
      
        delete from  
        user_info  
        where id = #{id,jdbcType=INTEGER}  
      
      
        insert into user_info (id,  
        uname, unumber  
        )  
        values (#{id,jdbcType=INTEGER},  
        #{uname,jdbcType=VARCHAR},  
        #{unumber,jdbcType=INTEGER}  
        )  
      
      
        insert into user_info  
          
              
                id,  
              
              
                uname,  
              
              
                unumber,  
              
          
          
              
                #{id,jdbcType=INTEGER},  
              
              
                #{uname,jdbcType=VARCHAR},  
              
              
                #{unumber,jdbcType=INTEGER},  
              
          
      
      
        update user_info  
          
              
                uname = #{uname,jdbcType=VARCHAR},  
              
              
                unumber = #{unumber,jdbcType=INTEGER},  
              
          
        where id = #{id,jdbcType=INTEGER}  
      
      
        update user_info  
        set uname = #{uname,jdbcType=VARCHAR},  
        unumber =  
        #{unumber,jdbcType=INTEGER}  
        where id = #{id,jdbcType=INTEGER}  
      
  
      
          
              
              
              
          
  
  
      
      



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

     在src/main/resources创建spring的配置文件,这里创建了spring.xml,信息如下:

   

[html] view
 plain copy
 
  
  
  
      
      
  
      
      
  



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

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

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

 

[plain] view plain copy


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

5.2、配置Mybatis相关信息

    以下是mybatis的配置信息:spring-mybatis.xml(ps:名字可随便起)

[html] view plain copy


  
  
  
      
      
          
          
          
  
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
          
      
  
      
      
          
          
          
      
  
      
          
          
      
  
      
      
          
      
  
      
      
  
      
      
          
              
              
              
  
              
              
              
  
          
      
      
      
          
          
      
  



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



6、引入日志

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

   log4j.properties



[plain] view plain copy


### set log levels ###  
log4j.rootLogger = INFO , C , D , E   
  
### console ###  
log4j.appender.C = org.apache.log4j.ConsoleAppender  
log4j.appender.C.Target = System.out  
log4j.appender.C.layout = org.apache.log4j.PatternLayout  
log4j.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.DailyRollingFileAppender  
log4j.appender.D.File = ../logs/springmvc-mybatis-demo.log  
log4j.appender.D.Append = true  
log4j.appender.D.Threshold = INFO   
log4j.appender.D.layout = org.apache.log4j.PatternLayout  
log4j.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.DailyRollingFileAppender  
log4j.appender.E.File = ../logs/springmvc-mybatis-demo_error.log   
log4j.appender.E.Append = true  
log4j.appender.E.Threshold = ERROR   
log4j.appender.E.layout = org.apache.log4j.PatternLayout  
log4j.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接口:


[java] view plain copy


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 getUsers();  
      
    int insert(UserInfo userInfo);  
}


   UserServiceImpl实现Service:



[java] view plain copy

 
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 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测试类:


[java] view plain copy

 
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.xml",  
        "classpath:spring-mybatis.xml" })  
public class TestUserService {  
  
    private static final Logger LOGGER = Logger  
            .getLogger(TestUserService.class);  
  
    @Autowired  
    private UserService userService;  
  
      
    @Test  
    public void testQueryById1() {  
        UserInfo userInfo = userService.getUserById(1);  
        LOGGER.info(JSON.toJSON(userInfo));  
    }  
  
    @Test  
    public void testQueryAll() {  
        List userInfos = userService.getUsers();  
        LOGGER.info(JSON.toJSON(userInfos));  
    }  
  
    @Test  
    public void testInsert() {  
        UserInfo userInfo = new UserInfo();  
        userInfo.setUname("xiaoming");  
        userInfo.setUnumber(4);  
        int result = userService.insert(userInfo);  
        System.out.println(result);  
    }  
}



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

猫宁Morning公益商城系统
猫宁Morning公益商城系统

猫宁Morning公益商城是中国公益性在线电子商城,以商城B2C模式运营的公益在线商城,是一家致力于将传统公益商城互联网化的创新公益商城。该网上商城系统分为电子商城系统、公益商城系统、后台管理系统,使用Maven对项目进行模块化管理,搭建多模块企业级项目。Morning是在Spring Framework基础上搭建的一个Java基础开发平台,以Spring MVC为模型视图控制器,MyBatis为

下载


9、引入SpringMVC

9.1 配置SpringMVC配置信息

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

 


[html] view plain copy


  
  
  
      
      
  
      
      
          
              
                text/html;charset=UTF-8  
              
          
      
  
      
      
          
              
                  
                  
              
          
      
  
      
      
          
          
          
      
  
      
      
          
            UTF-8  
          
          
              
            32505856  
          
          
            4096  
          
      
  



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


9.2、Web容器web.xml配置

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




[html] view
 plain copy
 
  
  
  
    springmvc_mybatis_demo  
  
      
        contextConfigLocation  
        classpath:spring.xml,classpath:spring-mybatis.xml  
      
  
      
        encodingFilter  
        org.springframework.web.filter.CharacterEncodingFilter  
          
            encoding  
            utf-8  
          
          
            forceEncoding  
            true  
          
      
      
        encodingFilter  
        /*  
      
  
      
        org.springframework.web.context.ContextLoaderListener  
      
  
      
      
        org.springframework.web.util.IntrospectorCleanupListener  
      
  
      
        spring mvc servlet  
        rest  
        org.springframework.web.servlet.DispatcherServlet  
          
            contextConfigLocation  
              
                classpath:spring-mvc.xml  
              
          
        1  
      
      
        rest  
        *.htmls  
      
  
      
      
        30  
      
  
      
        index.jsp  
      



9.3、Controller控制层

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

[java] view plain copy


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 userInfos = userService.getUsers();  
        return userInfos;  
    }  
}


9.4、视图层

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

 


[html] view plain copy

 
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>  
  
  
  
  
  
userInfo  
  
  
  
     姓名: ${userInfo.uname}  
  
  


9.5、项目总目录结构

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

     

10、项目测试

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

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

     


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

    

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

博客来源:http://www.php.cn/

源码地址:http://www.php.cn/


后续 

    在测试时,我们并不需要要启动web容器,junit测试时,需要以下几点注意事项:


   1、测试时,将pom.xml文件中的依赖包的范围去掉

         junit,spring-test,servlet-api的scope范围去掉。


    2、在测试编译时,可能会把mybatis的映射配置文件.xml过滤掉,所以需要在pom.xml中添加如下配置:

       


[html] view plain copy

 
  
      
        src/main/resources  
          
            **/*.properties  
            **/*.xml  
          
        true  
      
      
        src/main/java  
          
            **/*.xml  
          
        true  
      


   上述文件添加在节点中。


   3、项目导入注意事项


     下载完之后,只保留pom.xml 和 src两个文件,其他的删除。


       

        右击“Import..” 选择maven项目导入(所以首先要将maven插件装好,maven配好),如下:

     

         导入以后项目会出现叉号,项目是在jdk1.7基础上运行的,需要配置一下项目的环境(jdk装1.7及以上),右击该项目选择“Properties”弹出如下框:


      上述三场需要修改:

           1、Java Build Path 选“Libraries”,将JRE System Library改为安装的javase-1.7

           2、Java Compile 中的JDK Compliance 中Compiler Compliance level 改为 1.7

           3、Project Facets 中 将Dynamic Web Module 改为2.5及以上

                                                     Java中的版本改为 1.7

 以上就是Maven搭建SpringMVC+Mybatis项目详解的内容,更多相关内容请关注PHP中文网(www.php.cn)!


热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
go语言 注释编码
go语言 注释编码

本专题整合了go语言注释、注释规范等等内容,阅读专题下面的文章了解更多详细内容。

32

2026.01.31

go语言 math包
go语言 math包

本专题整合了go语言math包相关内容,阅读专题下面的文章了解更多详细内容。

23

2026.01.31

go语言输入函数
go语言输入函数

本专题整合了go语言输入相关教程内容,阅读专题下面的文章了解更多详细内容。

16

2026.01.31

golang 循环遍历
golang 循环遍历

本专题整合了golang循环遍历相关教程,阅读专题下面的文章了解更多详细内容。

5

2026.01.31

Golang人工智能合集
Golang人工智能合集

本专题整合了Golang人工智能相关内容,阅读专题下面的文章了解更多详细内容。

6

2026.01.31

2026赚钱平台入口大全
2026赚钱平台入口大全

2026年最新赚钱平台入口汇总,涵盖任务众包、内容创作、电商运营、技能变现等多类正规渠道,助你轻松开启副业增收之路。阅读专题下面的文章了解更多详细内容。

268

2026.01.31

高干文在线阅读网站大全
高干文在线阅读网站大全

汇集热门1v1高干文免费阅读资源,涵盖都市言情、京味大院、军旅高干等经典题材,情节紧凑、人物鲜明。阅读专题下面的文章了解更多详细内容。

195

2026.01.31

无需付费的漫画app大全
无需付费的漫画app大全

想找真正免费又无套路的漫画App?本合集精选多款永久免费、资源丰富、无广告干扰的优质漫画应用,涵盖国漫、日漫、韩漫及经典老番,满足各类阅读需求。阅读专题下面的文章了解更多详细内容。

170

2026.01.31

漫画免费在线观看地址大全
漫画免费在线观看地址大全

想找免费又资源丰富的漫画网站?本合集精选2025-2026年热门平台,涵盖国漫、日漫、韩漫等多类型作品,支持高清流畅阅读与离线缓存。阅读专题下面的文章了解更多详细内容。

85

2026.01.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号