Home> Java> javaTutorial> body text

Detailed explanation of Maven building SpringMVC+Mybatis project

黄舟
Release: 2017-03-04 09:22:30
Original
1873 people have browsed it

Foreword

I have been relatively free recently, reviewing and building a project. This time I mainly used spring+SpringMVC+Mybatis. The project persistence layer uses Mybatis3, the control layer uses SpringMVC4.1, uses Spring4.1 management controller, the database connection pool uses druid data source, and the database temporarily uses MySQL.结1, database table structure and Maven project structure

The data table is very simple (not the point), as follows:



, see the previous Maven creation (http://www.php. cn/), when creating a Maven Project, select Filter as org.apache.maven.archetypes. After filling in the relevant project coordinates information, the project structure is as follows:

Note: If there is no SRC/main/java, src/test/java, src/test/resources, create these several sources Folder.

2. Modify pom.xml to add the corresponding package dependencies

All used Maven dependencies are posted here, and their corresponding functions are explained above, as follows:

pom.xml

[html] view plain copy
 4.0.0 org.andy.sm springmvc_mybatis_demo war 0.0.1-SNAPSHOT springmvc_mybatis_demo Maven Webapp //m.sbmmt.com/  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      
Copy after login
3. Use Generator to automatically generate Mybatis related table information Automatically generate table Model, Mapping, Dao files, please see the article http://www.php .cn/ and import it into the project’s src/main/java package.    The UserInfo in the generated Model is as follows:

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; } }
Copy after login


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(); }
Copy after login





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}          
Copy after login





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

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

[html] view plain copy       
Copy after login




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
Copy after login

5.2、配置Mybatis相关信息

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

[html]view plain copy


                                                                   
Copy after login



主要配置数据连接池,事务管理, 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
Copy after login

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); }
Copy after login


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; } }
Copy after login




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); } }
Copy after login



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


9、引入SpringMVC

9.1 配置SpringMVC配置信息

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


[html]view plain copy


        text/html;charset=UTF-8                      UTF-8    32505856   4096   
Copy after login



自动扫描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  
Copy after login




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; } }
Copy after login


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}
Copy after login



9.5、项目总目录结构

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


10、项目测试

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

测试1:测试第一个url, //m.sbmmt.com/:8080/springmvc_mybatis_demo/user/showInfo/1.htmls


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


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

博客来源://m.sbmmt.com/

源码地址://m.sbmmt.com/


后续

在测试时,我们并不需要要启动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  
Copy after login



上述文件添加在 节点中。


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

# Comp 中的# 中Compiler Compliance level 改為1.7

## 3、Project Facets 中將Dynamic Web Module 改為2.5以上

## Java中的版本改為1.7

以上為Maven搭建SpringMVC+Mybatis專案詳解的內容,更多相關內容請關注PHP中文網(m.sbmmt.com)!


#
Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!