先說一下,這個搭建之前用的項目名叫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-generator的jar包(版本可自行選擇),本人使用的是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工程結構圖
三、引入spring和mybatis需要的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-tx、spring-jdbc、servlet-api、log4j、fastjson、spring-test、aspectjweaver、commons-fileupload、
jackson-mapper-asl、spring-webmvc、jstl
最後附上所需的基本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>
四、將使用mybatis的gengerator工具生成的包整合到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個配置文件
A、db.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
B、log4j.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
C、spring.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>
D、spring-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>
E、spring-mvc.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns: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代碼
A、IusersService.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);
}
B、UsersServiceImpl.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);
}
}
C、UserTest.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());
}
}
D、UsersController.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爲變量
* 訪問路徑1:http://localhost:8080/currency/usersController/userInfo/1.do
* 訪問路徑2:http://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頁面
}
}
8、userInfo.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整合到此結束!