使用IDEA配置Maven + SpringMVC + Mybatis 【一步一步踩坑詳細配置完成】


 

PS:初學,想使用Maven配置一個SpringMVC的開發環境,照着網上的各種圖文解說,配置了好久都沒成功,有些寫的不夠詳細,有些只有寫一半,走了不少彎彎繞繞,踩了不少的坑,此文將正確配置成功的步驟全部記錄下來。

1、環境

  • IDEA 2017.3
  • Maven 使用了 IDEA自帶Maven,亦可以不用自帶的(沒什么大區別),不用IDEA自帶的可以先去下載maven安裝並設置。

     Maven 安裝配置 http://www.cnblogs.com/yangdaxian/p/8676373.html

  • JDK 1.8      JDK需要先下載安裝配置好
  • Spring 
  • Mybatis
  • MySQL 5.1.41  MySQL需要保證可用
  • Tomcat 8

2、SSM整合

新建數據庫表

CREATE TABLE `user` (
  `id` varchar(10) NOT NULL,
  `name` varchar(20) DEFAULT NULL,
  `sex` varchar(5) DEFAULT NULL,
  `age` varchar(3) DEFAULT NULL,
  `address` varchar(100) DEFAULT NULL,
  `phone` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO mytest.`user`(id, name, sex, age, address, phone) VALUES('1', '張三', '', '18', '共住地球村', '18888888881');
INSERT INTO mytest.`user`(id, name, sex, age, address, phone) VALUES('2', '李四', '', '16', '共住地球村', '18888888882');
INSERT INTO mytest.`user`(id, name, sex, age, address, phone) VALUES('3', '洪五', '', '22', '共住地球村', '18888888883');
INSERT INTO mytest.`user`(id, name, sex, age, address, phone) VALUES('4', '馬六', '', '17', '共住地球村', '18888888884');
INSERT INTO mytest.`user`(id, name, sex, age, address, phone) VALUES('5', '孫七', '', '23', '共住地球村', '18888888885');
INSERT INTO mytest.`user`(id, name, sex, age, address, phone) VALUES('6', '趙八', '', '38', '共住地球村', '18888888886');

 

 

 

新建maven項目

  • 選擇好自己的JDK路徑

  • 設置項目的group id, artifactid, version等信息

  • 設置maven倉庫路徑,我這邊偷懶直接使用了idea自帶的

  • 項目名設置,然后Finish

  • 等待后生成結構如下,右下角選擇 Enable Auto-import 自動導入;

  • 如果沒有自動導入這個選項,pom.xml配置完成后可以在右側邊緣找到 Maven Projects 打開后點擊第一個類似刷新的按鈕進行下載

 

  • 新建結構目錄如下(若想要包分層結構顯示在,上面齒輪那的第二行菜單,【Hide Empty Middle Packages】,將以選中的勾去掉就行)
  • 新建的 java 文件 需要對它轉一下, java文件夾上 右擊 --> Make Diretorys as --> Sources Root (藍色) /Test Sources Root (綠色) 

 

【pom.xml 配置】

  • 在<build>中添加如下信息
    <!--plugins添加逆向工程插件-->
    <plugins>
    ... 默認信息
    <!--
mybatis逆向工程插件--> <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <version>1.3.2</version> </plugin> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <!-- 設置JDK版本 --> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> <finalName>springmvc</finalName> <!--若不配置,可能會發送打包不全--> <resources> <resource> <!--需要打包的目錄--> <directory>src/main/java</directory> <!--目錄中的文件類型--> <includes> <include>**/*.xml</include> <include>**/*.properties</include> </includes> </resource> <resource> <!--需要打包的目錄--> <directory>src/main/resources</directory> <!--目錄中的文件類型--> <includes> <include>**/*.xml</include> <include>**/*.properties</include> </includes> </resource> </resources>
  • 在 <dependencies>之前設置變量參數
  <!-- 設置變量參數 -->
  <properties>
    <!-- 設置項目編碼編碼 -->
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <!-- spring版本號 -->
    <spring.version>4.3.5.RELEASE</spring.version>
    <!-- mybatis版本號 -->
    <mybatis.version>3.4.1</mybatis.version>
    <!--log4j 版本號-->
    <log4j.version>1.2.17</log4j.version>
  </properties>
  • 在 <dependencies>內添加需要的依賴包
<!-- java ee -->
    <dependency>
      <groupId>javax</groupId>
      <artifactId>javaee-api</artifactId>
      <version>7.0</version>
    </dependency>

    <!-- 單元測試 -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
    </dependency>

    <!-- 實現slf4j接口並整合 -->
    <dependency>
      <groupId>ch.qos.logback</groupId>
      <artifactId>logback-classic</artifactId>
      <version>1.2.2</version>
    </dependency>

    <!-- JSON -->
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.8.7</version>
    </dependency>


    <!-- 數據庫 -->
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.41</version>
      <scope>runtime</scope>
    </dependency>

    <!-- 數據庫連接池 -->
    <dependency>
      <groupId>com.mchange</groupId>
      <artifactId>c3p0</artifactId>
      <version>0.9.5.2</version>
    </dependency>

    <!-- MyBatis -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>${mybatis.version}</version>
    </dependency>

    <!-- mybatis/spring整合包 -->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>1.3.1</version>
    </dependency>

    <!--添加Hibernate Validator依賴,不加此項會報錯,但不影響項目運行-->
    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-validator</artifactId>
      <version>5.2.4.Final</version>
    </dependency>

    <!-- Spring 依賴-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-beans</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-tx</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>${spring.version}</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-test</artifactId>
      <version>${spring.version}</version>
    </dependency>

    <!-- log4j日志 -->
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>${log4j.version}</version>
    </dependency>
  </dependencies>
  • 【pom.xml 配置】 最終配置
  1 <?xml version="1.0" encoding="UTF-8"?>
  2 <!--
  3   Licensed to the Apache Software Foundation (ASF) under one
  4   or more contributor license agreements.  See the NOTICE file
  5   distributed with this work for additional information
  6   regarding copyright ownership.  The ASF licenses this file
  7   to you under the Apache License, Version 2.0 (the
  8   "License"); you may not use this file except in compliance
  9   with the License.  You may obtain a copy of the License at
 10 
 11    http://www.apache.org/licenses/LICENSE-2.0
 12 
 13   Unless required by applicable law or agreed to in writing,
 14   software distributed under the License is distributed on an
 15   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 16   KIND, either express or implied.  See the License for the
 17   specific language governing permissions and limitations
 18   under the License.
 19 -->
 20 <!-- $Id: pom.xml 642118 2008-03-28 08:04:16Z reinhard $ -->
 21 <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/maven-v4_0_0.xsd">
 22 
 23   <modelVersion>4.0.0</modelVersion>
 24   <packaging>war</packaging>
 25 
 26   <name>springmvc</name>
 27   <groupId>com.yq</groupId>
 28   <artifactId>springmvc</artifactId>
 29   <version>1.0-SNAPSHOT</version>
 30 
 31   <build>
 32     <plugins>
 33       <plugin>
 34         <groupId>org.mortbay.jetty</groupId>
 35         <artifactId>maven-jetty-plugin</artifactId>
 36         <version>6.1.7</version>
 37         <configuration>
 38           <connectors>
 39             <connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
 40               <port>8888</port>
 41               <maxIdleTime>30000</maxIdleTime>
 42             </connector>
 43           </connectors>
 44           <webAppSourceDirectory>${project.build.directory}/${pom.artifactId}-${pom.version}</webAppSourceDirectory>
 45           <contextPath>/</contextPath>
 46         </configuration>
 47       </plugin>
 48 
 49       <!--mybatis逆向工程插件-->
 50       <plugin>
 51         <groupId>org.mybatis.generator</groupId>
 52         <artifactId>mybatis-generator-maven-plugin</artifactId>
 53         <version>1.3.2</version>
 54       </plugin>
 55 
 56       <plugin>
 57         <groupId>org.apache.maven.plugins</groupId>
 58         <artifactId>maven-compiler-plugin</artifactId>
 59         <configuration>
 60           <!-- 設置JDK版本 -->
 61           <source>1.8</source>
 62           <target>1.8</target>
 63         </configuration>
 64       </plugin>
 65     </plugins>
 66 
 67     <finalName>springmvc</finalName>
 68 
 69     <!--若不配置,可能會發送打包不全-->
 70     <resources>
 71       <resource>
 72         <!--需要打包的目錄-->
 73         <directory>src/main/java</directory>
 74         <!--目錄中的文件類型-->
 75         <includes>
 76           <include>**/*.xml</include>
 77           <include>**/*.properties</include>
 78         </includes>
 79       </resource>
 80       <resource>
 81         <!--需要打包的目錄-->
 82         <directory>src/main/resources</directory>
 83         <!--目錄中的文件類型-->
 84         <includes>
 85           <include>**/*.xml</include>
 86           <include>**/*.properties</include>
 87         </includes>
 88       </resource>
 89     </resources>
 90   </build>
 91 
 92   <!-- 設置變量參數 -->
 93   <properties>
 94     <!-- 設置項目編碼編碼 -->
 95     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 96     <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
 97     <!-- spring版本號 -->
 98     <spring.version>4.3.5.RELEASE</spring.version>
 99     <!-- mybatis版本號 -->
100     <mybatis.version>3.4.1</mybatis.version>
101     <!--log4j 版本號-->
102     <log4j.version>1.2.17</log4j.version>
103   </properties>
104 
105   <dependencies>
106     <!-- java ee -->
107     <dependency>
108       <groupId>javax</groupId>
109       <artifactId>javaee-api</artifactId>
110       <version>7.0</version>
111     </dependency>
112 
113     <!-- 單元測試 -->
114     <dependency>
115       <groupId>junit</groupId>
116       <artifactId>junit</artifactId>
117       <version>4.12</version>
118     </dependency>
119 
120     <!-- 實現slf4j接口並整合 -->
121     <dependency>
122       <groupId>ch.qos.logback</groupId>
123       <artifactId>logback-classic</artifactId>
124       <version>1.2.2</version>
125     </dependency>
126 
127     <!-- JSON -->
128     <dependency>
129       <groupId>com.fasterxml.jackson.core</groupId>
130       <artifactId>jackson-databind</artifactId>
131       <version>2.8.7</version>
132     </dependency>
133 
134 
135     <!-- 數據庫 -->
136     <dependency>
137       <groupId>mysql</groupId>
138       <artifactId>mysql-connector-java</artifactId>
139       <version>5.1.41</version>
140       <scope>runtime</scope>
141     </dependency>
142 
143     <!-- 數據庫連接池 -->
144     <dependency>
145       <groupId>com.mchange</groupId>
146       <artifactId>c3p0</artifactId>
147       <version>0.9.5.2</version>
148     </dependency>
149 
150     <!-- MyBatis -->
151     <dependency>
152       <groupId>org.mybatis</groupId>
153       <artifactId>mybatis</artifactId>
154       <version>${mybatis.version}</version>
155     </dependency>
156 
157     <!-- mybatis/spring整合包 -->
158     <dependency>
159       <groupId>org.mybatis</groupId>
160       <artifactId>mybatis-spring</artifactId>
161       <version>1.3.1</version>
162     </dependency>
163 
164     <!--添加Hibernate Validator依賴,不加此項會報錯,但不影響項目運行-->
165     <dependency>
166       <groupId>org.hibernate</groupId>
167       <artifactId>hibernate-validator</artifactId>
168       <version>5.2.4.Final</version>
169     </dependency>
170 
171     <!-- Spring 依賴-->
172     <dependency>
173       <groupId>org.springframework</groupId>
174       <artifactId>spring-core</artifactId>
175       <version>${spring.version}</version>
176     </dependency>
177     <dependency>
178       <groupId>org.springframework</groupId>
179       <artifactId>spring-beans</artifactId>
180       <version>${spring.version}</version>
181     </dependency>
182     <dependency>
183       <groupId>org.springframework</groupId>
184       <artifactId>spring-context</artifactId>
185       <version>${spring.version}</version>
186     </dependency>
187     <dependency>
188       <groupId>org.springframework</groupId>
189       <artifactId>spring-jdbc</artifactId>
190       <version>${spring.version}</version>
191     </dependency>
192     <dependency>
193       <groupId>org.springframework</groupId>
194       <artifactId>spring-tx</artifactId>
195       <version>${spring.version}</version>
196     </dependency>
197     <dependency>
198       <groupId>org.springframework</groupId>
199       <artifactId>spring-web</artifactId>
200       <version>${spring.version}</version>
201     </dependency>
202     <dependency>
203       <groupId>org.springframework</groupId>
204       <artifactId>spring-webmvc</artifactId>
205       <version>${spring.version}</version>
206     </dependency>
207     <dependency>
208       <groupId>org.springframework</groupId>
209       <artifactId>spring-test</artifactId>
210       <version>${spring.version}</version>
211     </dependency>
212 
213     <!-- log4j日志 -->
214     <dependency>
215       <groupId>log4j</groupId>
216       <artifactId>log4j</artifactId>
217       <version>${log4j.version}</version>
218     </dependency>
219   </dependencies>
220 
221 </project>

 

配置 log4j.properties

  • 在resources下新建,根據實際路徑更改輸出日志路徑(D:/WorkSpace/idea_workSpase/springmvc/src/main/webapp/WEB-INF/log/log.txt)
    #日志輸出級別
    log4j.rootLogger=debug,stdout,D,E
    
    #設置stdout的日志輸出控制台
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    #輸出日志到控制台的方式,默認為System.out
    log4j.appender.stdout.Target = System.out
    #設置使用靈活布局
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    #靈活定義輸出格式
    log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} -[%p]  method:[%c (%rms)] - %m%n
    
    #每天產生一個日志文件
    log4j.appender.D=org.apache.log4j.DailyRollingFileAppender
    #設置的輸出日志
    log4j.appender.D.File=D:/WorkSpace/idea_workSpase/springmvc/src/main/webapp/WEB-INF/log/log.txt
    #設置的日志最大限制
    log4j.appender.D.MaxFileSize=6000KB
    #最多只保存20個備份文件
    log4j.appender.D.MaxBackupIndex=20
    #輸出INFO級別以上的日志
    og4j.appender.D.Threshold=debug
    log4j.appender.D.Append = true
    log4j.appender.D.ImmediateFlush = true
    #log4j.appender.D.DatePattern ='.'yyyy-MM-dd
    #設置使用靈活布局
    log4j.appender.D.layout=org.apache.log4j.PatternLayout
    #靈活定義輸出格式
    log4j.appender.D.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} -[%p]  method:[%l (%rms)] - %m%n
    
    log4j.appender.E = org.apache.log4j.DailyRollingFileAppender
    log4j.appender.E.File =D:/WorkSpace/idea_workSpase/springmvc/src/main/webapp/WEB-INF/log/error/error.txt
    log4j.appender.E.Append = true
    log4j.appender.E.Threshold = ERROR
    #log4j.appender.E.DatePattern = '_'yyyyMMdd'.log'
    log4j.appender.E.layout = org.apache.log4j.PatternLayout
    log4j.appender.E.layout.ConversionPattern = %d{yyyy-MM-dd HH:mm:ss,SSS} -[%p]  method:[%l (%rms)] - %m%n

 

配置 jdbc.properties

  • 在resources下新建;需要更改本地驅動路徑與數據庫連接信息
jdbc.driverLocation=C:\\Users\\yq\\.m2\\repository\\mysql\\mysql-connector-java\\5.1.41\\mysql-connector-java-5.1.41.jar
jdbc.driverClasss=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://192.168.56.107:3306/mytest?useUnicode=true&characterEncoding=UTF-8
#聲明使用username可能會與系統jvm沖突
jdbc.username=demo
jdbc.password=demo
  • 驅動包路徑查看方式:找到對應驅動后  右擊 --> copy path

 

配置generatorConfig.xml

  • mybatis逆向工程配置文件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>
        <!--導入屬性配置-->
        <properties resource="jdbc.properties"></properties>
    
        <!--指定特定數據庫的jdbc驅動jar包的位置-->
        <classPathEntry location="${jdbc.driverLocation}"/>
    
        <context id="default" targetRuntime="MyBatis3">
    
            <!-- optional,旨在創建class時,對注釋進行控制 -->
            <commentGenerator>
                <property name="suppressDate" value="true"/>
                <property name="suppressAllComments" value="true"/>
            </commentGenerator>
    
            <!--jdbc的數據庫連接 -->
            <jdbcConnection
                    driverClass="${jdbc.driverClasss}"
                    connectionURL="${jdbc.url}"
                    userId="${jdbc.username}"
                    password="${jdbc.password}">
            </jdbcConnection>
    
    
            <!-- 非必需,類型處理器,在數據庫類型和java類型之間的轉換控制-->
            <javaTypeResolver>
                <property name="forceBigDecimals" value="false"/>
            </javaTypeResolver>
    
    
            <!-- Model模型生成器,用來生成含有主鍵key的類,記錄類 以及查詢Example類
                targetPackage     指定生成的model生成所在的包名
                targetProject     指定在該項目下所在的路徑
            -->
            <javaModelGenerator targetPackage="com.yq.model"
                                targetProject="src/main/java">
    
                <!-- 是否允許子包,即targetPackage.schemaName.tableName -->
                <property name="enableSubPackages" value="false"/>
                <!-- 是否對model添加 構造函數 -->
                <property name="constructorBased" value="true"/>
                <!-- 是否對類CHAR類型的列的數據進行trim操作 -->
                <property name="trimStrings" value="true"/>
                <!-- 建立的Model對象是否 不可改變,即生成的Model對象不會有 getter/setter方法,只有構造方法 -->
                <property name="immutable" value="false"/>
            </javaModelGenerator>
    
            <!--Mapper映射文件生成所在的目錄 為每一個數據庫的表生成對應的SqlMap文件 -->
            <sqlMapGenerator targetPackage="com.yq.dao"
                             targetProject="src/main/java">
                <property name="enableSubPackages" value="false"/>
            </sqlMapGenerator>
    
            <!-- 客戶端代碼,生成易於使用的針對Model對象和XML配置文件 的代碼
                    type="ANNOTATEDMAPPER",生成Java Model 和基於注解的Mapper對象
                    type="MIXEDMAPPER",生成基於注解的Java Model 和相應的Mapper對象
                    type="XMLMAPPER",生成SQLMap XML文件和獨立的Mapper接口
            -->
            <javaClientGenerator targetPackage="com.yq.dao"
                                 targetProject="src/main/java" type="XMLMAPPER">
                <property name="enableSubPackages" value="true"/>
            </javaClientGenerator>
    
            <!-- 配置需要生成model的數據庫表,此項<table> 必須存在,沒有需要生成的表的話直接設置為""即可-->
            <table tableName="user"></table>
        </context>
    </generatorConfiguration>
  • 在這邊你可能遭遇 (沒遇到請跳過)
    http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd 識別不到的問題,可進行如下操作,File --> Setting 添加未識別的項

 

  • 配置完成后的目錄結構如下

 

測試逆向生成是否成功

配置完成后,可以測試逆向生成是否配置成功了~

點擊左上角綠色的 + ,設置好 Name(自定義) 與 Command line

 選中剛才設置的,點擊執行,如果正確配置了能看到在 dao 與 model中均生成了如下文件,這個User表是在generatorConfig.xml中配置的;如果出現錯誤了,排查下配置文件

 

配置spring-mybatis

<?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:tx="http://www.springframework.org/schema/tx"
       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/tx
       http://www.springframework.org/schema/tx/spring-tx.xsd">

    <!-- 掃描service包下所有使用注解的類型 -->
    <context:component-scan base-package="com.yq.service"/>

    <!-- 配置數據庫相關參數properties的屬性:${url} -->
    <context:property-placeholder location="classpath*:jdbc.properties"/>

    <!-- 數據庫連接池 -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="${jdbc.driverClasss}"/>
        <property name="jdbcUrl" value="${jdbc.url}"/>
        <property name="user" value="${jdbc.username}"/>
        <property name="password" value="${jdbc.password}"/>
    </bean>

    <!-- 配置SqlSessionFactory對象 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!-- 注入數據庫連接池 -->
        <property name="dataSource" ref="dataSource"/>
        <!-- 掃描model包 使用別名 -->
        <property name="mapperLocations" value="classpath:com/yq/dao/*.xml" />
    </bean>

    <!-- 配置掃描Dao接口包,動態實現Dao接口,注入到spring容器中 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!-- 給出需要掃描Dao接口包 -->
        <property name="basePackage" value="com.yq.dao"/>
        <!-- 注入sqlSessionFactory -->
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
    </bean>

    <!-- 配置事務管理器 -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <!-- 注入數據庫連接池 -->
        <property name="dataSource" ref="dataSource"/>
    </bean>

    <!-- 配置基於注解的聲明式事務 -->
    <tx:annotation-driven transaction-manager="transactionManager"/>
</beans>

 

配置spring-mvc

<?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">

    <!-- 掃描web相關的bean -->
    <context:component-scan base-package="com.yq.controller"/>

    <!-- 開啟SpringMVC注解模式 -->
    <mvc:annotation-driven/>

    <!-- 靜態資源默認servlet配置 -->
    <mvc:default-servlet-handler/>

    <!-- 配置jsp 顯示ViewResolver -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
</beans>

 

配置web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">

  <display-name>springmvc</display-name>
  <description>springmvc_0.0.1</description>

  <!-- 編碼過濾器 -->
  <filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

  <!-- log4j 配置 -->
  <context-param>
    <param-name>log4jConfigLocation</param-name>
    <param-value>classpath:log4j.properties</param-value>
  </context-param>
  <context-param>
    <param-name>log4jRefreshInterval</param-name>
    <param-value>60000</param-value>
  </context-param>

  <!-- 配置log4j 日志監聽 -->
  <listener>
    <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
  </listener>

  <!-- 配置DispatcherServlet -->
  <servlet>
    <servlet-name>SpringMVC</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!-- 配置springMVC需要加載的配置文件-->
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:spring-*.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
    <async-supported>true</async-supported>
  </servlet>
  <servlet-mapping>
    <servlet-name>SpringMVC</servlet-name>
    <!-- 匹配所有請求-->
    <url-pattern>/</url-pattern>
  </servlet-mapping>

  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>

</web-app>

 

測試查詢數據庫是否成功

在test --> dao 目錄下新建一個測試類,測試下現在能否讀取到數據庫內容

package com.yq.dao;

import com.yq.model.User;
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;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({"classpath:spring-mybatis.xml"})
public class UserQueryTest {

    @Autowired
    private UserMapper userMapper;

    @Test
    public void queryUserName() {
        String id = "1";
        User user = userMapper.selectByPrimaryKey(id);
        System.out.println(user.getName());
    }
}

 

  • webapp文件下創建index.jsp文件

<%--
  Created by IntelliJ IDEA.
  User: yq
  Date: 2018/3/29
  Time: 14:56
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>測試標題</title>
</head>
<body>
Hello World! 你的配置是正確噠!!!~~~
</body>
</html>

 

配置Tomcat

 

 

 

 

  

配置完成 ,啟動看看~~

 

 

從數據庫取數據來展示

  • 現在上面已經配置成功了,接下去就要試試從數據庫取數據來展示了
  •  創建UserService
package com.yq.service;

import com.yq.dao.UserMapper;
import com.yq.model.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserService {
    @Autowired
    private UserMapper userMapper;

    public User getUserById(String id){
        return userMapper.selectByPrimaryKey(id);
    }
}
  • 創建UserController
package com.yq.controller;

import com.yq.model.User;
import com.yq.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
@RequestMapping("/userInfo")
public class UserController {
    @Autowired
    private UserService userService;

    @RequestMapping("/getUser")
    public ModelAndView getUser(String id){
        ModelAndView modelAndView = new ModelAndView();
        User user = userService.getUserById(id);
        modelAndView.addObject("userInfo",user);
        modelAndView.setViewName("userInfo/getUser");
        return modelAndView;
    }
}
  • 創建jsp文件,我們在spring-mvc.xml中配置了目錄

因此我們要在 WEB-INF下新建個jsp文件夾

  • getUser.jsp
<%--
  Created by IntelliJ IDEA.
  User: yq
  Date: 2018/4/2
  Time: 14:04
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>測試getUser</title>
</head>
<body>
<p>編號: ${userInfo.id}</p>
<p>姓名:${userInfo.name}</p>
<p>性別:${userInfo.sex}</p>
<p>年齡:${userInfo.age}</p>
<p>地址:${userInfo.address}</p>
<p>電話: ${userInfo.phone}</p>
</body>
</html>

訪問 http://localhost:8080/springmvc/userInfo/getUser?id=2 

完成,沒毛病;  配置期間如果由於環境問題會出現一些異常錯誤,一般拷貝錯誤度娘下都能解決掉,都不是什么大問題。共勉~

項目下載地址:https://download.csdn.net/download/yq_111111/10322545

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM