Spirng+SpringMVC+Maven+Mybatis+MySQL项目搭建

这篇文章主要讲解使用eclipse对Spirng+SpringMVC+Maven+Mybatis+MySQL项目搭建过程,包括里面步骤和里面的配置文件如何配置等等都会详细说明。

如果还没有搭建好环境(主要是Maven+MySQL的配置)的猿友可以参考博主以前的一篇文章:
http://blog.csdn.net/u013142781/article/details/50300233

接下来马上进入项目搭建过程:

1、创建表,并插入数据:

CREATE TABLE `t_user` (
  `USER_ID` int(11) NOT NULL AUTO_INCREMENT,
  `USER_NAME` char(30) NOT NULL,
  `USER_PASSWORD` char(10) NOT NULL,
  PRIMARY KEY (`USER_ID`),
  KEY `IDX_NAME` (`USER_NAME`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8
INSERT INTO t_user (USER_ID, USER_NAME, USER_PASSWORD) VALUES (1, 'luoguohui', '123456');
INSERT INTO t_user (USER_ID, USER_NAME, USER_PASSWORD) VALUES (2, 'zhangsan', '123456');

2、Maven工程创建

这里写图片描述

3、选择快速框架

这里写图片描述

4、输出项目名,包(Packaging,如果只是普通的项目,选jar就好了,如果是web项目就选war,这里是web项目,所以选择war)

Spirng+SpringMVC+Maven+Mybatis+MySQL项目搭建_第1张图片

5、创建好的目录如下:

这里写图片描述

6、添加包的依赖,编辑pom.xml文件添加如下依赖:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0modelVersion>
  <groupId>com.luogroupId>
  <artifactId>first_maven_projectartifactId>
  <version>0.0.1-SNAPSHOTversion>
  <packaging>warpackaging>

  <properties>
        
        <spring.version>3.2.8.RELEASEspring.version>
        
        <slf4j.version>1.6.6slf4j.version>
        <log4j.version>1.2.12log4j.version>
        
        <junit.version>4.10junit.version>
        
        <mybatis.version>3.2.1mybatis.version>
  properties>

  <dependencies>
        
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-coreartifactId>
            <version>${spring.version}version>
        dependency>
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-webmvcartifactId>
            <version>${spring.version}version>
        dependency>
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-contextartifactId>
            <version>${spring.version}version>
        dependency>
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-context-supportartifactId>
            <version>${spring.version}version>
        dependency>
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-aopartifactId>
            <version>${spring.version}version>
        dependency>
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-aspectsartifactId>
            <version>${spring.version}version>
        dependency>
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-txartifactId>
            <version>${spring.version}version>
        dependency>
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-jdbcartifactId>
            <version>${spring.version}version>
        dependency>
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-webartifactId>
            <version>${spring.version}version>
        dependency>

        
        <dependency>
            <groupId>junitgroupId>
            <artifactId>junitartifactId>
            <version>${junit.version}version>
            <scope>testscope>
        dependency>

        
        
        <dependency>
            <groupId>log4jgroupId>
            <artifactId>log4jartifactId>
            <version>${log4j.version}version>
        dependency>
        <dependency>
            <groupId>org.slf4jgroupId>
            <artifactId>slf4j-apiartifactId>
            <version>${slf4j.version}version>
        dependency>
        <dependency>
            <groupId>org.slf4jgroupId>
            <artifactId>slf4j-log4j12artifactId>
            <version>${slf4j.version}version>
        dependency>
        

        
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-testartifactId>
            <version>${spring.version}version>
            <scope>testscope>
        dependency>

        
        <dependency>
            <groupId>org.mybatisgroupId>
            <artifactId>mybatisartifactId>
            <version>${mybatis.version}version>
        dependency>

        
        <dependency>
            <groupId>org.mybatisgroupId>
            <artifactId>mybatis-springartifactId>
            <version>1.2.0version>
        dependency>

        
        <dependency>
            <groupId>mysqlgroupId>
            <artifactId>mysql-connector-javaartifactId>
            <version>5.1.29version>
        dependency>
    dependencies>

project>

7、配置文件:

Spirng+SpringMVC+Maven+Mybatis+MySQL项目搭建_第2张图片

7.1、mybatis包下添加mybatis-config.xml文件(mybatis配置文件):

  
  
<configuration>    
configuration>

7.2、properties包下添加jdbc.properties文件(数据源配置文件):

jdbc_driverClassName=com.mysql.jdbc.Driver
jdbc_url=jdbc:mysql://localhost:3306/luo
jdbc_username=root
jdbc_password=root

7.3、mapper包下userMapper.xml配置文件(表映射文件):

  

<mapper namespace="com.luo.dao.UserDao">

    <resultMap id="BaseResultMap" type="com.luo.domain.User">
        <id column="USER_ID" property="userId" jdbcType="INTEGER" />
        <result column="USER_NAME" property="userName" jdbcType="CHAR" />
        <result column="USER_PASSWORD" property="userPassword" jdbcType="CHAR" />
    resultMap>
    
    <select id="selectUserById" parameterType="int" resultMap="BaseResultMap">
        SELECT * FROM t_user WHERE USER_ID = #{userId}
    select>
mapper>

7.4、spring配置文件application.xml:


<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
    xmlns:aop="http://www.springframework.org/schema/aop"
    xsi:schemaLocation="  
           http://www.springframework.org/schema/beans  
           http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
           http://www.springframework.org/schema/aop  
           http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
           http://www.springframework.org/schema/context  
           http://www.springframework.org/schema/context/spring-context-3.0.xsd">

       
     <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <list>
               <value>classpath:properties/*.propertiesvalue>
                
            list>
        property>
    bean>



    
    <bean id="dataSource"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        
        
       
        <property name="driverClassName">
            <value>${jdbc_driverClassName}value>
        property>
        <property name="url">
            <value>${jdbc_url}value>
        property>
        <property name="username">
            <value>${jdbc_username}value>
        property>
        <property name="password">
            <value>${jdbc_password}value>
        property>
    bean>

    
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage"
            value="com.luo.dao" />
    bean>

    
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="mapperLocations" value="classpath:mapper/*.xml"/>  
        <property name="configLocation" value="classpath:mybatis/mybatis-config.xml" />
        
    bean>

    
    <context:component-scan base-package="com.luo.service" />

beans>

8、接口和类的配置:

Spirng+SpringMVC+Maven+Mybatis+MySQL项目搭建_第3张图片

8.1、com.luo.domain下添加User.java文件:

package com.luo.domain;

public class User {

    private Integer userId;  
    private String userName;  
    private String userPassword;  


    public Integer getUserId() {  
        return userId;  
    }  

    public void setUserId(Integer userId) {  
        this.userId = userId;  
    }  

    public String getUserName() {  
        return userName;  
    }  

    public void setUserName(String userName) {  
        this.userName = userName;  
    }  

    public String getUserPassword() {  
        return userPassword;  
    }  

    public void setUserPassword(String userPassword) {  
        this.userPassword = userPassword;  
    }  

}

8.2、com.luo.dao下添加UserDao.java文件:

package com.luo.dao;

import com.luo.domain.User;

public interface UserDao {

    /**
     * @param userId
     * @return User
     */
    public User selectUserById(Integer userId);  

}

8.3、com.luo.service下添加UserService.java接口和UserServiceImpl实现类:

package com.luo.service;

import com.luo.domain.User;

public interface UserService {
    User selectUserById(Integer userId);  
}
package com.luo.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.luo.dao.UserDao;
import com.luo.domain.User;

@Service  
public class UserServiceImpl implements UserService {

    @Autowired  
    private UserDao userDao;  

    public User selectUserById(Integer userId) {  
        return userDao.selectUserById(userId);  

    }  
}

9、单元测试

Spirng+SpringMVC+Maven+Mybatis+MySQL项目搭建_第4张图片

9.1、com.luo.baseTest下添加SpringTestCase.java:

package com.luo.baseTest;

import org.junit.runner.RunWith;  
import org.springframework.test.context.ContextConfiguration;  
import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;  
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;  

//指定bean注入的配置文件  
@ContextConfiguration(locations = { "classpath:application.xml" })  
//使用标准的JUnit @RunWith注释来告诉JUnit使用Spring TestRunner  
@RunWith(SpringJUnit4ClassRunner.class)  
public class SpringTestCase extends AbstractJUnit4SpringContextTests {

}

9.2、com.luo.service添加UserServiceTest.java:

package com.luo.service;

import org.junit.Test;  
import org.springframework.beans.factory.annotation.Autowired;  
import com.luo.baseTest.SpringTestCase;  
import com.luo.domain.User;

public class UserServiceTest extends SpringTestCase {

    @Autowired  
    private UserService userService; 

    @Test  
    public void selectUserByIdTest(){  
        User user = userService.selectUserById(1);  
        System.out.println(user.getUserName() + ":" + user.getUserPassword());
    }  
}

9.3、运行单元测试,UserServiceTest右键Run As –>Junit Test,运行结果:

Spirng+SpringMVC+Maven+Mybatis+MySQL项目搭建_第5张图片


下面加入springmvc,并转换maven工程为web项目


10、转换成web项目:

如果上面webapp为空的,说明这个项目还不是web项目:

Spirng+SpringMVC+Maven+Mybatis+MySQL项目搭建_第6张图片

接下来打开如下页面。将红框里面的勾去掉,确定(OK):

Spirng+SpringMVC+Maven+Mybatis+MySQL项目搭建_第7张图片

然后重新打开刚刚那个页面,把Dynamic web Module勾上,就会看到红框的内容,点击:

Spirng+SpringMVC+Maven+Mybatis+MySQL项目搭建_第8张图片

然后配置如下:

Spirng+SpringMVC+Maven+Mybatis+MySQL项目搭建_第9张图片

那么webapp下就会生成这些东西:

Spirng+SpringMVC+Maven+Mybatis+MySQL项目搭建_第10张图片

11、配置springmvc

11.1、pom.xml文件添加依赖,修改后配置如下:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0modelVersion>
  <groupId>com.luogroupId>
  <artifactId>first_maven_projectartifactId>
  <version>0.0.1-SNAPSHOTversion>
  <packaging>warpackaging>

  <properties>
        
        <spring.version>3.2.8.RELEASEspring.version>
        
        <junit.version>4.10junit.version>
        
        <mybatis.version>3.2.1mybatis.version>
  properties>

  <dependencies>
        
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-coreartifactId>
            <version>${spring.version}version>
        dependency>
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-webmvcartifactId>
            <version>${spring.version}version>
        dependency>
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-contextartifactId>
            <version>${spring.version}version>
        dependency>
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-context-supportartifactId>
            <version>${spring.version}version>
        dependency>
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-aopartifactId>
            <version>${spring.version}version>
        dependency>
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-aspectsartifactId>
            <version>${spring.version}version>
        dependency>
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-txartifactId>
            <version>${spring.version}version>
        dependency>
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-jdbcartifactId>
            <version>${spring.version}version>
        dependency>
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-webartifactId>
            <version>${spring.version}version>
        dependency>

        
        <dependency>
            <groupId>junitgroupId>
            <artifactId>junitartifactId>
            <version>${junit.version}version>
            <scope>testscope>
        dependency>

        
        <dependency>
            <groupId>org.springframeworkgroupId>
            <artifactId>spring-testartifactId>
            <version>${spring.version}version>
            <scope>testscope>
        dependency>

        
        <dependency>
            <groupId>org.mybatisgroupId>
            <artifactId>mybatisartifactId>
            <version>${mybatis.version}version>
        dependency>

        
        <dependency>
            <groupId>org.mybatisgroupId>
            <artifactId>mybatis-springartifactId>
            <version>1.2.0version>
        dependency>

        
        <dependency>
            <groupId>mysqlgroupId>
            <artifactId>mysql-connector-javaartifactId>
            <version>5.1.29version>
        dependency>

          
        <dependency>  
            <groupId>javaxgroupId>  
            <artifactId>javaee-apiartifactId>  
            <version>6.0version>  
            <scope>providedscope>  
        dependency>  

          
        <dependency>  
            <groupId>javaxgroupId>  
            <artifactId>javaee-web-apiartifactId>  
            <version>6.0version>  
            <scope>providedscope>  
        dependency>  

    dependencies>

project>

其实也就增加了下面两个


<dependency>
    <groupId>javaxgroupId>
    <artifactId>javaee-apiartifactId>
    <version>6.0version>
    <scope>providedscope>
dependency>


<dependency>
    <groupId>javaxgroupId>
    <artifactId>javaee-web-apiartifactId>
    <version>6.0version>
    <scope>providedscope>
dependency>

11.2、在src/main/resource中添加springmvc文件夹,然后添加文件spring-mvc.xml,内容如下:


<beans xmlns="http://www.springframework.org/schema/beans"
  xmlns:p="http://www.springframework.org/schema/p"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xmlns:context="http://www.springframework.org/schema/context"
  xmlns:mvc="http://www.springframework.org/schema/mvc"
  xsi:schemaLocation="
    http://www.springframework.org/schema/beans
    http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-3.2.xsd
    http://www.springframework.org/schema/mvc
    http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd">

   <mvc:annotation-driven /> 
   
   <context:component-scan base-package="com.luo.controller"/>  

   
   <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"
      p:prefix="/WEB-INF/view/" p:suffix=".jsp"/>
beans>

11.3、配置web.xml


<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    id="WebApp_ID" version="2.5">
    <display-name>Archetype Created Web Applicationdisplay-name>
   
    <welcome-file-list>
        <welcome-file>index.jspwelcome-file>
    welcome-file-list>

    
    <context-param>
        <param-name>contextConfigLocationparam-name>
        <param-value>classpath:application.xmlparam-value>
    context-param>
    
    <context-param>
        <param-name>webAppRootKeyparam-name>
        <param-value>springmvc.rootparam-value>
    context-param>


    
    <filter>
        <filter-name>SpringEncodingFilterfilter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilterfilter-class>
        <init-param>
            <param-name>encodingparam-name>
            <param-value>UTF-8param-value>
        init-param>
        <init-param>
            <param-name>forceEncodingparam-name>
            <param-value>trueparam-value>
        init-param>
    filter>
    <filter-mapping>
        <filter-name>SpringEncodingFilterfilter-name>
        <url-pattern>/*url-pattern>
    filter-mapping>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListenerlistener-class>
    listener>

    
    <servlet>
        <servlet-name>dispatcherServletservlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServletservlet-class>
        <init-param>
            <param-name>contextConfigLocationparam-name>
            
            <param-value>classpath:springmvc/spring-mvc.xmlparam-value>
        init-param>
        <load-on-startup>1load-on-startup>
    servlet>
    
    <servlet-mapping>
        <servlet-name>dispatcherServletservlet-name>
        <url-pattern>/url-pattern>
    servlet-mapping>

    
    <error-page>
        
        <error-code>404error-code>
        <location>/WEB-INF/errorpage/404.jsplocation>
    error-page>
    <error-page>
        
        <error-code>405error-code>
        <location>/WEB-INF/errorpage/405.jsplocation>
    error-page>
    <error-page>
        
        <error-code>500error-code>
        <location>/WEB-INF/errorpage/500.jsplocation>
    error-page>
web-app>

11.4、添加index.jsp,在src/main/webapp/WEB-INF下新建一个文件夹view,添加一个index.jsp,内容如下:

Spirng+SpringMVC+Maven+Mybatis+MySQL项目搭建_第11张图片

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html>
<body>
<h2>Hello World!h2>
用户名: ${user.userName}<br>
 密码:${user.userPassword}<br>
body>
html>

11.5、写controller

Spirng+SpringMVC+Maven+Mybatis+MySQL项目搭建_第12张图片

在src/main/java下新建一个包com.luo.controller.然后新建一个类UserController.java,其内容如下

package com.luo.controller;

import javax.annotation.Resource;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import com.luo.domain.User;
import com.luo.service.UserService;

@Controller  
public class UserController {  

    @Resource  
    private UserService userService;  

    @RequestMapping("/")    
    public ModelAndView getIndex(){      
        ModelAndView mav = new ModelAndView("index");   
        User user = userService.selectUserById(1);  
        mav.addObject("user", user);   
        return mav;    
    }    
}  

11.6 运行!!!!完成!

Spirng+SpringMVC+Maven+Mybatis+MySQL项目搭建_第13张图片

12、源码下载

http://download.csdn.net/detail/u013142781/9376381

13、可能会遇到的错

之前有个兄弟按照我的配置,但是发现pom.xml文件报如下错误:

Cannot detect Web Project version. Please specify version of Web Project through <version> configuration property of war plugin. E.g.: <plugin> <artifactId>maven-war-pluginartifactId> <configuration> <version>3.0<ersion> configuration> plugin>

解决方案是,如下的三个地方jdk版本需要保持一致:

1、项目右键->属性->Java Compiler:

Spirng+SpringMVC+Maven+Mybatis+MySQL项目搭建_第14张图片

2、项目右键->属性->Project Facets:

Spirng+SpringMVC+Maven+Mybatis+MySQL项目搭建_第15张图片

3、如果pom.xml配置了如下的插件的话:

<build>
 <plugins>
    <plugin>
      <artifactId>maven-compiler-pluginartifactId>
      <configuration>
        <source>1.7source>
        <target>1.7target>
      configuration>
    plugin>
    <plugin>
      <artifactId>maven-war-pluginartifactId>
      <version>2.4version>
      <configuration>
        <version>3.0version>
      configuration>
    plugin>
  plugins>
  <finalName>webserverfinalName>
build>

这里也要跟上面两个保持一致:

这里写图片描述

你可能感兴趣的:(Java基础,Spring,Maven,Mybatis,Java后台框架系列)