IDEA使用maven搭建SSM框架整合專案(超級詳細,值得一看)

超Ren專屬發表於2020-09-16

溫馨提示

此篇文章篇幅較長,相信我看了這篇文章你一定會擼起碼來行雲流水,事半功倍,無懈可擊,請耐心閱讀。?

超級超級超級詳細!

乾貨!乾貨!乾貨!

簡單介紹下SSM

SSMSpring+SpringMVC+Mybatis),目前較為主流的企業級架構方案。標準的MVC設計模式,將整個系統劃分為顯示層、Controller層、Service層、Dao層四層,使用SpringMVC負責請求的轉發和檢視管理,Spring實現業務物件管理,MyBatis作為資料物件持久化引擎。

搭建過程

一、框架介紹

  • Spring

    Spring是一個開源框架,它由Rod Johnson建立。它是為了解決企業應用開發的複雜性而建立的。Spring使用基本的JavaBean來完成以前只可能由EJB完成的事情。然而,Spring的用途不僅限於伺服器端的開發。從簡單性、可測試性和鬆耦合的角度而言,任何Java應用都可以從Spring中受益。簡單說, Spring是一個輕量級控制反轉(IoC)和麵向切面(AOP)的容器框架。

  • SpringMVC

    SpringMVC是一種基於Java的實現MVC設計模式的請求驅動型別的輕量級Web框架,使用了MVC架構模式的思想,將web層進行職責解耦,基於請求驅動指的就是使用請求-響應模型,框架的目的就是幫助我們簡化開發。

  • MyBatis

    MyBatis 是一款優秀持久層框架,它支援定製化 SQL、儲存過程以及高階對映。MyBatis 避免了幾乎所有的 JDBC 程式碼和手動設定引數以及獲取結果集。MyBatis 可以使用簡單的 XML 或註解來配置和對映原生資訊,將介面和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java物件)對映成資料庫中的記錄。

二、下載Maven

  • 下載地址 :

    https://maven.apache.org/download.cgi

  • 解壓下載的安裝包,我將安裝包解壓在我的目錄下,解壓好了以後,並建立好本地倉庫mavenrepository目錄。

  • 修改maven的配置檔案,進入剛解壓的的maven資料夾目錄,進入conf,使用編輯器開啟settings.xml檔案,我這裡使用的BBEditwindow的可以使用EditPlus

  • 開啟以後,配置本地倉庫路徑,不使用預設的maven倉庫,配置maven倉庫下載國內的映象源,不然下載特別慢,有時候還會出現下載jar包失敗,如下圖配置,修改自己電腦對應的路徑。

  • maven 倉庫路徑

<localRepository>/Users/wht/maven/mavenrepository</localRepository>
  • 阿里的映象倉庫
<!-- 配置阿里雲的映象倉庫  可以提高jar包的下載速度 -->   
  <mirror>
     <id>alimaven</id>
     <name>aliyun maven</name>
     <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
     <mirrorOf>central</mirrorOf>        
  </mirror>

  • maven的下載和配置就完成了,接下來我們就去建立專案了。

三、建立Maven專案

  • 首先開啟 IDEA,點選 Create New Project

  • 找到 Maven 點選下 ,然後直接點選 Next

  • 填寫相應的資訊,Groupid是專案組織唯一的識別符號,實際對應JAVA的包的結構。

    Artifactid就是專案的唯一的識別符號,實際對應專案的名稱,就是專案根目錄的名稱。

  • 填好後,直接點選Next

  • 繼續點選Finish

  • 接下來建好的專案目錄就展示在我們眼前,你會發現這裡面沒有webapp

  • 接下來因為我們建立的是maven專案,所以我們要在IDEA中配置一下maven的倉庫,本人用的 MacBook,可能介面會跟 Windows 有點差別,但是介面都是有功能的,點選左上角的IntelliJ IDEA,找到Preferences...,點選進入

  • 進入設定介面左上角搜尋? maven ,進入maven 設定介面

  • 注意⚠️ 前提是你必須下載了maven

  • 接下來點選黃色框區域後面的 省略號 ... 找到自己電腦上下載的maven資料夾,選中,點選OK。

  • 這時候可以看到下圖,已經設定成功,並且我的maven倉庫路徑也會隨之改變。因為我配置了自己的settings.xml檔案。

  • 接下來我們修改IDEA中的maven預設的settings.xml配置檔案為自己本地的配置檔案,根據圖中操作步驟修改。

  • 接下來idea的專案需要手動配置,本人用的 MacBook,可能介面會跟 Windows 有點差別,但是介面都是有功能的,點選左上角File,找到Project Structure...點選進入專案配置

  • 點選Project ,選擇自己電腦的JDK,我這裡是使用的是jdk1.8,下面的也要選擇8 - Lambdas, ...

  • 接下來配置Modules, 點選Modules,點選自己的專案, 然後點選 “ + ”號,下拉找到 Web點選。

  • 接下來配置Web ,點選Deployment Descriptors下的路徑選中,點選修改圖示

  • 接下來將路徑改為下圖路徑,點選OK

  • 修改之後你會看到上面的路徑已經修改成功了。 接下來點選下面的 Web Resoure Directories點選修改圖示

  • 同樣將原路徑改為下圖路徑,點選OK

  • 修改完成之後,會看到以下畫面。看到下面的黃色感嘆圖示,點選右下角的 Create Artifacet點選。會自動給Artifacet新增Web exploded

  • 接下來點選Apply點選OK

  • 返回編輯介面,如下圖,會發現 與之前的剛建立的專案截圖對比,這裡多出了 webapp資料夾,並且中間有個藍色小圈web.xml ,表示建立成功了。

  • 剛建立的專案截圖

  • 配置後的專案截圖

四、Maven工程需要引入的Jar 包

  • pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<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.0</modelVersion>

    <groupId>com.top</groupId>
    <artifactId>ssmDemo</artifactId>
    <version>1.0-SNAPSHOT</version>
	<properties>  
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>  
        <maven.build.timestamp.format>yyyyMMddHHmmss</maven.build.timestamp.format>  
        <spring.version>3.2.9.RELEASE</spring.version>  
        <mybatis.version>3.1.1</mybatis.version>  
        <mybatisspring.version>1.1.1</mybatisspring.version>  
    </properties>


	<dependencies>
		

		<!--引入pageHelper分頁外掛 PageInfo -->
		<dependency>
			<groupId>com.github.pagehelper</groupId>
			<artifactId>pagehelper</artifactId>
			<version>5.0.0</version>
		</dependency>

		

		<!-- springwebmvc -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>${spring.version}</version>
		</dependency>

		<!-- 返回json字串的支援 -->
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-databind</artifactId>
			<version>2.8.8</version>
		</dependency>

		<!-- Spring 整合Jdbc -->

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jdbc</artifactId>
			<version>${spring.version}</version>
		</dependency>

		<!--Spring-test spring測試包 -->

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-test</artifactId>
			<version>${spring.version}</version>
		</dependency>


		<!-- Spring面向切面程式設計 -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-aspects</artifactId>
			<version>${spring.version}</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>${mybatisspring.version}</version>
		</dependency>

		<!-- 阿里巴巴 資料來源 druid -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid</artifactId>
			<version>1.1.10</version>
		</dependency>

		<!-- mysql驅動包 -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.41</version>
		</dependency>

		<!-- servlet api包 -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
			<version>3.0.1</version>
			<scope>provided</scope>
		</dependency>


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

		<!-- 日誌包 -->
		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>1.2.16</version>
		</dependency>

		<!-- excel 批量的匯入匯出 -->
		<dependency>
			<groupId>org.apache.poi</groupId>
			<artifactId>poi</artifactId>
			<version>3.9</version>
		</dependency>

		<!-- 阿里巴巴的fastjson json和java 快速轉換工具包 -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>fastjson</artifactId>
			<version>1.2.47</version>
		</dependency>

		<dependency>
			<groupId>org.jetbrains</groupId>
			<artifactId>annotations</artifactId>
			<version>RELEASE</version>
			<scope>compile</scope>
		</dependency>

	</dependencies>
	<build>
		<finalName>ssmDemo</finalName>
	</build>
</project>

五、整合SSM框架、需要的相關配置檔案配置專案

  • web.xml

    修改webapp下的WEB-INF下的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">
    
    <!--  spring -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:/spring/beans_core.xml</param-value>
    </context-param>
    <!--  監聽我們載入的配置檔案是否有異常問題 -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
     <!-- 防止Spring記憶體溢位監聽器 -->  
    <listener>  
        <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>  
    </listener> 


    <!--  前端控制器 -->
    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:/springmvc/springmvc.xml</param-value>
        </init-param>
    </servlet>

    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <!-- spring 提供了一個字元編碼過濾器 Filter -->
    <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>
        <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>

    <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>


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


</web-app>

  • Spring的配置檔案

    我這裡起名為 beans_core.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:mvc="http://www.springframework.org/schema/mvc"
		xmlns:context="http://www.springframework.org/schema/context"
		xmlns:aop="http://www.springframework.org/schema/aop"
		xmlns:tx="http://www.springframework.org/schema/tx"
		xsi:schemaLocation="
			http://www.springframework.org/schema/context 
			http://www.springframework.org/schema/context/spring-context-3.2.xsd
			http://www.springframework.org/schema/beans 
			http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
			http://www.springframework.org/schema/mvc 
			http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
			http://www.springframework.org/schema/aop 
			http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
			http://www.springframework.org/schema/tx 
			http://www.springframework.org/schema/tx/spring-tx-3.2.xsd">


	<!-- 開啟註解模式 -->
	 <context:annotation-config/>
	<!-- 掃描註解包 -->
	<context:component-scan base-package="com.top.*"></context:component-scan>

	<!-- 資料庫連線池物件 -->
	<context:property-placeholder
		location="classpath:jdbc.properties"></context:property-placeholder>
	<!-- 阿里 druid資料庫連線池 -->
	<bean id="dataSource"
		class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
		<!-- 資料庫基本資訊配置 -->
		<property name="url" value="${url}" />
		<property name="username" value="${jdbc_username}" />
		<property name="password" value="${jdbc_password}" />
		<property name="driverClassName" value="${driverClassName}" />
		<property name="filters" value="${filters}" />
		<!-- 最大併發連線數 -->
		<property name="maxActive" value="${maxActive}" />
		<!-- 初始化連線數量 -->
		<property name="initialSize" value="${initialSize}" />
		<!-- 配置獲取連線等待超時的時間 -->
		<property name="maxWait" value="${maxWait}" />
		<!-- 最小空閒連線數 -->
		<property name="minIdle" value="${minIdle}" />
		<!-- 配置間隔多久才進行一次檢測,檢測需要關閉的空閒連線,單位是毫秒 -->
		<property name="timeBetweenEvictionRunsMillis"
			value="${timeBetweenEvictionRunsMillis}" />
		<!-- 配置一個連線在池中最小生存的時間,單位是毫秒 -->
		<property name="minEvictableIdleTimeMillis"
			value="${minEvictableIdleTimeMillis}" />
		<property name="validationQuery" value="${validationQuery}" />
		<property name="testWhileIdle" value="${testWhileIdle}" />
		<property name="testOnBorrow" value="${testOnBorrow}" />
		<property name="testOnReturn" value="${testOnReturn}" />
		<property name="maxOpenPreparedStatements"
			value="${maxOpenPreparedStatements}" />
		<!-- 開啟removeAbandoned功能 -->
		<property name="removeAbandoned" value="${removeAbandoned}" />
		<!-- 1800秒,也就是30分鐘 -->
		<property name="removeAbandonedTimeout"
			value="${removeAbandonedTimeout}" />
		<!-- 關閉abanded連線時輸出錯誤日誌 -->
		<property name="logAbandoned" value="${logAbandoned}" />
	</bean>


	<!-- spring 整合mybatis 使用的工具類 -->
	<bean id="sqlSessionFactory"
		class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource"></property>
		<!-- 掃描我們制定目錄下的mapper.xml檔案 -->
		<property name="mapperLocations"
			value="classpath:mybatis/mapper/*.xml"></property>
		<!-- 載入mybatis的配置檔案 -->
		<property name="configLocation"
			value="classpath:mybatis/sqlMapConfig.xml"></property>
		<!-- 引入pagehelper分頁外掛 -->
		<property name="plugins">
			<array>
				<bean class="com.github.pagehelper.PageInterceptor">
					<property name="properties">
						<value>
							helperDialect=mysql
							reasonable=true
							supportMethodsArguments=true
							params=count=countSql
							autoRuntimeDialect=true
						</value>
					</property>
				</bean>
			</array>
		</property>
	</bean>

	<!-- 載入我們的mapper xml 和 mapper介面 -->
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">

		<property name="basePackage" value="com.top.mapper"></property>
	</bean>

	<!--<import resource="classpath:beans_transaction.xml"></import> -->
	<!--<bean name="customerController" class ="com.ujiuye.cus.controller.CustomerController"></bean> -->


	<!-- 引入spring提供的事務管理 -->
	<bean id="tm"
		class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource"></property>
	</bean>

	<!-- transaction-manager: 值就是spring提供的那個事務管理器的id值 -->
	<tx:advice id="myadvice" transaction-manager="tm">
		<tx:attributes>
			<tx:method name="add*" isolation="READ_COMMITTED"
				propagation="REQUIRED" />
			<tx:method name="save*" isolation="READ_COMMITTED"
				propagation="REQUIRED" />
			<tx:method name="delete*" isolation="READ_COMMITTED"
				propagation="REQUIRED" />
			<tx:method name="update*" isolation="READ_COMMITTED"
				propagation="REQUIRED" />
			<tx:method name="drop*" isolation="READ_COMMITTED"
				propagation="REQUIRED" />
		</tx:attributes>
	</tx:advice>



	<aop:config>
		<aop:pointcut
			expression="execution(* com.top.service.*(..))" id="pt" />
		<aop:advisor advice-ref="myadvice" pointcut-ref="pt" />
	</aop:config>

</beans>
  • SpringMVC的配置檔案

    我這裡命名為 springmvc.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:mvc="http://www.springframework.org/schema/mvc"
		xmlns:context="http://www.springframework.org/schema/context"
		xmlns:aop="http://www.springframework.org/schema/aop"
		xmlns:tx="http://www.springframework.org/schema/tx"
		xsi:schemaLocation="
			http://www.springframework.org/schema/context 
			http://www.springframework.org/schema/context/spring-context-3.2.xsd
			http://www.springframework.org/schema/beans 
			http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
			http://www.springframework.org/schema/mvc 
			http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
			http://www.springframework.org/schema/aop 
			http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
			http://www.springframework.org/schema/tx 
			http://www.springframework.org/schema/tx/spring-tx-3.2.xsd">

	<context:annotation-config />
	<!-- 掃描哪些包 -->
	<context:component-scan base-package="com.top.*" />


	<bean name="conversionService"
		class="org.springframework.context.support.ConversionServiceFactoryBean">
		<property name="converters">
			<set>
				<bean class="com.top.util.DateConvertor"></bean>
				<bean class="com.top.util.MyTrimString"></bean>
			</set>
		</property>
	</bean>


	<!-- 開啟springmvc的註解操作 -->
	<mvc:annotation-driven
		conversion-service="conversionService" />

	<!-- 將dispatcherServlet 不能處理的請求推給 預設servlet執行 -->
	<mvc:default-servlet-handler />

	
	
	<!-- 檢視解析器 -->
	<bean
			class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/"></property>
		<property name="suffix" value=".jsp"></property>
	</bean>


</beans>

為了代替手工使用 SqlSessionDaoSupportSqlSessionTemplate 編寫資料訪問物件 (DAO)的程式碼,MyBatis-Spring 提供了一個動態代理的實現:MapperFactoryBean。這個類可以讓你直接注入資料對映器介面到你的 service 層 bean 中。當使用對映器時,你僅僅如調 用你的 DAO一樣呼叫它們就可以了,但是你不需要編寫任何 DAO 實現的程式碼,因為MyBatis-Spring 將會為你建立代理。

  • MyBatis 的配置檔案

    我這裡命名為 sqlMapConfig.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

	<!-- 暫時不需要其他配置--> 

</configuration>

  • 日誌配置檔案
    log4j.properties
# Global logging configuration\uff0c\u5efa\u8bae\u5f00\u53d1\u73af\u5883\u4e2d\u8981\u7528debug
log4j.rootLogger=DEBUG, stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n

  • 資料庫配置檔案
    jdbc.properties

url:jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8&characterSetResults=utf8 
driverClassName:com.mysql.jdbc.Driver
jdbc_username:root
jdbc_password:123
       
filters:stat
   
maxActive:20
initialSize:1
maxWait:60000
minIdle:10
maxIdle:15
   
timeBetweenEvictionRunsMillis:60000
minEvictableIdleTimeMillis:300000
   
validationQuery:SELECT 'x'
testWhileIdle:true
testOnBorrow:false
testOnReturn:false

maxOpenPreparedStatements:20
removeAbandoned:true
removeAbandonedTimeout:1800
logAbandoned:true


  • 配置檔案就已經全部配置完成了,專案目錄如下圖。

六、工程匯入Jar包及配置 tomcat

  • 接下來點選左上角File,找到Project Structure...點選進入專案配置,找到 Libraries,進入檢視,你會發現你 pom.xml 匯入的maven jar包已經下載完畢。

  • 繼續點選 Artifacts,會發現Available ...也有maven的jar包

  • 接下來看圖中操作步驟操作

  • 右擊ssmDemo資料夾,點選 Put into Output Root

  • 這時候你看發現如下圖所示的變化

  • 然後jar包已經全部部署在 WEB-INFlib 目錄下,接下來先點選 Apply 再點選 OK

  • 接下來我們來 配置 tomcat,點選OK 後,進入編輯區 點選 "Add Config..."

  • 點選新增圖示

  • 一直下拉找到 Tomcat Server 選中 Local,會進入下圖的介面。

  • 接下來編輯 tomcat 配置,根據圖中操作步驟,來配置。

  • 這時候觀察 tomcat 已經配置完成。

七、使用MyBatis的逆向工程(Generator)

  • MyBatis的Generator可以自動建立實體類、Mapper對映檔案以及DAO介面

  • MyBatis的逆向工程 有三種:命令列、eclipse外掛、maven外掛。

  • 我這裡使用maven外掛

  • Eclipse與IDEA都可以使用,我們們這裡的教程就使用IDEA吧

pom.xml中新增plugin

<plugin>
    <groupId>org.mybatis.generator</groupId>
    <artifactId>mybatis-generator-maven-plugin</artifactId>
    <version>1.3.2</version>
    <configuration>
        <configurationFile>src/main/resources/mybatis-generator/generatorConfig.xml</configurationFile>
        <verbose>true</verbose>
        <overwrite>true</overwrite>
    </configuration>
    <executions>
        <execution>
            <id>Generate MyBatis Artifacts</id>
            <goals>
                <goal>generate</goal>
            </goals>
        </execution>
    </executions>
    <dependencies>
        <dependency>
            <groupId>org.mybatis.generator</groupId>
            <artifactId>mybatis-generator-core</artifactId>
            <version>1.3.2</version>
        </dependency>
    </dependencies>
</plugin>
  • generatorConfig.xml的位置,我這裡是放在src/main/resources/mybatis-generator/generatorConfig.xml,大家可以自己調整路徑。

  • 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="/Users/wht/maven/mavenrepository/mysql/mysql-connector-java/5.1.41/mysql-connector-java-5.1.41.jar"/>

	<context id="DB2Tables" targetRuntime="MyBatis3">
		

		<commentGenerator>
			<property name="suppressAllComments" value="true"></property>
		</commentGenerator>


		<!-- 設定資料庫連線 -->
		<jdbcConnection driverClass="com.mysql.jdbc.Driver"
			connectionURL="jdbc:mysql://localhost:3306/test"
			userId="root"
			password="root">
		</jdbcConnection>

		<javaTypeResolver>
			<property name="forceBigDecimals" value="false" />
		</javaTypeResolver>

		<!-- 生成 bean 存放的位置 -->
		<javaModelGenerator targetPackage="com.top.bean"
			targetProject="./src/main/java">
			<property name="enableSubPackages" value="true" />
			<property name="trimStrings" value="true" />
		</javaModelGenerator>

		<!-- 生成的mapper檔案的位置 -->
		<sqlMapGenerator targetPackage="com.top.mapper"
			targetProject="./src/main/java">
			<property name="enableSubPackages" value="true" />
		</sqlMapGenerator>

		<!-- 生成的mapper.xml 對應的那個mapper介面的存放位置 -->
		<javaClientGenerator type="XMLMAPPER"
			targetPackage="com.top.mapper" targetProject="./src/main/java">
			<property name="enableSubPackages" value="true" />
		</javaClientGenerator>

		<!-- 設定反向生成的表 -->
		<table tableName="test"></table>


	</context>
</generatorConfiguration>
  • 配置完成後如下圖

  • 點選mybatis-generator:generate會自動生成實體類、Mapper對映檔案以及DAO介面,看如下圖圖片。

  • 我習慣將逆向生成的 ** Mapper.xml檔案放在配置檔案 resourcesmybatis 下的 mapper 資料夾下,如下圖。

  • 逆向工程生成程式碼就已經完成了,是不是很 Nice 啊?,快去試一試咯

八、建立Service層以及conrorller層

Service層介面

package com.top.service;

import com.top.bean.Test;

public interface TestService {
    
    Test login(String name, String password);
}

Service層 介面實現類

package com.top.service;

import com.top.bean.Test;
import com.top.mapper.TestMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class TestServiceImpl implements TestService  {

    @Autowired
    private TestMapper testMapper;
    
    @Override
    public Test login(String name, String password) {
        return testMapper.login(name, password);
    }
}

Controller層

package com.top.controller;

import com.alibaba.fastjson.JSON;
import com.top.bean.Test;
import com.top.service.TestService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import java.util.ArrayList;
import java.util.Map;


@Controller
@RequestMapping("/test")
public class TestController {


    @Autowired
    private TestService testService;


    @RequestMapping("login")
    public String login(String name ,String password){
        Test login = testService.login(name, password);
        if (login != null ) {
            return "redirect:/index.jsp";
        } else {
            return "redirect:/login.jsp";
        }
    }


}

資料庫大家自己建立,這裡就不詳細建立了,頁面我這裡這是簡單的寫了一個登入的頁面

切記一定要建立資料庫並將 資料庫配置檔案的資料庫名稱 改為 自己建立的名稱

九、執行測試

  • 這時候執行tomcat,瀏覽器會自動載入,如果,沒有載入則訪問 URL

  • http://localhost:8080/ssmDemo

  • 會看到如下頁面,登入自己的姓名和密碼進行驗證登入。

  • 專案結構如下:

總結

到此為止,整個SSM專案就完美的整合完成了。如自己還有什麼需求可以在此基礎上繼續編寫,如需還有什麼問題可在下方評論。謝謝?

希望可以幫助到更多的學者?,後續也會更新很多文章,想要了解學習的可以持續關注下喲?彆著急,還有更多的祕密和有趣的程式碼等著你來探索!

分享嗨起來,美德傳起來,點個星標從此探索之路不迷茫!

微信掃描二維碼,關注我的原創日更公眾號,可以檢視更多程式的祕密!

相關文章