日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

IDEA优雅整合Maven+SSM框架(详细思路+附带源码)

發布時間:2025/3/16 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 IDEA优雅整合Maven+SSM框架(详细思路+附带源码) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言:

網上很多整合SSM博客文章并不能讓初探ssm的同學思路完全的清晰,可以試著關掉整合教程,搖兩下頭骨,哈一大口氣,就在萬事具備的時候,開整,這個時候你可能思路全無 ~中招了咩~ ,還有一些同學依舊在使用eclipse或者Myeclipse開發,我想對這些朋友說IDEA 的編譯速度很快,人生苦短,來不及解釋了,直接上手idea吧。

這篇文章每一步搭建過程都測試過了,應該不會有什么差錯。本文章還有個比較優秀的特點,就是idea的使用,基本上關于idea的操作都算是比較詳細的,所以不用太擔心不會擼idea!最后,本文章旨在清晰地整合各個框架之間的流程與思路。

相信有很多小伙伴都是學了SSM框架,而且學的時候應該是用eclipse或者Myeclipse開發的,隨著idea崛起,實力碾壓eclipse,IDEA 的編譯速度很快,通常比ec快2倍!外加喪心病狂的代碼提示引起程序員的尖叫!

當然,我不是說eclipse不好,只是idea更加便捷,更加便于開發,這是事實。我相信很多小伙伴都是從eclipse轉向idea(包括我,普遍一開始上手不習慣idea,時刻保持一顆畏懼敬畏的心,生怕敲不出一行靚麗的Hello Word(你們都是大神,記得當時的我一直syso,敲不出一行輸出語句QAQ)。

作為過來人,我告訴大家,這些都是沒必要的擔心,你只要記住,具(工具idea)在我手中,碼(代碼)就在我手中,管他三七四十九呢,拿起idea就是一頓擼碼,我就是醬紫的,所以呢才有了這篇idea版的SSM框架整合,不然你以為怎么來的?

1. 搭建整合環境

1. 整合說明

整合說明:SSM整合可以使用多種方式,咱們選擇XML + 注解的方式,不要覺得不妥,這樣其實最便捷-

2. 整合的思路:

1、先搭建整合的環境?

?

2、先把Spring的配置搭建完成?

?

3、再使用Spring整合SpringMVC框架

?

4、之后使用Spring整合MyBatis框架

?

5、最后spring整合mybatis框架配置事務(Spring的聲明式事務管理)

3. 創建數據庫和表結構語句:

復制在MySQL中運行即可:

create database ssm;?
use ssm;?
create table account (
id int primary key auto_increment,?
name varchar(50),?
money double
);

4. 創建maven的工程

具體的使用idea創建maven,請看這篇使用IntelliJ IDEA創建第一個Mawen項目

  • 創建Twossm_parent父工程(打包方式選擇pom,必須的)

  • 創建Twossm_web子模塊(打包方式是war包)

  • 創建Twossm_service子模塊(打包方式是jar包)

  • 創建Twossm_dao子模塊(打包方式是jar包)

  • 創建Twossm_domain子模塊(打包方式是jar包)

  • web依賴于service,service依賴于dao,dao依賴于domain

  • 在Twossm_parent的pom.xml文件中引入坐標依賴
    找到對應的< properties >標簽,以及< dependencies >標簽,復制粘貼即可
    版本控制是在< properties >標簽中控制,從坐標依賴中可以看出版本號:spring5X、MySQL3.1.6、mybatis3.4.5

  • <properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.7</maven.compiler.source><maven.compiler.target>1.7</maven.compiler.target><spring.version>5.0.2.RELEASE</spring.version><slf4j.version>1.6.6</slf4j.version><log4j.version>1.2.12</log4j.version><mysql.version>5.1.6</mysql.version><mybatis.version>3.4.5</mybatis.version></properties><dependencies><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.6.8</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-aop</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-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><dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>compile</scope></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>${mysql.version}</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>2.5</version><scope>provided</scope></dependency><dependency><groupId>javax.servlet.jsp</groupId><artifactId>jsp-api</artifactId><version>2.0</version><scope>provided</scope></dependency><dependency><groupId>jstl</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency>?<!--?log?start?--><dependency><groupId>log4j</groupId><artifactId>log4j</artifactId><version>${log4j.version}</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>${slf4j.version}</version></dependency><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>${slf4j.version}</version></dependency>?<!--?log?end?--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>${mybatis.version}</version></dependency><dependency><groupId>org.mybatis</groupId><artifactId>mybatis-spring</artifactId><version>1.3.0</version></dependency><dependency><groupId>c3p0</groupId><artifactId>c3p0</artifactId><version>0.9.1.2</version><type>jar</type><scope>compile</scope></dependency></dependencies>
  • 部署Twossm_web的項目,只要把Twossm_web項目加入到tomcat服務器中即可

  • 5. 編寫實體類,在Twossm_domain項目中編寫

    在這里,我提醒一下,可能各位不熟悉idea快捷鍵,就比如說getset方法搞不出來哈哈,就這篇整合SSM的文章所用到的idea快捷鍵可以參考下面藍色字體文章(點擊藍色字體即可),熟悉idea的哥們可以當我沒說,當我在放pi(快快快捂住鼻子….)
    IDEA快速實現接口、查找接口的實現、getSet方法快速生成等等常用快捷鍵

    package?com.gx.domain;import?java.io.Serializable;public?class?Account?implements?Serializable?{private?Integer?id;private?String?name;private?Double?money;public?Integer?getId()?{return?id;}public?void?setId(Integer?id)?{this.id?=?id;}public?String?getName()?{return?name;}public?void?setName(String?name)?{this.name?=?name;}public?Double?getMoney()?{return?money;}public?void?setMoney(Double?money)?{this.money?=?money;}@Overridepublic?String?toString()?{return?"Account{"?+"id="?+?id?+",?name='"?+?name?+?'\''?+",?money="?+?money?+'}';} }

    6. 編寫dao接口

    在dao包中編寫dao接口IAccountdao

    package?com.gx.dao;import?com.gx.domain.Account; import?org.apache.ibatis.annotations.Insert; import?org.apache.ibatis.annotations.Select; import?org.springframework.stereotype.Repository;import?java.util.List;public?interface?IAccountdao?{public?List<Account>?findAll();public?void?saveAccount(Account?account); }

    7. 編寫service接口和實現類

    service接口:

    package?com.gx.service;import?com.gx.domain.Account;import?java.util.List;public?interface?AccountService?{//?查詢所有賬戶public?List<Account>?findAll();//?保存帳戶信息public?void?saveAccount(Account?account); }

    service接口實現類:

    package?com.gx.service.Impl;import?com.gx.domain.Account; import?com.gx.service.AccountService; import?org.springframework.stereotype.Service;import?java.util.List; @Service("accountService") public?class?AccountServiceImpl?implements?AccountService?{@Overridepublic?List<Account>?findAll()?{System.out.println("Service業務層:查詢所有賬戶...");return?null;}@Overridepublic?void?saveAccount(Account?account)?{System.out.println("Service業務層:保存帳戶...");} }

    到這里,整合環境就搭建好了效果如下,接下來搭建Spring的配置!

    2、Spring框架代碼的編寫

    搭建和測試Spring的開發環境

    1、創建resources的資源文件目錄管理XML配置文件

    創建一個叫resources的資源文件目錄,用來管理放置XML配置文件

    2、編寫applicationContext.xml的配置文件

    在resources資源文件中創建applicationContext.xml的配置文件,編寫具體的配置信息


    applicationContext.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:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop.xsdhttp://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx.xsd"><!--開啟注解的掃描,希望處理service和dao,controller不需要Spring框架去處理--><context:component-scan?base-package="com.gx"?><!--配置哪些注解不掃描--><context:exclude-filter?type="annotation"?expression="org.springframework.stereotype.Controller"?/></context:component-scan></beans>

    3. 在項目中編寫測試方法,進行測試

    1、創建Test包


    2、在test包中創建一個叫TestSpring的class類,具體的內容如下:

    package?com.gx.test;import?com.gx.domain.Account; import?com.gx.service.AccountService; import?org.junit.Test; import?org.springframework.context.ApplicationContext; import?org.springframework.context.support.ClassPathXmlApplicationContext;public?class?TestSpring?{@Testpublic?void?run1(){ApplicationContext?ac?=?new?ClassPathXmlApplicationContext("classpath:applicationContext.xml");AccountService?as?=?(AccountService)?ac.getBean("accountService");as.findAll();} }

    運行如下效果,說明搭建Spring的開發環境成功!


    到這里,Spring的開發環境成功!接下來搭建SpringMVC框架環境。

    3、SpringMVC框架代碼的編寫

    搭建和測試SpringMVC的開發環境

    1. 在web.xml中配置DispatcherServlet前端控制器

    ???<!--配置前端控制器--><servlet><servlet-name>dispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!--加載springmvc.xml配置文件--><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc.xml</param-value></init-param><!--啟動服務器,創建該servlet--><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>dispatcherServlet</servlet-name><url-pattern>/</url-pattern></servlet-mapping>

    2. 在web.xml中配置DispatcherServlet過濾器解決中文亂碼

    <!--解決中文亂碼的過濾器--><filter><filter-name>characterEncodingFilter</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>characterEncodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>

    3. web.xml中配置的整體效果

    <!DOCTYPE?web-app?PUBLIC"-//Sun?Microsystems,?Inc.//DTD?Web?Application?2.3//EN""http://java.sun.com/dtd/web-app_2_3.dtd"?><web-app?xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/javaee"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee?http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"version="3.0"><display-name>Archetype?Created?Web?Application</display-name><!--配置前端控制器--><servlet><servlet-name>dispatcherServlet</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!--加載springmvc.xml配置文件--><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc.xml</param-value></init-param><!--啟動服務器,創建該servlet--><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>dispatcherServlet</servlet-name><url-pattern>/</url-pattern></servlet-mapping><!--解決中文亂碼的過濾器--><filter><filter-name>characterEncodingFilter</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>characterEncodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping> </web-app>

    4. 創建springmvc.xml的配置文件,編寫配置文件

    同樣是在resources資源文件夾中創建springmvc.xml配置文件


    springmvc.xml的配置文件內容:

    <?xml?version="1.0"?encoding="UTF-8"?> <beans?xmlns="http://www.springframework.org/schema/beans"xmlns:mvc="http://www.springframework.org/schema/mvc"xmlns:context="http://www.springframework.org/schema/context"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/mvchttp://www.springframework.org/schema/mvc/spring-mvc.xsdhttp://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context.xsd"><!--開啟注解掃描,只掃描Controller注解--><context:component-scan?base-package="com.gx"><context:include-filter?type="annotation"?expression="org.springframework.stereotype.Controller"/></context:component-scan><!--配置的視圖解析器對象--><bean?id="internalResourceViewResolver"?class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property?name="prefix"?value="/WEB-INF/pages/"/><property?name="suffix"?value=".jsp"/></bean><!--過濾靜態資源--><mvc:resources?location="/css"?mapping="/css/**"/><mvc:resources?location="/images/"?mapping="/images/**"/><mvc:resources?location="/js/"?mapping="/js/**"/><!--開啟SpringMVC注解的支持--><mvc:annotation-driven/> </beans>

    5.創建jsp頁面,并編寫controller代碼

    編寫index.jsp頁面

    <%@?page?contentType="text/html;charset=UTF-8"?language="java"?%> <html> <body> <a?href="account/findAll">測試SpringMVC查詢</a> </body> </html>

    在controller層中的AccountController的class類中編寫代碼

    package?com.gx.controller;import?com.gx.domain.Account; import?com.gx.service.AccountService; import?org.springframework.beans.factory.annotation.Autowired; import?org.springframework.stereotype.Controller; import?org.springframework.ui.Model; import?org.springframework.web.bind.annotation.RequestMapping;import?java.util.List;@Controller public?class?AccountController?{@RequestMapping("/account/findAll")public?String?findAll(){System.out.println("Controller表現層:查詢所有賬戶...");return?"list";??//在視圖解析器中配置了前綴后綴} }

    這時候就要創建controller跳轉的list.jsp頁面了:


    list.jsp頁面創建好了,編寫一下內容,只是看是否跳轉成功,輸出一句話即可:

    <%@?taglib?prefix="c"?uri="http://java.sun.com/jsp/jstl/core"?%> <%--Created?by?IntelliJ?IDEA.User:?BuleDate:?2019/9/2Time:?7:32To?change?this?template?use?File?|?Settings?|?File?Templates. --%> <%@?page?contentType="text/html;charset=UTF-8"?language="java"?%><html> <head><title>Title</title> </head> <body><h2>查詢所有的賬戶</h2></body> </html>

    6.部署Tomcat進行測試

    7.測試運行


    到這里,spring、springmvc的開發環境就都搭建好了,不容易啊,都堅持看到這里了,給你點個贊,接下來是整合spring和springmvc了!

    4. Spring整合SpringMVC的框架

    整合之前,想一想,怎樣去整合Spring、SpringMVC框架呢,怎么才算是整合成功了呢,帶著問題,一起來吧!

    1、Spring整合SpringMVC的框架原理分析

    整合成功的表現:在controller(SpringMVC)中能成功的調用service(Spring)對象中的方法

    要想在controller中調用service方法,就要注入service到controller中來,有service對象才可以調用service方法,方法是這樣沒有錯,但是有一個問題,就是啟動Tomcat之后試想一下,在web.xml中配置有前端控制器,web容器會幫我們加載springmvc.xml配置文件,在springmvc.xml配置文件中我們配置情況是只掃描controller,別的不掃,而spring.xml文件就從頭到尾沒有執行過,spring中的配置掃描自然也不會去掃描,就相當于沒有將spring交到IOC容器當中去

    所以,現在的解決方案就是,在啟動服務器時就加載spring配置文件,怎么實現呢?這時候監聽器listener就派上用場了,具體實現如下:

    2、在web.xml中配置ContextLoaderListener監聽器

    在項目啟動的時候,就去加載applicationContext.xml的配置文件,在web.xml中配置ContextLoaderListener監聽器(該監聽器只能加載WEB-INF目錄下的applicationContext.xml的配置文件)。要想加載applicationContext.xml的配置文件有兩種方法,第一種(不建議):


    第二種(強烈建議):在web.xml中配置加載路徑

    ?<!--配置Spring的監聽器,默認只加載WEB-INF目錄下的applicationContext.xml配置文件--><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><!--設置配置文件的路徑--><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext.xml</param-value></context-param>

    至于為啥強烈建議第二種呢,是因為我們在整合過程中會有許多配置文件,我們自定義一個類似pages資源文件夾專門管理這些配置文件,方便管理,方便維護!!!

    3. controller中注入service對象,調用service對象方法并測試

    這時候,啟動服務器時也會加載spring配置文件了,那么,我們可以在controller中注入service了,于是開始編寫controller代碼:

    package?com.gx.controller;import?com.gx.domain.Account; import?com.gx.service.AccountService; import?org.springframework.beans.factory.annotation.Autowired; import?org.springframework.stereotype.Controller; import?org.springframework.ui.Model; import?org.springframework.web.bind.annotation.RequestMapping;import?java.util.List;@Controller public?class?AccountController?{@Autowired???//按類型注入private?AccountService?accountService;@RequestMapping("/account/findAll")public?String?findAll(Model?model){System.out.println("Controller表現層:查詢所有賬戶...");List<Account>?list?=?accountService.findAll();return?"list";} }

    編寫完成,開始測試,啟動Tomcat,效果


    到這里,


    總算是整合完了spring、springmvc,同學你還能看到這里,我也挺欣慰的哈哈,手動再給你點個贊,接下來編寫MyBatis環境惹!

    5、MyBatis框架代碼的編寫

    一看到Mybatis,就要想到dao,沒錯,MyBatis環境搭建首先是dao,搭建mybatis,之前要編寫mapper映射的配置文件,其實挺麻煩的,所以我選擇使用注解!

    1、在IAccountdao接口方法上添加注解,編寫SQL語句

    package?com.gx.dao;import?com.gx.domain.Account; import?org.apache.ibatis.annotations.Insert; import?org.apache.ibatis.annotations.Select; import?org.springframework.stereotype.Repository;import?java.util.List;@Repository??//此注解代表這是一個持久層,用法類似@controller、@service public?interface?IAccountdao?{@Select("select?*?from?account")public?List<Account>?findAll();@Insert("insert?into?account?(name,money)?value(#{name},#{money})")public?void?saveAccount(Account?account); }

    2.創建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><environments?default="mysql"><environment?id="mysql"><transactionManager?type="JDBC"/><dataSource?type="POOLED"><property?name="driver"?value="com.mysql.jdbc.Driver"/><property?name="url"?value="jdbc:mysql:///ssm"/><property?name="username"?value="root"/><property?name="password"?value="root"/></dataSource></environment></environments>?<!--?使用的是注解?--><mappers>?<!--?<mapper?class="com.gx.dao.IAccountdao"/>?-->?<!--?該包下所有的dao接口都可以使用?--><package?name="com.gx.dao"/></mappers> </configuration>

    因為我使用的是注解,我覺得還是有必要提一下以下三種方法:

    3. 創建并編寫Mybatis測試方法

    創建:


    編寫:

    package?com.gx.test;import?com.gx.dao.IAccountdao; import?com.gx.domain.Account; import?org.apache.ibatis.io.Resources; import?org.apache.ibatis.session.SqlSession; import?org.apache.ibatis.session.SqlSessionFactory; import?org.apache.ibatis.session.SqlSessionFactoryBuilder; import?org.junit.Test;import?java.io.IOException; import?java.io.InputStream; import?java.util.List;public?class?TestMyBatis?{@Testpublic?void?run1()?throws?IOException?{Account?account?=new?Account();account.setName("杜永藍");account.setMoney(200d);//?加載配置文件InputStream?in?=?Resources.getResourceAsStream("SqlMapConfig.xml");//?創建SqlSessionFactory對象SqlSessionFactory?factory?=?new?SqlSessionFactoryBuilder().build(in);//?創建SqlSession對象SqlSession?session?=?factory.openSession();//?獲取到代理對象IAccountdao?dao?=?session.getMapper(IAccountdao.class);//?保存dao.saveAccount(account);//?提交事務session.commit();//?關閉資源session.close();in.close();}@Testpublic?void?run2()?throws?Exception?{InputStream?in?=?Resources.getResourceAsStream("SqlMapConfig.xml");SqlSessionFactory?factory?=?new?SqlSessionFactoryBuilder().build(in);SqlSession?session?=?factory.openSession();IAccountdao?dao?=?session.getMapper(IAccountdao.class);List<Account>?list?=?dao.findAll();for?(Account?account:?list?)?{System.out.println(account);}session.close();in.close();}}

    運行測試:


    運行效果:


    到這里,mybatis環境搭建算是完成了,

    ,哈哈接下來搭建最后整合spring、mybatis!(估計看到這里,你也餓了吧)

    6. Spring整合MyBatis框架

    Spring整合MyBatis框架之前,先想一想,怎樣才算整合成功呢?其實,這和之前的spring整合springMVC的套路差不多,其實就是,Service能成功調用dao對象,能夠做查詢操作或者新增數據能存進數據庫。

    現在spring已經是在IOC容器中了,dao是一個接口,可以通過程序幫這個接口生成代理對象,我們要是可以把這個代理對象也放進IOC容器,那么service就可以拿到這個對象,之后在service中做一個注入,service從而調用dao代理對象的方法,那么我們怎么去實現dao接口生成的代理對象放入IOC容器呢?其實很簡單,只需要如下操作!

    整合目的:把SqlMapConfig.xml配置文件中的內容配置到applicationContext.xml配置文件中

    1、在applicationContext.xml中配置數據庫連接池

    至于為啥要配池子,我不說大家應該也知道,畢竟各位都是學過ssm的大神了

    <!--Spring整合MyBatis框架--><!--配置連接池--><bean?id="dataSource"?class="com.mchange.v2.c3p0.ComboPooledDataSource"><property?name="driverClass"?value="com.mysql.jdbc.Driver"/><property?name="jdbcUrl"?value="jdbc:mysql:///ssm"/><property?name="user"?value="root"/><property?name="password"?value="root"/></bean>

    2、在applicationContext.xml中配置SqlSessionFactory工廠

    沒配置工廠之前,我們用Test測試的時候,每次都要先創建工廠,因為工廠能夠給我們創建SqlSession,有了SqlSession就可以通過SqlSession拿到代理對象。

    現在我們直接在applicationContext.xml中配置SqlSessionFactory工廠,這就相當于IOC容器中有了工廠,就可以去創建SqlSession,進而通過SqlSession拿到代理對象,沒必要每次測試都去創建工廠。

    ?<!--配置SqlSessionFactory工廠--> <bean?id="sqlSessonFactory"?class="org.mybatis.spring.SqlSessionFactoryBean"><property?name="dataSource"?ref="dataSource"/></bean>

    3、在applicationContext.xml中配置IAccountdao接口所在包

    因為工廠有了,SqlSession也有了,那代理誰呢,所以我們要配置IAccountdao接口所在包,告訴SqlSession去代理接口所在包中的代理,從而存到IOC容器中

    ?<!--配置IAccountdao接口所在包--> <bean?id="mapperScanner"?class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property?name="basePackage"?value="com.gx.dao"/> </bean>

    4、小結上面的三個配置

    其實,上面的操作就是把mybatis中的配置(SqlMapConfig.xml)轉移到spring中去,讓它產生代理并存到IOC容器中

    5、完善Service層代碼

    在AccountServiceImpl實現類中編寫代碼:

    package?com.gx.service.Impl;import?com.gx.dao.IAccountdao; import?com.gx.domain.Account; import?com.gx.service.AccountService; import?org.springframework.beans.factory.annotation.Autowired; import?org.springframework.stereotype.Service;import?java.util.List; @Service("accountService") public?class?AccountServiceImpl?implements?AccountService?{@Autowiredprivate?IAccountdao?iaccountdao;@Overridepublic?List<Account>?findAll()?{System.out.println("Service業務層:查詢所有賬戶...");return?iaccountdao.findAll();}@Overridepublic?void?saveAccount(Account?account)?{System.out.println("Service業務層:保存帳戶...");} }

    6、完善Controller層代碼

    package?com.gx.controller;import?com.gx.domain.Account; import?com.gx.service.AccountService; import?org.springframework.beans.factory.annotation.Autowired; import?org.springframework.stereotype.Controller; import?org.springframework.ui.Model; import?org.springframework.web.bind.annotation.RequestMapping;import?java.util.List;@Controller public?class?AccountController?{@Autowiredprivate?AccountService?accountService;@RequestMapping("/account/findAll")public?String?findAll(Model?model){??//存數據,?Model對象System.out.println("Controller表現層:查詢所有賬戶...");//?調用service的方法List<Account>?list?=?accountService.findAll();model.addAttribute("list",list);return?"list";} }

    7、完善list.jsp頁面

    因為要使用到jstl顯示數據庫數據,所以list.jsp頁面如下:

    <%--Created?by?IntelliJ?IDEA.User:?BuleDate:?2019/9/2Time:?7:32To?change?this?template?use?File?|?Settings?|?File?Templates. --%> <%@?page?contentType="text/html;charset=UTF-8"?language="java"?isELIgnored="false"?%> <%@?taglib?prefix="c"?uri="http://java.sun.com/jsp/jstl/core"?%><html> <head><title>Title</title> </head> <body><h2>查詢所有的賬戶</h2><c:forEach?items="${list}"?var="account">${account.name}</c:forEach> </body> </html>

    8、運行測試


    到這里,SSM整合就基本完成,各位可以去打王者樓嘍,咳咳等等…還沒完成,我只是說基本完成。


    接下來,spring整合mybatis框架還需要配置事務(Spring的聲明式事務管理),至于為啥,一張圖告訴你!(哎呀…ai..ai..別打…別打…別打臉…)

    7.spring整合mybatis框架配置事務(Spring的聲明式事務管理)

    細心的小伙伴可能發現了,我在整合spring、mybatis測試的時候(TestMybatis中),新增數據保存的時候手動的提交過事務?session.commit(),如果不寫這一句,就會出現數據沒提交的情況,因此為了完美的整合ssm,我們必須配置Spring的聲明式事務管理!

    1、在applicationContext.xml中配置Spring框架聲明式事務管理

    如果對一些execution表達式什么的不太清除的或者AOP不是特別印象深刻,可以去看看我的這篇文章【Spring框架學習總結二】Spring的AOP通俗理解以及AOP的入門開發

    ?<!--配置Spring框架聲明式事務管理--><!--配置事務管理器--><bean?id="transactionManager"?class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property?name="dataSource"?ref="dataSource"?/></bean><!--配置事務通知--><tx:advice?id="txAdvice"?transaction-manager="transactionManager"><tx:attributes><tx:method?name="find*"?read-only="true"/><tx:method?name="*"?isolation="DEFAULT"/></tx:attributes></tx:advice><!--配置AOP增強--><aop:config><aop:advisor?advice-ref="txAdvice"?pointcut="execution(*?com.gx.service.Impl.*ServiceImpl.*(..))"/></aop:config>

    2、完善index.jsp頁面

    <%@?page?contentType="text/html;charset=UTF-8"?language="java"?%> <html> <head><title>Title</title> </head> <body><a?href="account/findAll">測試查詢</a><h3>測試包</h3><form?action="account/save"?method="post">姓名:<input type="text"?name="name"?/><br/>金額:<input type="text"?name="money"?/><br/><input?type="submit"?value="保存"/><br/> </form></body> </html>

    3、完善Service層、Controller層代碼

    Service層:在AccountServiceImpl實現類中調用service中的saveAccount(account)方法

    ?@Overridepublic?void?saveAccount(Account?account)?{System.out.println("Service業務層:保存帳戶...");iaccountdao.saveAccount(account);??//調用service中的saveAccount(account)方法}

    Controller層代碼:在AccountController類中添加一個保存save的方法

    ????@RequestMapping("/account/save")public?void?save(Account?account,?HttpServletRequest?request,?HttpServletResponse?response)?throws?IOException?{accountService.saveAccount(account);response.sendRedirect(request.getContextPath()+"/account/findAll");return;}

    4、測試運行


    OK ,到這里,能夠堅持到這里的各位都是人才,說話有好聽,敲的代碼又好看,我超喜歡你們,所以,我要是哪里寫錯了,歡迎指出,還望不吝賜教!!!

    8、源碼、源碼、源碼~重要的標題發三遍

    同時附上源碼給各位,畢竟堅持看到最后,也是真的不容易(


    源碼上傳至:CSDN主頁資源上

    考慮到C幣問題,已分享至百度網盤,啥?沒有網盤賬戶?出門右轉,秋名山決斗…

    鏈接:https://pan.baidu.com/s/1lYtogVNBvK2taR1luDCdoA
    提取碼:htov

    有道無術,術可成;有術無道,止于術

    歡迎大家關注Java之道公眾號

    好文章,我在看??

    總結

    以上是生活随笔為你收集整理的IDEA优雅整合Maven+SSM框架(详细思路+附带源码)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。