使用IDEA和gradle搭建SPRing MVC和MyBatis開(kāi)發(fā)環(huán)境
1. 概述
Gradle是一個(gè)基于Apache Ant和Apache Maven概念的項(xiàng)目自動(dòng)化建構(gòu)工具。 它使用一種基于Groovy的特定領(lǐng)域語(yǔ)言(DSL)來(lái)聲明項(xiàng)目設(shè)置,拋棄了基于xml的各種繁瑣配置。
Spring MVC屬于SpringFrameWork的后續(xù)產(chǎn)品,已經(jīng)融合 在Spring Web Flow里面。Spring 框架提供了構(gòu)建 Web 應(yīng)用程序的全功能 MVC 模塊。
MyBatis本是apache的一個(gè)開(kāi)源項(xiàng)目iBatis, 2010年這個(gè)項(xiàng)目 由apache software foundation 遷移到了google code,并且改名為MyBatis 。 2013年11月遷移到Github。
2. 準(zhǔn)備工作
1.安裝MySQL,并完成相應(yīng)數(shù)據(jù)庫(kù)的建立
2.安裝IDEA完整版
3.下載tomcat或其他服務(wù)器
3. 創(chuàng)建工程
打開(kāi)IDEA軟件,選擇Create New Project:
選擇創(chuàng)建基于gradle的java web項(xiàng)目:
輸入GroupId和ArtifactId:
選擇gradle的來(lái)源,可以用自己下載的gradle,也可以使用IDEA內(nèi)建的gradle版本:
選擇項(xiàng)目的目錄:
點(diǎn)擊完成,會(huì)生成一個(gè)最基本的java web目錄,增加文件夾和相應(yīng)文件,將其目錄結(jié)構(gòu)改為以下結(jié)構(gòu):
其中resources目錄中的config文件夾中的文件和WEB-INF文件夾下的web.xml, 以及build.gradle都是自己進(jìn)行配置的。
配置文件
1. generatorConfig.xml
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorConfiguration        PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"><generatorConfiguration>    <classPathEntry location="${jarDirection}"/>    <context id="mysql" targetRuntime="MyBatis3">        <jdbcConnection driverClass="${driverClass}"                        connectionURL="${connectionURL}"                        userId="${userId}"                        passWord="${password}">        </jdbcConnection>        <javaTypeResolver >            <property name="forceBigDecimals" value="false" />        </javaTypeResolver>        <javaModelGenerator        targetPackage="${modelPackage}"        targetProject="${src_main_java}">            <property name="enableSubPackages" value="true" />            <property name="trimStrings" value="true" />        </javaModelGenerator>        <sqlMapGenerator        targetPackage="${sqlMapperPackage}"          targetProject="${src_main_java}">            <property name="enableSubPackages" value="true" />        </sqlMapGenerator>        <javaClientGenerator type="XMLMAPPER"        targetPackage="${mapperPackage}"          targetProject="${src_main_java}">            <property name="enableSubPackages" value="true" />        </javaClientGenerator>        <!-- 每一個(gè)數(shù)據(jù)庫(kù)表都需要建立一個(gè)對(duì)應(yīng)的table字段 -->        <table schema="test" tableName="user" domainObjectName="User" >            <!-- <property name="useActualColumnNames" value="true"/>            <generatedKey column="ID" sqlStatement="DB2" identity="true" />            <columnOverride column="DATE_FIELD" property="startDate" />            <ignoreColumn column="FRED" />            <columnOverride column="LONG_VARCHAR_FIELD" jdbcType="VARCHAR" /> -->        </table>    </context></generatorConfiguration>2. gradle.properties
# 生成的model類(lèi)所在包modelPackage=cn.edu.bupt.wen.model# 生成的mapper接口類(lèi)所在包mapperPackage=cn.edu.bupt.wen.mapper# 生成的mapper xml文件所在包sqlMapperPackage=cn.edu.bupt.wen.mybatis_mapper3. jdbc-mysql.properties
# 將jdbc.jarDirection后的內(nèi)容更改為gradle下載的# mysql-connector-java-5.1.x.jar所在的路徑,gradle自動(dòng)下載的路徑如下所示jdbc.jarDirection=/Users/wenzhiquan/.gradle/caches/modules-2/files-2.1/mysql/mysql-connector-java/5.1.38/dbbd7cd309ce167ec8367de4e41c63c2c8593cc5/mysql-connector-java-5.1.38.jarjdbc.driverClassName=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/bookbestjdbc.user=rootjdbc.pass=root4. spring-mvc.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: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.xsd       http://www.springframework.org/schema/context       http://www.springframework.org/schema/context/spring-context.xsd       http://www.springframework.org/schema/mvc       http://www.springframework.org/schema/mvc/spring-mvc.xsd">    <!-- 自動(dòng)掃描控制器 -->    <context:component-scan base-package="cn.edu.bupt.wen"/>    <!-- 視圖渲染 -->    <bean id="internalResourceViewResolver"    class="org.springframework.web.servlet.view.InternalResourceViewResolver">        <property name="prefix" value="/WEB-INF/views/"/>        <property name="suffix" value=".jsp"/>    </bean>    <!-- 控制器映射器和控制器適配器 -->    <mvc:annotation-driven></mvc:annotation-driven>    <!-- 靜態(tài)資源映射器 -->    <mvc:resources mapping="/statics/**" location="/WEB-INF/statics/" /></beans>5. web.xml
<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="http://java.sun.com/xml/ns/javaee"         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee		  http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"         version="3.0">    <servlet>        <servlet-name>index-dispather</servlet-name>        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>        <init-param>            <param-name>contextConfigLocation</param-name>            <param-value>classpath*:config/spring/spring-mvc.xml</param-value>        </init-param>    </servlet>    <servlet-mapping>        <servlet-name>index-dispather</servlet-name>        <url-pattern>/</url-pattern>    </servlet-mapping></web-app>6. build.gradle
group 'cn.edu.bupt.wen'version '1.0-SNAPSHOT'apply plugin: 'groovy'apply plugin: 'java'apply plugin: 'war'apply plugin: 'idea'sourceCompatibility = 1.5repositories {    mavenCentral()}configurations {    mybatisGenerator}// 讀取config文件夾中對(duì)應(yīng)的配置文件ext{    def prop = new Properties();    file("src/main/resources/config/mybatis/jdbc-mysql.properties")    .withInputStream {        prop.load(it)    }    file("src/main/resources/config/mybatis/gradle.properties")    .withInputStream {        prop.load(it)    }    prop.each {        project.extensions.add("$it.key",it.value);    }}// 配置gradle的依賴(lài)項(xiàng)dependencies {    compile 'org.codehaus.groovy:groovy-all:2.3.11'    compile 'jstl:jstl:1.2'    compile 'org.springframework:spring-aop:4.2.4.RELEASE'    compile 'org.springframework:spring-context:4.2.4.RELEASE'    compile 'org.springframework:spring-beans:4.2.4.RELEASE'    compile 'org.springframework:spring-web:4.2.4.RELEASE'    compile 'org.springframework:spring-webmvc:4.2.4.RELEASE'    compile 'org.springframework:spring-tx:4.2.4.RELEASE'    compile 'org.springframework:spring-jdbc:4.2.4.RELEASE'    compile 'org.springframework:spring-test:4.2.4.RELEASE'    compile 'mysql:mysql-connector-java:5.1.38'    compile 'org.mybatis.generator:mybatis-generator-core:1.3.2'    compile 'org.mybatis:mybatis-spring:1.2.3'    compile 'org.mybatis:mybatis:3.3.0'    compile 'junit:junit:4.12'    mybatisGenerator 'org.mybatis.generator:mybatis-generator-core:1.3.2'    mybatisGenerator 'mysql:mysql-connector-java:5.1.38'    testCompile group: 'junit', name: 'junit', version: '4.11'}// 利用ant創(chuàng)建一個(gè)自動(dòng)生成MyBatis目錄文件的tasktask mybatisGenerate << {    ant.properties['targetProject'] = projectDir.path    ant.properties['jarDirection'] = project['jdbc.jarDirection']    ant.properties['driverClass'] = project['jdbc.driverClassName']    ant.properties['connectionURL'] = project['jdbc.url']    ant.properties['userId'] = project['jdbc.user']    ant.properties['password'] = project['jdbc.pass']    ant.properties['src_main_java'] = sourceSets.main.java.srcDirs[0].path    ant.properties['src_main_resources'] = sourceSets.main.resources.srcDirs[0].path    ant.properties['modelPackage'] = project['modelPackage']    ant.properties['mapperPackage'] = project['mapperPackage']    ant.properties['sqlMapperPackage'] = project['sqlMapperPackage']    ant.taskdef(            name: 'mbgenerator',            classname: 'org.mybatis.generator.ant.GeneratorAntTask',            classpath: configurations.mybatisGenerator.aspath    )    ant.mbgenerator(overwrite: true,            configfile: 'src/main/resources/config/mybatis/generatorConfig.xml',            verbose: true) {        propertyset {            propertyref(name: 'targetProject')            propertyref(name: 'jarDirection')            propertyref(name: 'userId')            propertyref(name: 'driverClass')            propertyref(name: 'connectionURL')            propertyref(name: 'password')            propertyref(name: 'src_main_java')            propertyref(name: 'src_main_resources')            propertyref(name: 'modelPackage')            propertyref(name: 'mapperPackage')            propertyref(name: 'sqlMapperPackage')        }    }}下載gradle依賴(lài)包
至此,基本的配置就完成了,接下來(lái)就需要運(yùn)行g(shù)radle下載相應(yīng)的依賴(lài)包了, 操作如下:打開(kāi)IDEA > View > Tool Windows > gradle:
點(diǎn)擊圖中的按鈕,IDEA就會(huì)自動(dòng)下載依賴(lài)包了。
下載完成后,目錄下的External Libraries文件夾會(huì)生成相應(yīng)的目錄:
下載完依賴(lài)包之后,整體的配置基本上就完成了。
3. 部署到Tomcat服務(wù)器
打開(kāi)IDEA > Run > Edit Configurations...
點(diǎn)擊tomcat server的local選項(xiàng),點(diǎn)擊右上角的configure..., 在彈出的對(duì)話框中選中下載的Tomcat根目錄:
然后將配置好的tomcat添加到運(yùn)行庫(kù)當(dāng)中:
4. 編寫(xiě)代碼并運(yùn)行
編寫(xiě)controller代碼
在controller文件夾中創(chuàng)建IndexController文件,將代碼修改為:
package cn.edu.bupt.wen.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;/** * Author wenzhiquan * Created on 16/4/12 下午12:25 * File name: IndexController.java * Description: null */@Controllerpublic class IndexController {    @RequestMapping("/")    public String index(){        return "index";    }}修改index.jsp
將index.jsp文件修改為自己想要的樣式:
<%--  Created by IntelliJ IDEA.  User: wenzhiquan  Date: 16/4/12  Time: 下午12:23  To change this template use File | Settings | File Templates.--%><%@ page contentType="text/html;charset=UTF-8" language="java" %><html>  <head>    <title>Index</title>  </head>  <body>  Hello World!  </body></html>運(yùn)行Tomcat
點(diǎn)擊運(yùn)行按鈕,服務(wù)器啟動(dòng)后會(huì)自動(dòng)啟動(dòng)瀏覽器進(jìn)入主界面:
至此,hello world程序已經(jīng)完成。
5. 自動(dòng)生成mybatis相關(guān)文件
進(jìn)入gradle的view,點(diǎn)擊創(chuàng)建gradle任務(wù):
創(chuàng)建一個(gè)mybatisGenerate任務(wù):
點(diǎn)擊OK,會(huì)在model,mapper和mybatis_mapper文件夾中自動(dòng)生成相應(yīng)的文件:
至此,Spring MVC + MyBatis的Java Web開(kāi)發(fā)環(huán)境配置完成。本文