Spring+Mybatis+SpringMVC+Maven+MySql環境搭建

創建maven工程

a)         打開eclipse,file->new->project->Maven->Maven Project

 

b)         下一步

 

c)         選擇創建的工程爲webapp,下一步

 

d)         填寫項目的group id和artifact id。一般情況下,group id寫域名的倒序,artifact id寫項目名稱即可。最後點完成。

 

e)         最初建好後,項目目錄結構如下

 

f)          一般的項目目錄中,在Java Resources目錄下,還有src/main/java,src/main/test/java,src/main/test/resources這三個source folder,需要手動創建。在下面的步驟中會講到如何補齊這三個目錄。

 

3、 修改項目基本設置

a)         右鍵此項目名稱->Properties->Java Build path,點擊source標籤。

 

b)         提示 hello/src/main/java (missing)和hello/src/test/java (missing)。一般的項目目錄中,在java Resources目錄下,還會有src/main/test/resources這個source folder。將missing的先刪除,再重新創建,缺少的直接創建。點右鍵操作按鍵進行刪除和添加。在目錄下把index.html刪除,然後重新建一個index.html就不會報錯了。

 

c)         修改完整,效果如下圖

 

d)         接下來再修改libraries的配置,jre使用1.7版本。選中JRE System Library->edit ,更換版本。

 

e)         再修改一下order and export裏的配置,主要是調整這四個目錄的顯示順序,調爲自己喜歡的順序即可

 

f)          接下來再修改project facets,先將java修改爲1.7。

 

Dynamic Web Module無法在這裏直接修改爲3.0,需要打開工程目錄下有一個.settings文件夾,打開org.eclipse.wst.common.project.facet.core.xml,做如下修改:

<installed facet="jst.web" version="3.0"/>

 

重啓eclipe就可以看到更改生效了。


修改POM文件引入相關jar

<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.xiaopo</groupId>
  <artifactId>ssm</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>ssm Maven Webapp</name>
  <url>http://maven.apache.org</url>
  
	<properties>
		<!-- spring版本號 -->  
		<spring.version>4.2.5.RELEASE</spring.version>
		<!-- mybatis版本號 -->  
		<mybatis.version>3.2.8</mybatis.version>  
		<!-- junit版本號 -->  
		<junit.version>4.11</junit.version>
		<!-- log4j日誌文件管理包版本 -->  
        <slf4j.version>1.7.10</slf4j.version>  
        <log4j.version>1.2.14</log4j.version> 
	</properties>
	<dependencies>
		<!-- spring start -->
	 	<dependency>  
	       <groupId>org.springframework</groupId>  
	       <artifactId>spring-core</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-context-support</artifactId>  
	       <version>${spring.version}</version>  
	   </dependency>
	   <dependency>  
	       <groupId>org.springframework</groupId>  
	       <artifactId>spring-aspects</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>org.springframework</groupId>
			<artifactId>spring-instrument</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-instrument-tomcat</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-orm</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-webmvc-portlet</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<!-- spring end -->
		  
	   <!-- mybatis start -->
	   <dependency>  
		    <groupId>org.mybatis</groupId>  
		    <artifactId>mybatis</artifactId>  
		    <version>${mybatis.version}</version>  
		</dependency>
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis-spring</artifactId>
			<version>1.2.2</version>
		</dependency>
		   <!-- mybatis 分頁相關 -->
		   <dependency>
			<groupId>com.github.miemiedev</groupId>
			<artifactId>mybatis-paginator</artifactId>
			<version>1.2.15</version>
		</dependency>
		<dependency>
			<groupId>com.github.pagehelper</groupId>
			<artifactId>pagehelper</artifactId>
			<version>4.1.2</version>
		</dependency>
		<!-- mybatis end -->
		<!-- 單元測試依賴  -->  
		<dependency>  
		    <groupId>junit</groupId>  
		    <artifactId>junit</artifactId>  
		    <version>${junit.version}</version>  
		    <scope>test</scope>  
		</dependency>
	  
		<!-- mysql驅動包  -->  
		<dependency>  
		    <groupId>mysql</groupId>  
		    <artifactId>mysql-connector-java</artifactId>  
		    <version>5.1.39</version>  
		</dependency>
	  
	  	<!-- alibaba fastjson druid -->
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>fastjson</artifactId>
			<version>1.2.20</version>
		</dependency>
		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid</artifactId>
			<version>1.0.12</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>commons-fileupload</groupId>
			<artifactId>commons-fileupload</artifactId>
			<version>1.3.1</version>
		</dependency>
		<dependency>
			<groupId>commons-io</groupId>
			<artifactId>commons-io</artifactId>
			<version>2.0.1</version>
		</dependency>
		
		<dependency>
			<groupId>org.apache.tomcat</groupId>
			<artifactId>servlet-api</artifactId>
			<version>6.0.37</version>
			<scope>provided</scope>
		</dependency>
		<dependency>
			<groupId>org.apache.tomcat</groupId>
			<artifactId>jsp-api</artifactId>
			<version>6.0.37</version>
			<scope>provided</scope>
		</dependency>
	 </dependencies>
	 
  
  
  <build>
    <finalName>ssm</finalName>
  </build>
</project>



配置文件

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"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	version="2.5">
	<display-name>ssm</display-name>
  
	<!-- 讀取spring配置文件 -->  
	<context-param>  
	    <param-name>contextConfigLocation</param-name>  
	    <param-value>classpath:spring/spring-core.xml</param-value>  
	</context-param>
	<!-- 應用路徑變量值 -->  
    <context-param>  
        <param-name>webAppRootKey</param-name>  
        <param-value>ssm.root</param-value>  
    </context-param>
  	<!-- 日誌記錄 -->
	<context-param>
		<!-- 日誌配置文件路徑 -->  
		<param-name>log4jConfigLocation</param-name>
		<param-value>classpath:config/log4j.xml</param-value>
	</context-param>
	<context-param>  
        <!-- 日誌頁面的刷新間隔 -->  
        <param-name>log4jRefreshInterval</param-name>  
        <param-value>6000</param-value>  
    </context-param>
  
	<!-- SpringMVC中文亂碼過濾器 -->  
	<filter>  
	    <filter-name>SpringEncodingFilter</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>SpringEncodingFilter</filter-name>  
	    <url-pattern>/*</url-pattern>  
	</filter-mapping> 
  
  	<!-- springMVC核心配置 -->  
    <servlet>  
        <servlet-name>dispatcherServlet</servlet-name>  
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
        <init-param>  
            <param-name>contextConfigLocation</param-name>  
            <!--spingMVC的配置路徑  -->  
            <param-value>classpath:spring/spring-mvc.xml</param-value>  
        </init-param>  
        <load-on-startup>1</load-on-startup>  
    </servlet>  
    <!-- 攔截設置 -->  
    <servlet-mapping>  
        <servlet-name>dispatcherServlet</servlet-name>  
        <url-pattern>/</url-pattern>  
    </servlet-mapping>
    
    <!-- Spring Log4j加載監聽器,必須在ContextLoaderListener之前 -->
	<listener>
		<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
	</listener>

	<!-- Spring核心監聽器 -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
  	
	<!-- 起始歡迎界面 -->  
	<welcome-file-list>  
	    <welcome-file>index.jsp</welcome-file>  
	</welcome-file-list>
</web-app>


log4j.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>
	<!-- 控制檯 -->
   <appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">  
        <layout class="org.apache.log4j.PatternLayout">  
            <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%p]-[%M|%F:%L] %m%n"/>      
        </layout> 		
    </appender>   
   
   <appender  name="ERROR" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="File" value="/home/logs/ssm/error/error.log" />
        <param name="Append" value="true" />
        <param name="Threshold" value="ERROR" />
        <param name="DatePattern" value="'.'yyyy-MM-dd"/>
		 <param name="Encoding" value="UTF-8" />  
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%p]-[%M|%F:%L] %m%n"/>
        </layout>
        <rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
            <param name="fileNamePattern" value="error.log.%d{yyyy-MM-dd}"/>
        </rollingPolicy>
    </appender>
	
	<appender  name="INFO" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="File" value="/home/logs/ssm/info/info.log" />
        <param name="Append" value="true" />
        <param name="Threshold" value="INFO" />
        <param name="DatePattern" value="'.'yyyy-MM-dd"/>
		 <param name="Encoding" value="UTF-8" />  
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%p]-[%M|%F:%L] %m%n"/>
        </layout>
        <rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
            <param name="fileNamePattern" value="info.log.%d{yyyy-MM-dd}"/>
        </rollingPolicy>
    </appender>
    
    <!-- 
    <appender  name="DEBUG" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="File" value="/home/logs/ssm/debug/debug.log" />
        <param name="Append" value="true" />
        <param name="Threshold" value="DEBUG" />
        <param name="DatePattern" value="'.'yyyy-MM-dd"/>
		 <param name="Encoding" value="UTF-8" />  
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} [%p]-[%M|%F:%L] %m%n"/>
        </layout>
        <rollingPolicy class="org.apache.log4j.rolling.TimeBasedRollingPolicy">
            <param name="fileNamePattern" value="debug.log.%d{yyyy-MM-dd}"/>
        </rollingPolicy>
    </appender>
     -->
    
	<!-- 根logger的設置 -->
	<root>
		<priority value="DEBUG" />
		<appender-ref ref="INFO" />
		<appender-ref ref="CONSOLE"/>
		<appender-ref ref="ERROR"/>
		<!-- <appender-ref ref="DEBUG"/> -->
	</root>
</log4j:configuration>  

spring-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:p="http://www.springframework.org/schema/p" 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/beans  
           http://www.springframework.org/schema/beans/spring-beans-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  
           http://www.springframework.org/schema/context  
           http://www.springframework.org/schema/context/spring-context-3.2.xsd"
	default-autowire="byName" default-lazy-init="false">

	<!-- 採用註釋的方式配置bean -->
	<context:annotation-config />
	
	<!-- 配置要掃描的包 -->
	<context:component-scan base-package="com.xiaopo.service"/>
	
	<!-- proxy-target-class默認"false",更改爲"ture"使用CGLib動態代理 -->
	<aop:aspectj-autoproxy proxy-target-class="true" />
	
	<import resource="classpath:spring/spring-properties.xml" />
	<import resource="classpath:spring/spring-mybatis.xml" />
</beans>

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" xmlns:aop="http://www.springframework.org/schema/aop"
	xsi:schemaLocation="     
           http://www.springframework.org/schema/beans     
           http://www.springframework.org/schema/beans/spring-beans-4.0.xsd     
           http://www.springframework.org/schema/context     
           http://www.springframework.org/schema/context/spring-context-4.0.xsd    
           http://www.springframework.org/schema/mvc     
           http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
           http://www.springframework.org/schema/aop
           http://www.springframework.org/schema/aop/spring-aop-4.0.xsd">

	<context:component-scan base-package="com.xiaopo.controller" />
	
	<!-- 定義文件上傳解析器 -->
	<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
		<!-- 設定默認編碼 -->
		<property name="defaultEncoding" value="UTF-8"></property>
		<!-- 設定文件上傳的最大值20MB,20*1024*1024 -->
		<property name="maxUploadSize" value="20971520"></property>
	</bean>

	<!-- 對模型視圖添加前後綴 -->  
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"  
     p:prefix="/WEB-INF/view/" p:suffix=".jsp"/>
     
    <!-- 處理在類級別上的@RequestMapping註解 -->
	<bean
		class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"></bean>
    <!-- 處理方法級別上的@RequestMapping註解 -->
	<bean
		class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
		<property name="messageConverters">
			<list>
				<ref bean="stringHttpMessageConverter" />
				<ref bean="fastJsonHttpMessageConverter" />
				<!-- <ref bean="marshallingHttpMessageConverter"/> -->
			</list>
		</property>
	</bean>

	<bean id="stringHttpMessageConverter"
		class="org.springframework.http.converter.StringHttpMessageConverter">
		<property name="supportedMediaTypes">
			<list>
				<value>text/html;charset=UTF-8</value>
			</list>
		</property>
	</bean>


	<bean id="fastJsonHttpMessageConverter"
		class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
		<property name="supportedMediaTypes">
			<list>
				<value>application/json;charset=UTF-8</value>
			</list>
		</property>
		<property name="features">
			<value>WriteMapNullValue</value>
		</property>
	</bean>
</beans>

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"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-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
   http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd">

	<!-- scan for mappers and let them be autowired -->
	<!-- <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="mybatis.mapper" 
		/> </bean> -->
	<!-- 基於Druid數據庫鏈接池的數據源配置 -->
	<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="clone">
		<!-- 基本屬性driverClassName、 url、user、password -->
		<property name="driverClassName" value="${jdbc.driverClassName}" />
		<property name="url" value="${core.jdbc.url}" />
		<property name="username" value="${core.jdbc.username}" />
		<property name="password" value="${core.jdbc.password}" />
		
		<!-- 配置初始化大小、最小、最大 -->
		<!-- 通常來說,只需要修改initialSize、minIdle、maxActive -->
		<!-- 初始化時建立物理連接的個數,缺省值爲0 -->
		<property name="initialSize" value="2" />
		<!-- 最小連接池數量 -->
		<property name="minIdle" value="2" />
		<!-- 最大連接池數量,缺省值爲8 -->
		<property name="maxActive" value="10" />

		<!-- 獲取連接時最大等待時間,單位毫秒。配置了maxWait之後,缺省啓用公平鎖,併發效率會有所下降,如果需要可以通過配置useUnfairLock屬性爲true使用非公平鎖。 -->
		<property name="maxWait" value="60000" />
		
		<!-- 
			有些數據庫連接的時候有超時限制(MySQL連接在8小時後斷開),或者由於網絡中斷等原因,連接池的連接會出現失效的情況,這時候可以設置一個testWhileIdle參數爲true,
			如果檢測到當前連接不活躍的時間超過了timeBetweenEvictionRunsMillis,則去手動檢測一下當前連接的有效性,在保證確實有效後才加以使用。
			在檢測活躍性時,如果當前的活躍時間大於minEvictableIdleTimeMillis,則認爲需要關閉當前連接。當
			然,爲了保證絕對的可用性,你也可以使用testOnBorrow爲true(即在每次獲取Connection對象時都檢測其可用性),不過這樣會影響性能。
		-->
		<!-- 配置間隔多久才進行一次檢測,檢測需要關閉的空閒連接,單位是毫秒(3600000:爲1小時) -->
		<property name="timeBetweenEvictionRunsMillis" value="3600000" />
		<!-- 配置一個連接在池中最小生存的時間,單位是毫秒(300000:爲5分鐘) -->
		<property name="minEvictableIdleTimeMillis" value="300000" />
		<!-- 用來檢測連接是否有效的sql,要求是一個查詢語句。如果validationQuery爲null,testOnBorrow、testOnReturn、testWhileIdle都不會其作用。 -->
		<property name="validationQuery" value="${jdbc.pool.validationQuery}" />
		<!-- 申請連接的時候檢測,如果空閒時間大於timeBetweenEvictionRunsMillis,執行validationQuery檢測連接是否有效。建議配置爲true,不影響性能,並且保證安全性。-->
      	<property name="testWhileIdle" value="true" />
      	<!-- 申請連接時執行validationQuery檢測連接是否有效,做了這個配置會降低性能。缺省值:true -->
      	<property name="testOnBorrow" value="false" />
      	<!-- 歸還連接時執行validationQuery檢測連接是否有效,做了這個配置會降低性能。缺省值:false -->
      	<property name="testOnReturn" value="false" />
      	
      	<!-- 打開PSCache,並且指定每個連接上PSCache的大小 -->
		<!-- 是否緩存preparedStatement,也就是PSCache。PSCache對支持遊標的數據庫性能提升巨大,比如說oracle。在mysql5.5以下的版本中沒有PSCache功能,建議關閉掉。5.5及以上版本有PSCache,建議開啓。缺省值:false -->
		<property name="poolPreparedStatements" value="true" />
		<!-- 要啓用PSCache,必須配置大於0,當大於0時,poolPreparedStatements自動觸發修改爲true。在Druid中,不會存在Oracle下PSCache佔用內存過多的問題,可以把這個數值配置大一些,比如說100。 -->
		<property name="maxPoolPreparedStatementPerConnectionSize" value="20" />
		
		<!-- 解密密碼必須要配置的項 -->
<!-- 		<property name="filters" value="config" /> -->
<!-- 		<property name="connectionProperties" value="config.decrypt=true" /> -->
	</bean>
	
	<!-- 將數據源映射到sqlSessionFactory中 -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="configLocation" value="classpath:mybatis/mybatis-config.xml" />
		<property name="dataSource" ref="dataSource" />
		<property name="typeAliasesPackage" value="com.xiaopo.domain" />
		<property name="mapperLocations" value="classpath:mybatis/mapper/*.xml" />
	</bean>
	
	<!-- mapper掃描器 -->
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="basePackage" value="com.xiaopo.mapper" />
		<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
	</bean>

	<!--======= 事務配置 Begin ================= -->
	<!-- 事務管理器(由Spring管理MyBatis的事務) -->
	<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<!-- 關聯數據源 -->
		<property name="dataSource" ref="dataSource"></property>
	</bean>
	<!-- 註解事務 -->
	<tx:annotation-driven transaction-manager="transactionManager" />
	<!--======= 事務配置 End =================== -->

</beans>

spring-properties.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:c="http://www.springframework.org/schema/c" xmlns:cache="http://www.springframework.org/schema/cache"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:jee="http://www.springframework.org/schema/jee"
	xmlns:lang="http://www.springframework.org/schema/lang" xmlns:mvc="http://www.springframework.org/schema/mvc"
	xmlns:oxm="http://www.springframework.org/schema/oxm" xmlns:p="http://www.springframework.org/schema/p"
	xmlns:task="http://www.springframework.org/schema/task" xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:util="http://www.springframework.org/schema/util"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
		http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd
		http://www.springframework.org/schema/cache http://www.springframework.org/schema/cache/spring-cache-4.2.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd
		http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-4.2.xsd
		http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-4.2.xsd
		http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang-4.2.xsd
		http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd
		http://www.springframework.org/schema/oxm http://www.springframework.org/schema/oxm/spring-oxm-4.2.xsd
		http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.2.xsd
		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd
		http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.2.xsd"
	default-lazy-init="true">
    
	<!-- 引入jdbc配置文件 -->    
    <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
       <property name="locations">  
           <list>  
              <value>classpath:config/*.properties</value>  
               <!--要是有多個配置文件,只需在這裏繼續添加即可 -->  
           </list>  
       </property>  
    </bean>
    
</beans>

mybatis-config.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!-- Copyright 2009-2012 The MyBatis Team Licensed under the Apache License, 
	Version 2.0 (the "License"); you may not use this file except in compliance 
	with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 
	Unless required by applicable law or agreed to in writing, software distributed 
	under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES 
	OR CONDITIONS OF ANY KIND, either express or implied. See the License for 
	the specific language governing permissions and limitations under the License. -->
<!DOCTYPE configuration
    PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>
	<!-- 引用系統全局配置文件 -->
<!-- 	<properties resource="public_system.properties" /> -->
	<settings>
		<!-- 這個配置使全局的映射器啓用或禁用 緩存 -->
		<setting name="cacheEnabled" value="true" />
		<!-- 全局啓用或禁用延遲加載。當禁用時, 所有關聯對象都會即時加載 -->
		<setting name="lazyLoadingEnabled" value="true" />
		<!-- 允許或不允許多種結果集從一個單獨 的語句中返回(需要適合的驅動) -->
		<setting name="multipleResultSetsEnabled" value="true" />
		<!-- 使用列標籤代替列名。 不同的驅動在這 方便表現不同。 參考驅動文檔或充分測 試兩種方法來決定所使用的驅動 -->
		<setting name="useColumnLabel" value="true" />
		<!-- 允許 JDBC 支持生成的鍵。 需要適合的 驅動。 如果設置爲 true 則這個設置強制 生成的鍵被使用, 儘管一些驅動拒絕兼 容但仍然有效(比如 
			Derby) -->
		<setting name="useGeneratedKeys" value="false" />
		<!-- 配置默認的執行器。SIMPLE 執行器沒 有什麼特別之處。REUSE 執行器重用 預處理語句。BATCH 執行器重用語句 和批量更新 -->
		<setting name="defaultExecutorType" value="SIMPLE" />
		<!-- 設置超時時間, 它決定驅動等待一個數 據庫響應的時間 -->
		<setting name="defaultStatementTimeout" value="100" />
		<setting name="safeRowBoundsEnabled" value="false" />
		<setting name="mapUnderscoreToCamelCase" value="false" />
		<setting name="localCacheScope" value="SESSION" />
		<setting name="jdbcTypeForNull" value="OTHER" />
		<setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString" />
	</settings>
</configuration>

UserInfoMapper.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC
	"-//mybatis.org//DTD Mapper 3.0//EN"
	"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace:命名空間 -->
<mapper namespace="com.xiaopo.mapper.UserInfoMapper">
	
	<sql id="allCols">
		id,
		user_name,
		nick_name,
		password,
		create_time
	</sql>
	
	<resultMap type="com.xiaopo.domain.UserInfo" id="UserInfoMap">
		<id column="id" property="id"/>
		<result column="user_name" property="userName"/>
		<result column="nick_name" property="nickName"/>
		<result column="password" property="password"/>
		<result column="create_time" property="createTime"/>
	</resultMap>
	
	<!-- 插入一條新數據 -->
	<insert id="saveUser" useGeneratedKeys="true" keyProperty="userInfo.id">
		INSERT INTO user_info(id,user_name,nick_name,password,create_time)
		VALUES(#{userInfo.id,jdbcType=INTEGER},#{userInfo.userName,jdbcType=INTEGER},#{userInfo.nickName,jdbcType=INTEGER},#{userInfo.password,jdbcType=INTEGER},#{userInfo.createTime,jdbcType=TIMESTAMP})
	</insert>
	
	<!-- 根據用戶名查詢用戶信息 -->
	<select id="queryUserInfoByUserName" parameterType="String" resultMap="UserInfoMap">
		SELECT <include refid="allCols"></include>
		FROM user_info
		WHERE user_name=#{userName}
	</select>
	
</mapper>

mysql 建表語句

CREATE TABLE `user_info` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID',
  `user_name` varchar(40) NOT NULL COMMENT '用戶用戶名',
  `nick_name` varchar(100) NOT NULL COMMENT '暱稱',
  `password` varchar(40) NOT NULL COMMENT '密碼',
  `create_time` datetime NOT NULL COMMENT '創建時間',
  PRIMARY KEY (`id`),
  UNIQUE KEY `user_info_user_name_unique` (`user_name`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COMMENT='用戶表'




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