Spring+SpringMVC+Mybatis+Oracle+Maven整合開發詳解

       先說一下,這個搭建之前用的項目名叫mybatis,但是在做項目(blogs)的時候發現有些地方需要修改,也就是配置的不合理,同時也解決了一些實際上的報錯問題,所以你可能看到的配置文件的包名有的是 cy.** 有的是com.andyc.** 。我都上傳了實際項目中的配置,你只需要根據你自己的項目名稱來修改成一致即可,配置問文件!

一、準備工作:

1、JDK、Eclipse(MyEclipse)、Tomcat、MySql或其他數據庫、Navicat等數據庫管理軟件

2、如果不清楚需要哪些jar包、或者不是用Maven,可下載jar包,下載地址 

3、查找jar包版本信息網址推薦:

     1)、導jar包推薦網址1:https://mvnrepository.com/artifact/org.springframework
     2)、導jar包推薦網址2:https://search.maven.org/

4、下載好mybatis-generatorjar包(版本可自行選擇),本人使用的是1.3.7版本:mybatis-generator-core-1.3.7.jar

       下載地址:https://github.com/mybatis/generator/releases

5、準備好生成語句,jar包版本替換爲自己下載的版本:

      java -jar mybatis-generator-core-1.3.7.jar -configfile generator.xml -overwrite

6、新建generator.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="D:\lib\mysql-connector-java-5.1.39.jar" /> -->

   <classPathEntry location="D:\app\Administrator\product\11.2.0\dbhome_1\jdbc\lib\ojdbc6.jar" />

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

      <commentGenerator>

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

      </commentGenerator>

      <!-- 數據庫鏈接URL、用戶名、密碼 -->

      <!-- <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://localhost:3306/database" userId="root" password="root"> -->

      <jdbcConnection driverClass="oracle.jdbc.driver.OracleDriver" connectionURL="jdbc:oracle:thin:@localhost:1521:orcl" userId="learn20190528" password="123456">

      </jdbcConnection>

      <javaTypeResolver>

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

      </javaTypeResolver>

      <!-- 生成模型的包名和位置 -->

      <javaModelGenerator targetPackage="cy.model" targetProject="D:\JavaWorkSpace\generators\currency\src">

        <property name="enableSubPackages" value="true" />

        <property name="trimStrings" value="true" />

      </javaModelGenerator>

      <!-- 生成的映射文件包名和位置 -->

      <sqlMapGenerator targetPackage="cy.mapping" targetProject="D:\JavaWorkSpace\generators\currency\src">

        <property name="enableSubPackages" value="true" />

      </sqlMapGenerator>

      <!-- 生成DAO的包名和位置 -->

      <javaClientGenerator type="XMLMAPPER" targetPackage="cy.dao" targetProject="D:\JavaWorkSpace\generators\currency\src">

        <property name="enableSubPackages" value="true" />

      </javaClientGenerator>

      <!-- 要生成那些表(更改tableName-數據表的表明 domainObjectName-要生成的類文件名) -->

      <table tableName="users" domainObjectName="Users" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false" />

      <table tableName="menu" domainObjectName="Menu" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false" />

      <table tableName="roles" domainObjectName="Roles" enableCountByExample="false" enableUpdateByExample="false" enableDeleteByExample="false" enableSelectByExample="false" selectByExampleQueryId="false" />     

   </context>

</generatorConfiguration>

7、生成generator.xml中配置中所需要的文件

生成的文件如下:

8、Maven加載oracle驅動:ojdbc6.jar

      注:使用Oracle數據庫,稍微麻煩點,要用到此步驟,MySQL就不需要此步驟!

1)、確認安裝Oracle JDBC Driver的路徑,如我的是:

       D:\app\Administrator\product\11.2.0\dbhome_1\jdbc\lib

2)、運行CMD,切換到該路徑下,執行以下命令:

       mvn install:install-file -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.1.0 -Dpackaging=jar -Dfile=ojdbc6.jar

3)、執行成功如下圖所示:

二、創建Maven工程:Ctrl+N

就這樣,Maven的web項目創建完成,然後處理編碼格式、報錯等一系列問題。

1、處理工程編碼格式:UTF-8

2、解決cannot change version of project facet Dynamic Web Module to 3.0問題?先看報錯,如下圖!

3、解決辦法:

1)、Window -> Show View -> Navigator

2)、在Navigator下打開項目.settings目錄下org.eclipse.wst. common.project.facet.core.xml打開修改如下圖:

2)、再次重複第2步即可

3)、解決STS等編輯器自身原因,不出來的文件夾

4)、修改編譯版本

5)、如果你的編輯工具沒有集成Tomcat,因此jsp文件就會有紅叉,添加你的tomcat即可,如下圖:

6)、當上面的步驟都處理了,你會發現項目文件夾上依舊有紅叉,解決辦法如下:

輸入Problems

就這樣,雖然過程很曲折,膽Maven工程還是創建好了!

7)、展示最後Maven工程結構圖

三、引入springmybatis需要的jar

1、引入jar包時,不知道名稱及版本,可使用以下地址查詢

       查看jar包版本信息網址:https://search.maven.org/

1)、首先導入spring的包,在框中spring-core

2)、導入mybatis的包,輸入mybatis

       3)、導入mybatis-spring整合包:如mybatis-spring

       4)、spring 注入Bean依賴包,此包用於@Autowired,輸入:

spring-beans

5)、由於mybatis是操作數據庫的,所以需要加載驅動包

       (1)、MySQL驅動包,輸入mysql-connector-java

       (2)、Qracle驅動包,輸入com.oracle,這個找不到11.2的版本

       6)、junit測試包,輸入junit

       7)、引入druid數據源jar包

       8)、導入spring-context的jar包,因爲要使用@Service

       9)、除上述jar包外,還需要如下jar包,導入方式同上:

       spring-txspring-jdbcservlet-apilog4jfastjson、spring-test、aspectjweavercommons-fileupload

       jackson-mapper-aslspring-webmvcjstl

最後附上所需的基本jar包圖:

10)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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.andyc</groupId>
  <artifactId>blogs</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>blogs Maven Webapp</name>
  <url>http://maven.apache.org</url>
  
   <!-- 
       導jar包推薦網址1:https://mvnrepository.com/artifact/org.springframework
       導jar包推薦網址2:https://search.maven.org/
   -->
  
   <!-- 依賴包版本號  -->
    <properties>
        <spring.version>5.1.7.RELEASE</spring.version>
        <mybatis.version>3.5.1</mybatis.version>
        <mybatis-spring.version>2.0.1</mybatis-spring.version>
        <aspectj.version>1.9.4</aspectj.version>
        <jackson.version>2.9.9</jackson.version>
        <servlet.version>3.0-alpha-1</servlet.version>
        <commons-fileupload.version>1.4</commons-fileupload.version>
        <commons-io.version>2.4</commons-io.version>
        <jstl.version>1.2</jstl.version>
        <log4j.version>1.2.17</log4j.version>
        <fastjson.version>1.2.58</fastjson.version>
        <junit.version>4.12</junit.version>
        <mysql.version>5.1.46</mysql.version>
        <druid.version>1.1.19</druid.version>
        
        <!-- 解決maven命令console中文亂碼   -->
        <argLine>-Dfile.encoding=UTF-8</argLine>
        <!-- 
              解決maven install報警告錯誤
              Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent!
        -->
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
  
  
<!-- ================================= 項目依賴 =================================== -->
    <dependencies>
    <!-- ===================== spring相關依賴包 ====================== -->
        <!--  
              spring-測試包 
              https://mvnrepository.com/artifact/org.springframework/spring-test
          -->
          <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-test</artifactId>
          <version>${spring.version}</version>
        </dependency>
        
        <!-- 
            springmvc依賴包 
            包含Spring MVC框架相關的所有類。包含國際化、標籤、Theme、視圖展現的FreeMarker、JasperReports、Tiles、Velocity、XSLT相關類。
            如果你的應用使用了獨立的MVC框架,則無需這個JAR文件裏的任何類
            https://mvnrepository.com/artifact/org.springframework/spring-webmvc
        -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>${spring.version}</version>
        </dependency>
        
        <!-- 
              核心包
              https://mvnrepository.com/artifact/org.springframework/spring-core 
          -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>${spring.version}</version>
        </dependency>
        
        <!-- 
            事務管理 :爲JDBC、Hibernate、JDO、JPA等提供的一致的聲明式和編程式事務管理
            https://mvnrepository.com/artifact/org.springframework/spring-tx
        -->
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-tx</artifactId>
          <version>${spring.version}</version>
        </dependency>
        
        <!-- 
            spring訪問JDBC數據源 
            https://mvnrepository.com/artifact/org.springframework/spring-jdbc
        -->
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-jdbc</artifactId>
          <version>${spring.version}</version>
        </dependency>
        
        <!--
             pring IOC的基礎實現,包含訪問配置文件、創建和管理bean等  
             缺少此包 - @Autowired 就會報錯:Autowired cannot to be  resolved to a type
             https://mvnrepository.com/artifact/org.springframework/spring-beans         
        -->
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-beans</artifactId>
          <version>${spring.version}</version>
        </dependency>
        
        <!-- 
            Bean工廠:ApplicationContext
            爲Spring核心提供了大量擴展;
            可以找到使用Spring ApplicationContext特性時所需的全部類;
            JDNI所需的全部類,UI方面的用來與模板(Templating)引擎如Velocity、FreeMarker、JasperReports集成的類,以及校驗Validation方面的相關類
            https://mvnrepository.com/artifact/org.springframework/spring-context
        -->
        <dependency>
          <groupId>org.springframework</groupId>
          <artifactId>spring-context</artifactId>
          <version>${spring.version}</version>
        </dependency>
        
    <!-- ========================= mybatis相關包 =========================== -->        
        <!--
            mybatis依賴包
            https://mvnrepository.com/artifact/org.mybatis/mybatis 
        -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>${mybatis.version}</version>
        </dependency>
        <!-- 
            mybatis-spring整合依賴包 
            https://mvnrepository.com/artifact/org.mybatis/mybatis-spring
        -->
        <dependency>
          <groupId>org.mybatis</groupId>
          <artifactId>mybatis-spring</artifactId>
          <version>${mybatis-spring.version}</version>
        </dependency>
        
    <!-- =========================== j2ee相關包 ============================ -->
        <!-- 支持HttpServletRequest、HttpServletResponse -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>servlet-api</artifactId>
            <version>${servlet.version}</version>
        </dependency>    
        
        <!--
            spring操作aop,需結合aspectj框架支持 
            https://mvnrepository.com/artifact/aspectj/aspectjweaver 
        -->
        <dependency>
          <groupId>org.aspectj</groupId>
          <artifactId>aspectjweaver</artifactId>
          <version>${aspectj.version}</version>
        </dependency>
        
        <!-- 
            java對象與json之間相互轉化: 可以將JSON格式的數據轉化爲類對象
            https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind
        -->
        <dependency>
          <groupId>com.fasterxml.jackson.core</groupId>
          <artifactId>jackson-databind</artifactId>
          <version>${jackson.version}</version>
        </dependency>
        
        <!-- 
            JSP標籤庫 
            https://mvnrepository.com/artifact/javax.servlet.jsp.jstl/jstl
        -->
        <dependency>
          <groupId>jstl</groupId>
          <artifactId>jstl</artifactId>
          <version>${jstl.version}</version>
        </dependency>
        
    <!-- ============================== 數據庫依賴包 ================================ -->            
        <!-- 
            MySQL驅動包 
            https://mvnrepository.com/artifact/mysql/mysql-connector-java
        -->
        <dependency>
           <groupId>mysql</groupId>
           <artifactId>mysql-connector-java</artifactId>
           <version>${mysql.version}</version>
        </dependency>
        
        <!-- Oracle驅動包 -->
        <!-- <dependency>
           <groupId>com.oracle</groupId>
           <artifactId>ojdbc6</artifactId>
           <version>11.2.0.1.0</version>     
        </dependency> -->
         
         <!-- 
            alibaba druid數據源 
            https://mvnrepository.com/artifact/com.alibaba/druid
         -->
         <dependency>
           <groupId>com.alibaba</groupId>
           <artifactId>druid</artifactId>
           <version>${druid.version}</version>
         </dependency>
        
    <!-- ============================== 其他依賴包 ================================ -->      
        <!-- 
            操作文件上傳
            https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload
        -->
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>${commons-fileupload.version}</version>
        </dependency>
            
        <!-- 
            操作文件上傳
            https://mvnrepository.com/artifact/commons-io/commons-io 
        -->
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>${commons-io.version}</version>
        </dependency>        
        
        <!-- 
            日誌 
            https://mvnrepository.com/artifact/log4j/log4j
        -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>${log4j.version}</version>
        </dependency>
        
        <!-- 
            將Java Bean 序列化爲json字符串 - logger4e
            https://mvnrepository.com/artifact/com.alibaba/fastjson
        -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>${fastjson.version}</version>
        </dependency>
        
        <!-- 
            junit4.12測試包
            作用域(scope)爲test(測試)、這樣發佈時就不會導入此包
            https://mvnrepository.com/artifact/junit/junit 
        -->
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>${junit.version}</version>
          <scope>test</scope>
        </dependency>
        
    <!-- ============================== 後期開發中需要用到的依賴包 ================================ -->             
        <!-- 
            分頁要用到此包
            https://mvnrepository.com/artifact/com.github.jsqlparser/jsqlparser 
        -->
        <!-- <dependency>
            <groupId>com.github.jsqlparser</groupId>
            <artifactId>jsqlparser</artifactId>
            <version>1.2</version>
        </dependency> -->
        
        <!-- 
            百度富文本編輯器
            https://search.maven.org/artifact/cn.songxinqiang/com.baidu.ueditor/1.1.2-offical/jar 
        -->
        <!-- <dependency>
          <groupId>cn.songxinqiang</groupId>
          <artifactId>com.baidu.ueditor</artifactId>
          <version>1.1.2-offical</version>
        </dependency> -->
    
    </dependencies>
  
    <!-- 
           解決Maven Java EE Configuration Problem (2 items)報錯問題 
          Dynamic Web Module 3.0 requires Java 1.6 or newer
          One or more constraints have not been satisfied
     -->
    <build>
          <plugins>
             <plugin>
                 <groupId>org.apache.maven.plugins</groupId>
                 <artifactId>maven-compiler-plugin</artifactId>
                 <version>3.3</version>
                 <configuration>
                     <!-- 指定source和target的版本 -->
                     <source>1.8</source>
                     <target>1.8</target>
                 </configuration>
             </plugin>
         </plugins>
    </build>
  
</project>
 

 

四、將使用mybatisgengerator工具生成的包整合到Maven項目中

1、將生成文件複製到src/main/java文件夾下,修改添加測試代碼及結構圖如下:

測試成功了,控制檯也展示了我查詢的數據!這說明Spring+Mybatis整合成功了,接下來就整合SpringMVC了!

2、編譯Maven項目:maven install

看到以下結果,就說明編譯也成功了!

3、配置文件:

1)web.xml

<?xml version="1.0" encoding="UTF-8"?>
<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_3_1.xsd"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
         http://java.sun.com/xml/ns/javaee/web-app_3_1.xsd"
         id="WebApp_ID" version="3.1">
    
    <display-name>blogs</display-name>
    
    <!-- 配置文件的位置 -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:config/spring.xml,classpath:config/spring-mybatis.xml</param-value>
    </context-param>
    
    <!-- 前臺提交數據給後臺的編碼格式 -->
    <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>
    <!-- 映射:過濾所有的url請求 -->
    <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    
    <!-- 配置spring監聽器 -->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <!-- 防止spring內存溢出監聽器 -->
    <listener>
        <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
    </listener>
    
    <!-- 配置springmvc servlet DispatcherServlet -->
    <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:config/spring-mvc.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <!-- 訪問路徑的後綴,可自行定義 -->
    <servlet-mapping>
        <servlet-name>springMvc</servlet-name>
        <url-pattern>*.action</url-pattern>
    </servlet-mapping>
    
    <!-- 首頁、歡迎頁 -->
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
    
    <!-- 配置session超時時間,單位分鐘 -->
    <session-config>
        <session-timeout>60</session-timeout>
    </session-config>
    
</web-app>
 

 

2)、src/main/resources的5個配置文件

Adb.properties

#Oracle配置
#hibernate.dialect=org.hibernate.dialect.OracleDialect
#driverClassName=oracle.jdbc.driver.OracleDriver
#validationQuery=SELECT 1 FROM DUAL
#jdbc_url=jdbc:oracle:thin:@localhost:1521:orcl
#jdbc_username=learn20190528
#jdbc_password=123456

#MySQL配置
hibernate.dialect=org.hibernate.dialect.MySQLDialect
driverClassName=com.mysql.jdbc.Driver
validationQuery=SELECT 1
jdbc_url=jdbc:mysql://localhost:3306/blogs?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull
jdbc_username=root
jdbc_password=root

#SQLServer配置
#hibernate.dialect=org.hibernate.dialect.SQLServerDialect
#driverClassName=net.sourceforge.jtds.jdbc.Driver
#validationQuery=SELECT 1
#jdbc_url=jdbc:jtds:sqlserver://127.0.0.1:1433/database
#jdbc_username=root
#jdbc_password=root

#配置Derby數據庫
#hibernate.dialect=org.hibernate.dialect.DerbyDialect
#driverClassName=org.apache.derby.jdbc.EmbeddedDriver
#validationQuery=SELECT 1
#jdbc_url=jdbc:derby:database;create=true
#jdbc_username=root
#jdbc_password=root

#jndiName=java:comp/env/dataSourceName

hibernate.hbm2ddl.auto=update
hibernate.show_sql=false
hibernate.format_sql=true

sessionInfoName=sessionInfo

#文件上傳配置
uploadFieldName=filedata
uploadFileMaxSize=20971520
uploadFileExts=txt,rar,zip,doc,docx,xls,xlsx,jpg,jpeg,gif,png,swf,wmv,avi,wma,mp3,mid
uploadDirectory=attached

 

Blog4j.properties

log4j.rootLogger=DEBUG,Console,File

 

log4j.appender.Console=org.apache.log4j.ConsoleAppender

log4j.appender.Console.Target=System.out

log4j.appender.Console.layout=org.apache.log4j.PatternLayout

log4j.appender.Console.layout.ConversionPattern=[%c]%m%n

 

log4j.appender.File=org.apache.log4j.RollingFileAppender

log4j.appender.File.File=blogs.log

log4j.appender.File.MaxFileSize=10MB

log4j.appender.File.Threshold=ALL

log4j.appender.File.layout=org.apache.log4j.PatternLayout

log4j.appender.File.layout.ConversionPattern=[%p][%d{yyyy-MM-dd HH\:mm\:ss,SSS}][%c]%m%n

Cspring.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
       http://www.springframework.org/schema/context 
       http://www.springframework.org/schema/context/spring-context-4.3.xsd">
    
    
    <!-- 引入屬性文件 - 數據庫配置文件 -->
    <context:property-placeholder location="classpath*:config/db.properties" ignore-unresolvable="true" />
    
    <!-- 自動掃描Bean(自動注入) -->
    <context:component-scan base-package="com.andyc.service" />            
    
</beans>
 

Dspring-mybatis.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:aop="http://www.springframework.org/schema/aop" 
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans 
       http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
       http://www.springframework.org/schema/aop 
       http://www.springframework.org/schema/aop/spring-aop-4.3.xsd 
       http://www.springframework.org/schema/tx 
       http://www.springframework.org/schema/tx/spring-tx-4.3.xsd">

    <!-- 配置數據源 -->
    <bean name="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
        <property name="url" value="${jdbc_url}" />
        <property name="username" value="${jdbc_username}" />
        <property name="password" value="${jdbc_password}" />

        <!-- 初始化連接大小 -->
        <property name="initialSize" value="0" />
        <!-- 連接池最大使用連接數量 -->
        <property name="maxActive" value="20" />
        <!-- 連接池最大空閒 、已經被棄用了-->
        <!-- <property name="maxIdle" value="20" /> -->
        <!-- 連接池最小空閒 -->
        <property name="minIdle" value="0" />
        <!-- 獲取連接最大等待時間 -->
        <property name="maxWait" value="60000" />
        <property name="validationQuery" value="${validationQuery}" />
        <property name="testOnBorrow" value="false" />
        <property name="testOnReturn" value="false" />
        <property name="testWhileIdle" value="true" />

        <!-- 配置間隔多久才進行一次檢測,檢測需要關閉的空閒連接,單位是毫秒 -->
        <property name="timeBetweenEvictionRunsMillis" value="60000" />
        <!-- 配置一個連接在池中最小生存的時間,單位是毫秒 -->
        <property name="minEvictableIdleTimeMillis" value="25200000" />
        <!-- 打開removeAbandoned功能 -->
        <property name="removeAbandoned" value="true" />
        <!-- 1800秒,也就是30分鐘 -->
        <property name="removeAbandonedTimeout" value="1800" />
        <!-- 關閉abanded連接時輸出錯誤日誌 -->
        <property name="logAbandoned" value="true" />
        <!-- 監控數據庫 -->
        <property name="filters" value="mergeStat" />
    </bean>    

    <!-- 配置myBatis文件 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <!-- 數據源 -->
        <property name="dataSource" ref="dataSource" />
        <!-- 自動掃描entity目錄, 省掉Configuration.xml裏的手工配置 -->
        <property name="mapperLocations" value="classpath:com/andyc/mapper/*.xml" />
    </bean>
    <!-- 配置dao層,即mybatis中的mapper-自動掃描 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!-- 給出需要掃描Dao層的包 -->
        <property name="basePackage" value="com.andyc.dao" />
        <!-- 注入sqlSessionFactory -->
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
    </bean>

    <!-- 配置事務管理器 -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />
    </bean>

    <!-- 註解方式配置事物 -->
    <!-- <tx:annotation-driven transaction-manager="transactionManager" /> -->

    <!-- 攔截器方式配置事物 -->
    <tx:advice id="transactionAdvice" transaction-manager="transactionManager">
        <tx:attributes>
            <tx:method name="add*" propagation="REQUIRED" />
            <tx:method name="append*" propagation="REQUIRED" />
            <tx:method name="insert*" propagation="REQUIRED" />
            <tx:method name="save*" propagation="REQUIRED" />
            <tx:method name="update*" propagation="REQUIRED" />
            <tx:method name="modify*" propagation="REQUIRED" />
            <tx:method name="edit*" propagation="REQUIRED" />
            <tx:method name="delete*" propagation="REQUIRED" />
            <tx:method name="remove*" propagation="REQUIRED" />
            <tx:method name="repair" propagation="REQUIRED" />
            <tx:method name="delAndRepair" propagation="REQUIRED" />

            <tx:method name="get*" propagation="SUPPORTS" />
            <tx:method name="find*" propagation="SUPPORTS" />
            <tx:method name="load*" propagation="SUPPORTS" />
            <tx:method name="search*" propagation="SUPPORTS" />
            <tx:method name="datagrid*" propagation="SUPPORTS" />

            <tx:method name="*" propagation="SUPPORTS" />
        </tx:attributes>
    </tx:advice>
    <!-- 切面 -->
    <aop:config>
        <aop:pointcut id="transactionPointcut" expression="execution(* com.andyc.service..*Impl.*(..))" />
        <aop:advisor pointcut-ref="transactionPointcut" advice-ref="transactionAdvice" />
    </aop:config>


    <!-- 配置druid監控spring jdbc - 可有可無 -->
    <bean id="druid-stat-interceptor" class="com.alibaba.druid.support.spring.stat.DruidStatInterceptor">
    </bean>
    <bean id="druid-stat-pointcut" class="org.springframework.aop.support.JdkRegexpMethodPointcut" scope="prototype">
        <property name="patterns">
            <list>
                <value>com.andyc.service.*</value>
            </list>
        </property>
    </bean>
    <!-- 切面 -->
    <aop:config>
        <aop:advisor advice-ref="druid-stat-interceptor" pointcut-ref="druid-stat-pointcut" />
    </aop:config>

</beans>

 

Espring-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:p="http://www.springframework.org/schema/p"
       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-4.3.xsd
       http://www.springframework.org/schema/context 
       http://www.springframework.org/schema/context/spring-context-4.3.xsd
       http://www.springframework.org/schema/mvc 
       http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd">

    <!-- 自動掃描controller包下的所有類,使其認爲spring mvc的控制器 -->
    <context:component-scan base-package="com.andyc.controller" />

    <!-- 對模型視圖名稱的解析,即在模型視圖名稱添加前後綴、配置多級文件夾時,控制器返回JSP頁面是可以加上指定級文件夾 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/WEB-INF/view/" p:suffix=".jsp" />
        
    <!-- 能支持springmvc更高級的一些功能,JSR303校驗,快捷的ajax...映射動態請求 -->
    <mvc:annotation-driven/>
    <!-- 將springmvc不能處理的請求交給tomcat -->
    <mvc:default-servlet-handler/>
    
    <!--對靜態資源文件的訪問 -->
    <mvc:resources mapping="/static/**" location="/static/" />            
    
    <!-- 文件上傳 -->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="defaultEncoding">
            <value>UTF-8</value>
        </property>
        <property name="maxUploadSize">
            <value>32505856</value><!-- 上傳文件大小限制爲31M,31*1024*1024 -->
        </property>
        <property name="maxInMemorySize">
            <value>4096</value>
        </property>
    </bean>    
    
</beans>
 

 

4、發佈項目到Tomcat服務器

5、寫好service、controller,並測試

6、輸入http://localhost:8080/currency/usersController/

userInfo.do?id=1 進行測試

說明spring+springMVC+mybatis+maven整合成功了,下面就附上代碼。

7、附上service、controller、test代碼

AIusersService.java接口代碼

package cy.service;

 

import cy.model.Users;

/**

 * @author Administrator

 * @描述 用戶Service接口

 *

 */

public interface IUsersService {

   /**

    * 根據id查詢用戶信息

    * @param id

    * @return

    */

   public Users getUsersById(Integer id);

  

   /**

    * 插入用戶信息

    * @param users

    * @return

    */

   public int insertData(Users users);

}

BUsersServiceImpl.java代碼

package cy.service;

 

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Service;

import cy.dao.UsersMapper;

import cy.model.Users;

 

/**

 * @author Administrator

 * @描述 用戶Service接口實現類

 *

 */

@Service("UsersService")       //在spring.xml文件中配置自動掃描service、即啓動時自動注入到spring.xml中

public class UsersServiceImpl implements IUsersService {

       private UsersMapper usersMapper;

      

       public UsersMapper getUsersMapper() {

              return usersMapper;

       }

 

       /**

        * 將UsersMapper注入到Service中

        * @param usersMapper

        * 自動注入

        */

       @Autowired

       public void setUsersMapper(UsersMapper usersMapper) {

              this.usersMapper = usersMapper;

       }

 

       /**

        * 根據id查詢用戶

        * 重寫Service接口方法

        */

       @Override

       public Users getUsersById(Integer id) {

              return usersMapper.selectByPrimaryKey(id);

       }

 

       /**

        * 插入用戶

        * 重寫用戶Service接口方法

        */

       @Override

       public int insertData(Users users) {

              return usersMapper.insertSelective(users);

       }

}

CUserTest.java代碼

package test;

 

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;

import cy.model.Users;

import cy.service.IUsersService;

 

/**

 * @描述 測試方法3:spring + junit

 * @author [email protected]

 *        需要導jar包:spring-test

 *        注入Service

 */

@RunWith(SpringJUnit4ClassRunner.class)

@ContextConfiguration(locations = {"classpath:spring.xml", "classpath:spring-mybatis.xml"})

public class UserTest {

       // 注入Service

       private IUsersService service;

       public IUsersService getService() {

              return service;

       }

       @Autowired

       public void setService(IUsersService service) {

              this.service = service;

       }

       @Test

       public void test01() {

              Users users = service.getUsersById(1);

              System.out.println(users);

              System.out.println(users.getUsername());

              System.out.println(users.getTelphone());

       }

}

DUsersController.java代碼

package cy.controller;

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Controller;

import org.springframework.web.bind.annotation.PathVariable;

import org.springframework.web.bind.annotation.RequestMapping;

import cy.model.Users;

import cy.service.IUsersService;

/**

 * @author Administrator

 * @描述 用戶控制器

 *

 */

@Controller // 註解到spring-mvc.xml中,才能自動掃描

@RequestMapping("/usersController") // 訪問路徑(控制器)

public class UsersController {

   private IUsersService iUsersService;

   public IUsersService getiUsersService() {

      return iUsersService;

   }

   /**

    * 自動注入Service

    * @param iUsersService

    */

   @Autowired

   public void setiUsersService(IUsersService iUsersService) {

      this.iUsersService = iUsersService;

   }

  

/**

    * 根據id查詢用戶詳細信息

    * @param id

    * @param request

    * @return

    * 訪問路徑:http://localhost:8080/currency/usersController/userInfo.do?id=1

    * @PathVariable - REST風格的URI

    * 加上@PathVariable,代表id爲變量

    * 訪問路徑1http://localhost:8080/currency/usersController/userInfo/1.do

    * 訪問路徑2http://localhost:8080/currency/usersController/1/userInfo.do

    */

   @RequestMapping("/{id}/userInfo")

   // @RequestMapping("/userInfo/{id}") // 訪問userInfo()方法

   public String userInfo(@PathVariable Integer id, HttpServletRequest request){

      // 根據條件查詢用戶

      Users users = iUsersService.getUsersById(id);

      // 將查詢信息保存到HttpServletRequest

      request.setAttribute("user", users);

      return "admin/userInfo"; // 返回到userInfo.jsp頁面

      }

}

8userInfo.jsp代碼

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<!DOCTYPE html >

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

<title>測試springMVC</title>

</head>

<body>

<h1>${user.username}</h1><br>

<h1>${user.telphone}</h1><br>

<h1>我是admin下的userInfo.jsp文件</h1>

</body>

</html>

9、附上最終的目錄結構圖

就這樣,spring+springmvc+mybatis+maven整合到此結束!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章