1. 程式人生 > >基於Maven工具搭建Spring+SpringMVC++MyBatis(ssm)框架步驟

基於Maven工具搭建Spring+SpringMVC++MyBatis(ssm)框架步驟

目錄

1.使用Ecplise建立Maven工程:

2.構建SSM框架

3.日誌資訊:log4j

4.應用例項:使用者登入

5 資料庫MySQL



1.使用Ecplise建立Maven工程:

1.1 File -> New -> Other,在New視窗中選擇 Maven -> Maven Project;點選next,如下圖

maven

1.2選擇路徑,點選next,如下圖

1.3選擇專案型別 選擇Artifact Id為maven-archetype-webapp那一項,如下圖

1.4 輸入Group ID和 Artifact ID,以及Package,點選finish;

Group ID:專案組織唯一識別符號,實際對應Java包的結構;

Artifact ID:專案的唯一識別符號,實際對應專案的的名稱;

1.5 點選finish後,生成的工程結構,如下圖

1.6 目錄結構和標準的maven web結構不一致,少了一個資料夾src/test/resources,我們手動建立,右鍵專案根目錄點選New -> Source Folder,建出這個資料夾,如下圖:

1.7 把專案變成Dynamic Web專案右鍵專案,properties --》Project Facets,點選Convert to faceted fro,勾上Dynamic Web Module,並將Version為3.0(Java7版本),若修改報錯,也可以將工程轉成Navigator檢視,修改.setting資料夾下的檔案;

設定部署程式集(Web Deployment Assembly)
上面步驟設定完成後,點選OK,再右鍵專案,選擇properties --》Deployment Assembly,如下圖

 

2.構建SSM框架

2.1 pom.xml中新增所需要的jar包:注意根據專案實際情況修改groupId、artifactId、version標籤;

<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>org.ssm</groupId>
  <artifactId>UserSystem</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>userSystem Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-test</artifactId>
			<version>3.2.5.RELEASE</version>
		</dependency>


		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-aop</artifactId>
			<version>3.2.5.RELEASE</version>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>3.2.5.RELEASE</version>
		</dependency>

		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>1.2.17</version>
		</dependency>


		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>3.2.3</version>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-tx</artifactId>
			<version>3.2.5.RELEASE</version>
		</dependency>

		<dependency>
			<groupId>org.apache.commons</groupId>
			<artifactId>commons-lang3</artifactId>
			<version>3.1</version>
		</dependency>

		<dependency>
			<groupId>com.googlecode.xmemcached</groupId>
			<artifactId>xmemcached</artifactId>
			<version>1.4.3</version>
		</dependency>

		<dependency>
			<groupId>commons-fileupload</groupId>
			<artifactId>commons-fileupload</artifactId>
			<version>1.3</version>
		</dependency>

		<dependency>
			<groupId>com.googlecode.json-simple</groupId>
			<artifactId>json-simple</artifactId>
			<version>1.1</version>
		</dependency>

		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>fastjson</artifactId>
			<version>1.2.7</version>
		</dependency>
		
		  <dependency>
		    <groupId>net.sf.json-lib</groupId>
		    <artifactId>json-lib</artifactId>
		    <version>2.4</version>
		    <classifier>jdk15</classifier>  
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jdbc</artifactId>
			<version>3.2.5.RELEASE</version>
		</dependency>

		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis-spring</artifactId>
			<version>1.2.1</version>
		</dependency>

		<dependency>
			<groupId>org.apache.poi</groupId>
			<artifactId>poi</artifactId>
			<version>3.9</version>
		</dependency>

		<dependency>
			<groupId>org.apache.poi</groupId>
			<artifactId>poi-ooxml</artifactId>
			<version>3.9</version>
			<exclusions>
				<exclusion>
					<groupId>stax</groupId>
					<artifactId>stax-api</artifactId>
				</exclusion>
			</exclusions>
		</dependency>

		<dependency>
			<groupId>net.sf.jxls</groupId>
			<artifactId>jxls-core</artifactId>
			<version>1.0.3</version>
		</dependency>

		<dependency>
			<groupId>net.sf.jxls</groupId>
			<artifactId>jxls-reader</artifactId>
			<version>1.0.3</version>
		</dependency>

		<dependency>
			<groupId>com.google.code.gson</groupId>
			<artifactId>gson</artifactId>
			<version>2.2.4</version>
		</dependency>

	<!-- 	<dependency>
			<groupId>com.oracle</groupId>
			<artifactId>ojdbc6</artifactId>
			<version>11.2.0.1.0</version>
		</dependency> -->

		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.27</version>
		</dependency>

		<dependency>
			<groupId>net.sourceforge.jtds</groupId>
			<artifactId>jtds</artifactId>
			<version>1.2.4</version>
		</dependency>

		<dependency>
			<groupId>commons-chain</groupId>
			<artifactId>commons-chain</artifactId>
			<version>1.2</version>
		</dependency>

		<dependency>
			<groupId>commons-cli</groupId>
			<artifactId>commons-cli</artifactId>
			<version>1.2</version>
		</dependency>

		<dependency>
			<groupId>commons-codec</groupId>
			<artifactId>commons-codec</artifactId>
			<version>1.8</version>
		</dependency>

		<dependency>
			<groupId>commons-collections</groupId>
			<artifactId>commons-collections</artifactId>
			<version>3.2.1</version>
		</dependency>

		<dependency>
			<groupId>commons-dbcp</groupId>
			<artifactId>commons-dbcp</artifactId>
			<version>1.4</version>
		</dependency>

		<dependency>
			<groupId>org.apache.commons</groupId>
			<artifactId>commons-digester3</artifactId>
			<version>3.2</version>
		</dependency>

		<dependency>
			<groupId>commons-discovery</groupId>
			<artifactId>commons-discovery</artifactId>
			<version>0.5</version>
		</dependency>

		<dependency>
			<groupId>commons-io</groupId>
			<artifactId>commons-io</artifactId>
			<version>2.4</version>
		</dependency>

		<dependency>
			<groupId>commons-jexl</groupId>
			<artifactId>commons-jexl</artifactId>
			<version>1.1</version>
		</dependency>

		<dependency>
			<groupId>commons-net</groupId>
			<artifactId>commons-net</artifactId>
			<version>3.3</version>
		</dependency>

		<dependency>
			<groupId>commons-pool</groupId>
			<artifactId>commons-pool</artifactId>
			<version>1.6</version>
		</dependency>

		<dependency>
			<groupId>commons-validator</groupId>
			<artifactId>commons-validator</artifactId>
			<version>1.4.0</version>
		</dependency>

		<dependency>
			<groupId>commons-dbutils</groupId>
			<artifactId>commons-dbutils</artifactId>
			<version>1.5</version>
		</dependency>

		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-beans</artifactId>
			<version>3.2.5.RELEASE</version>
		</dependency>

		<dependency>
			<groupId>org.acegisecurity</groupId>
			<artifactId>acegi-security</artifactId>
			<version>1.0.7</version>
		</dependency>

		<dependency>
			<groupId>cglib</groupId>
			<artifactId>cglib</artifactId>
			<version>2.2.2</version>
		</dependency>

		<dependency>
			<groupId>cglib</groupId>
			<artifactId>cglib-nodep</artifactId>
			<version>2.2.2</version>
		</dependency>

		<dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjweaver</artifactId>
			<version>1.7.4</version>
		</dependency>

		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jstl</artifactId>
			<version>1.2</version>
		</dependency>

		<dependency>
			<groupId>taglibs</groupId>
			<artifactId>standard</artifactId>
			<version>1.1.2</version>
		</dependency>

		<dependency>
			<groupId>org.apache.cxf</groupId>
			<artifactId>cxf-rt-core</artifactId>
			<version>2.7.8</version>
		</dependency>

		<dependency>
			<groupId>org.apache.cxf</groupId>
			<artifactId>cxf-rt-frontend-jaxrs</artifactId>
			<version>2.7.8</version>
		</dependency>

		<dependency>
			<groupId>org.apache.cxf</groupId>
			<artifactId>cxf-rt-bindings-soap</artifactId>
			<version>2.7.8</version>
		</dependency>

		<dependency>
			<groupId>org.apache.cxf</groupId>
			<artifactId>cxf-rt-frontend-jaxws</artifactId>
			<version>2.7.8</version>
		</dependency>

		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>druid</artifactId>
			<version>1.0.9</version>
		</dependency>


		<dependency>
			<groupId>p6spy</groupId>
			<artifactId>p6spy</artifactId>
			<version>1.3</version>
		</dependency>



		<dependency>
			<groupId>org.apache.camel</groupId>
			<artifactId>camel-jackson</artifactId>
			<version>2.9.2</version>
		</dependency>


		<dependency>
			<groupId>org.springframework.data</groupId>
			<artifactId>spring-data-redis</artifactId>
			<version>1.1.0.RELEASE</version>
		</dependency>

		<dependency>
			<groupId>redis.clients</groupId>
			<artifactId>jedis</artifactId>
			<version>2.1.0</version>
		</dependency>
		
		<dependency>
			<groupId>org.freemarker</groupId>
			<artifactId>freemarker</artifactId>
			<version>2.3.23</version>
		</dependency>
		
		<dependency>
    <groupId>javax.xml.rpc</groupId>
    <artifactId>javax.xml.rpc-api</artifactId>
    <version>1.1.1</version>
</dependency>

		 <dependency>
			<groupId>org.springframework.session</groupId>
			<artifactId>spring-session</artifactId>
			<!-- <version>1.2.0.RELEASE</version> -->
			 <version>1.3.1.RELEASE</version>
		</dependency>

		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
			<version>1.7.7</version>
		</dependency>
		<!-- 單點登入 -->
		<!-- <dependency>
			<groupId>org.eking</groupId>
			<artifactId>ssoclientagent</artifactId>
			<version>1.8</version>
		</dependency>  -->
		<dependency>
			<groupId>commons-logging</groupId>
			<artifactId>commons-logging</artifactId>
			<version>1.1.3</version>
		</dependency>
		<dependency>
			<groupId>com.belerweb</groupId>
			<artifactId>pinyin4j</artifactId>
			<version>2.5.0</version>
		</dependency>
		<dependency>
			<groupId>com.thoughtworks.xstream</groupId>
			<artifactId>xstream</artifactId>
			<version>1.4.7</version>
		</dependency>
		
    <dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper</artifactId>
    <version>5.0.1</version>
 </dependency>
    <dependency>
    	<groupId>com.fasterxml.jackson.core</groupId>
    	<artifactId>jackson-annotations</artifactId>
    	<version>2.7.0</version>
    </dependency>
    <dependency>
    	<groupId>com.fasterxml.jackson.core</groupId>
    	<artifactId>jackson-core</artifactId>
    	<version>2.7.2</version>
    </dependency>
    <dependency>
    	<groupId>com.fasterxml.jackson.module</groupId>
    	<artifactId>jackson-module-jaxb-annotations</artifactId>
    	<version>2.7.2</version>
    </dependency>
    
    <!-- https://mvnrepository.com/artifact/org.apache.axis/axis -->
<dependency>
    <groupId>org.apache.axis</groupId>
    <artifactId>axis</artifactId>
    <version>1.4</version>
</dependency>
    
    
  </dependencies>
  <build>
    <finalName>userSystem</finalName>
    <plugins>
       <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-compiler-plugin</artifactId>
              <configuration>
                     <source>1.7</source>
                     <target>1.7</target>
              </configuration>
       </plugin>
    </plugins>
  </build>
</project>

儲存好pom.xml檔案後,maven會幫助我們下載所需要的jar包;

2.2 配置前端控制器DispatcherServlet:Spring MVC 提供一個名為org.springframework.web.servlet.DispatchServlet的Servlet充當前端控制器,所有的請求都由這個前端控制器來分派請求;DispatcherServlet是一個Servlet,所以使用時需要配置到Web應用部署描述符web.xml檔案中:

關鍵程式碼如下:

 <servlet>
    <!-- Servlet 名稱 -->
    <servlet-name>springmvc</servlet-name>
    <!-- Servlet 對應的java類 -->
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <!-- Servlet 的引數資訊,引數值為Spring MVC配置檔案路徑,預設會找/WEB-INF/[spring-name]-servlet.xml檔案-->
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:mvc/springmvc.xml</param-value>
    </init-param>
    <!-- 在Web應用啟動時立即載入Servlet -->
    <load-on-startup>1</load-on-startup>
  </servlet>
<!-- Servlet 對映宣告 -->
  <servlet-mapping>
    <servlet-name>springmvc</servlet-name>
<!-- 監聽當前域.do的所以請求 -->
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>

在web.xml檔案中,除了配置前端控制器,還需要配置工程編碼等資訊,完整配置資訊如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
  <display-name>UserSystem</display-name>
  <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>
    <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
  </filter>
  <filter-mapping>
    <filter-name>CharacterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  <filter-mapping>
    <filter-name>CharacterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  <welcome-file-list>
    <welcome-file>/WEB-INF/index.html</welcome-file>
    <welcome-file>/WEB-INF/index.htm</welcome-file>
    <welcome-file>/WEB-INF/index.jsp</welcome-file>
  </welcome-file-list>
  <session-config>
    <session-timeout>30</session-timeout>
  </session-config>
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:spring/applicationContext.xml</param-value>
  </context-param>
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:mvc/springmvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
</web-app>

2.4 Spring MVC配置:配置Handle、處理器對映器,處理器介面卡以及檢視解析器

<?xml version="1.0" encoding="UTF-8"?>
<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="http://www.springframework.org/schema/beans"
    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/context   
    http://www.springframework.org/schema/context/spring-context-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/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd">
    
     <!--  自動掃描包,SpringMVC 會將該包下用@Controller註解的類註冊為spring的控制器 -->
    <context:component-scan base-package="org.aaron"></context:component-scan>
	
	<!-- 簡化SpringMVC配置,自動註冊處理器對映器和處理器介面卡兩個bean -->
	<mvc:annotation-driven></mvc:annotation-driven>
	
	<!-- FreeMarker 檢視解析器-->
    <bean id="freemarkResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
       <property name="contentType" value="text/html;charset=UTF-8"/>
       <property name="cache" value="true" />
		<property name="prefix" value="/freemarker/" />
		<property name="suffix" value=".html" />
    </bean>
	
</beans>

2.5 spring整合MyBatis:applicationContext.xml

<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
		http://www.springframework.org/schema/beans/spring-beans-3.2.xsd 
		http://www.springframework.org/schema/mvc 
		http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd 
		http://www.springframework.org/schema/context 
		http://www.springframework.org/schema/context/spring-context-3.2.xsd 
		http://www.springframework.org/schema/aop 
		http://www.springframework.org/schema/aop/spring-aop-3.2.xsd 
		http://www.springframework.org/schema/tx 
		http://www.springframework.org/schema/tx/spring-tx-3.2.xsd ">
<!-- 載入配置檔案 -->
<context:property-placeholder location="classpath:properties/jdbc.properties"/>
<!-- 資料庫連線池 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
       <property name="driverClassName" value="${jdbc.driver}"/>
		<property name="url" value="${jdbc.url}"/>
		<property name="username" value="${jdbc.username}"/>
		<property name="password" value="${jdbc.password}"/>
		<property name="maxActive" value="30"/>
		<property name="maxIdle" value="5"/>
</bean>	

<!-- 讓spring管理sqlsessionfactory 使用mybatis和spring整合包中的 -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<!-- 資料庫連線池 -->
		<property name="dataSource" ref="dataSource" />
		<!-- 載入mybatis的全域性配置檔案 -->
		<property name="configLocation" value="classpath:mybatis/mybatis-config.xml" />
        <property name="mapperLocations">  
            <list>  
                <value>classpath*:org/**/mappers/*Mapper.xml</value>  
            </list>
        </property>

	</bean>
			<!-- 事務管理器 -->
			<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="save*" propagation="REQUIRED"/>
		    <tx:method name="insert*" propagation="REQUIRED"/>
		    <tx:method name="delete*" propagation="REQUIRED"/>
		    <tx:method name="update*" propagation="REQUIRED"/>
		    <tx:method name="find*" propagation="SUPPORTS" read-only="true"/>
		    <tx:method name="get*" propagation="SUPPORTS" read-only="true"/>
		  </tx:attributes>
		</tx:advice>
		
		<!-- 切面 -->
		<aop:config>
		  <aop:advisor advice-ref="txAdvice"
		  pointcut="execution(* org..service.imp.*.*(..))"/>
		</aop:config>
	
</beans>

jdbc.properties(MySQL)

jdbc.driver = com.mysql.jdbc.Driver
jdbc.url = jdbc:mysql://資料庫IP:埠/資料庫名?characterEncoding=utf-8
jdbc.username = 使用者名稱
jdbc.password = 密碼

2.6 MyBatis配置:mybatis-config.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>
	
	<!-- 定義別名 減少類完全限定名的冗餘-->
	<typeAliases>
	    <package name="org.ssm"/>
	</typeAliases>

</configuration>

3.日誌資訊:log4j

3.1 log4j.properties

#將Mybatis log4j執行級別調到DEBUG可以在控制檯打印出Mybatis執行的sql語句  
log4j.rootLogger=DEBUG,Console
### 把日誌資訊輸出到控制檯 ###  
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= %5p [%t] - %m%n
  
###顯示SQL語句部分  
log4j.logger.com.mybatis=DEBUG  
log4j.logger.com.mybatis.common.jdbc.SimpleDataSource=DEBUG  
log4j.logger.com.mybatis.common.jdbc.ScriptRunner=DEBUG  
log4j.logger.com.mybatis.sqlmap.engine.impl.SqlMapClientDelegate=DEBUG  
log4j.logger.java.sql.Connection=DEBUG  
log4j.logger.java.sql.Statement=DEBUG  
log4j.logger.java.sql.PreparedStatement=DEBUG

3.2 若log4j檔案不在/WEB-INF/資料夾下,需要在web.xml中進行配置:

<!-- 載入log4j配置檔案 -->
	<context-param>
		<param-name>log4jConfigLocation</param-name>
		<param-value>classpath:properties/log4j.properties</param-value>
	</context-param>
	<listener>
		<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
	</listener> 

4.應用例項:使用者登入

4.1 建立使用者類SysUser.java和SysUserMapper.java

package org.ssm.sysMgr.sysUser.entity;

import java.util.Date;
import java.util.List;

import org.ssm.sysMgr.sysRole.entity.SysRole;
import org.apache.ibatis.type.Alias;

@Alias("SysUser")
public class SysUser {
	
	/**
	 * 使用者編號
	 */
	private String uuid;

	/**
	 * 使用者名稱稱
	 */
	private String userName;
	
	/**
	 * 使用者密碼
	 */
	private String password;
	
	/**
	 * 使用者中文名
	 */
	private String userCnName;
	
	/**
	 * 身份證
	 */
	private String idCard;
	
	/**
	 * 聯絡方式
	 */
	private String phone;
	
	
	/**
	 * 郵箱
	 */
	private String email;
	
	/**
	 * 頭像路徑
	 */
	private String imageUrl;
	
	/**
	 * 家庭住址
	 */
	private String address;
	
	/**
	 * 狀態
	 */
	private int status;
	
	/**
	 * 建立時間
	 */
	private Date createTime;
	
	private List<SysRole> roles;

	public String getUuid() {
		return uuid;
	}

	public void setUuid(String uuid) {
		this.uuid = uuid;
	}

	public String getUserName() {
		return userName;
	}

	public void setUserName(String userName) {
		this.userName = userName;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public String getUserCnName() {
		return userCnName;
	}

	public void setUserCnName(String userCnName) {
		this.userCnName = userCnName;
	}

	public String getIdCard() {
		return idCard;
	}

	public void setIdCard(String idCard) {
		this.idCard = idCard;
	}

	public String getPhone() {
		return phone;
	}

	public void setPhone(String phone) {
		this.phone = phone;
	}

	public String getEmail() {
		return email;
	}

	public void setEmail(String email) {
		this.email = email;
	}

	public String getImageUrl() {
		return imageUrl;
	}

	public void setImageUrl(String imageUrl) {
		this.imageUrl = imageUrl;
	}

	public String getAddress() {
		return address;
	}

	public void setAddress(String address) {
		this.address = address;
	}

	public int getStatus() {
		return status;
	}

	public void setStatus(int status) {
		this.status = status;
	}

	public Date getCreateTime() {
		return createTime;
	}

	public void setCreateTime(Date createTime) {
		this.createTime = createTime;
	}

	
	public List<SysRole> getRoles() {
		return roles;
	}

	public void setRoles(List<SysRole> roles) {
		this.roles = roles;
	}

	@Override
	public String toString() {
		return "SysUser [uuid=" + uuid + ", userName=" + userName + ", password=" + password + ", userCnName="
				+ userCnName + ", idCard=" + idCard + ", phone=" + phone + ", email=" + email + ", imageUrl=" + imageUrl
				+ ", address=" + address + ", status=" + status + ", createTime=" + createTime + "]";
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((address == null) ? 0 : address.hashCode());
		result = prime * result + ((createTime == null) ? 0 : createTime.hashCode());
		result = prime * result + ((email == null) ? 0 : email.hashCode());
		result = prime * result + ((idCard == null) ? 0 : idCard.hashCode());
		result = prime * result + ((imageUrl == null) ? 0 : imageUrl.hashCode());
		result = prime * result + ((password == null) ? 0 : password.hashCode());
		result = prime * result + ((phone == null) ? 0 : phone.hashCode());
		result = prime * result + status;
		result = prime * result + ((userCnName == null) ? 0 : userCnName.hashCode());
		result = prime * result + ((userName == null) ? 0 : userName.hashCode());
		result = prime * result + ((uuid == null) ? 0 : uuid.hashCode());
		return result;
	}

	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		SysUser other = (SysUser) obj;
		if (address == null) {
			if (other.address != null)
				return false;
		} else if (!address.equals(other.address))
			return false;
		if (createTime == null) {
			if (other.createTime != null)
				return false;
		} else if (!createTime.equals(other.createTime))
			return false;
		if (email == null) {
			if (other.email != null)
				return false;
		} else if (!email.equals(other.email))
			return false;
		if (idCard == null) {
			if (other.idCard != null)
				return false;
		} else if (!idCard.equals(other.idCard))
			return false;
		if (imageUrl == null) {
			if (other.imageUrl != null)
				return false;
		} else if (!imageUrl.equals(other.imageUrl))
			return false;
		if (password == null) {
			if (other.password != null)
				return false;
		} else if (!password.equals(other.password))
			return false;
		if (phone == null) {
			if (other.phone != null)
				return false;
		} else if (!phone.equals(other.phone))
			return false;
		if (status != other.status)
			return false;
		if (userCnName == null) {
			if (other.userCnName != null)
				return false;
		} else if (!userCnName.equals(other.userCnName))
			return false;
		if (userName == null) {
			if (other.userName != null)
				return false;
		} else if (!userName.equals(other.userName))
			return false;
		if (uuid == null) {
			if (other.uuid != null)
				return false;
		} else if (!uuid.equals(other.uuid))
			return false;
		return true;
	}
	
	
}
package org.ssm.sysMgr.sysUser;

import java.util.List;

import org.ssm.sysMgr.sysUser.SysUser;

public interface SysUserMapper {

    SysUser getByUserName(String userName);
}

4.2 SysUserMapper.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">
<mapper namespace="org.ssm.sysMgr.sysUser.mappers.SysUserMapper">

	<!-- 1、配置返回結果Map和引數Map -->

	<resultMap type="SysUser" id="baseSysUserResultMap">
		<id property="uuid" column="UUID"/>
		<result property="userName" column="USER_NAME"/>
		<result property="password" column="PASSWORD"/>
		<result property="userCnName" column="USER_CN_NAME"/>
		<result property="idCard" column="IDCARD"/>
		<result property="phone" column="PHONE"/>
		<result property="email" column="EMAIL"/>
		<result property="imageUrl" column="IMAGE_URL"/>
		<result property="address" column="ADDRESS"/>
		<result property="status" column="STATUS"/>
		<result property="createTime" column="CREATE_TIME"/>
	</resultMap>

	<resultMap type="SysUser" id="sysUserResultMap" extends="baseSysUserResultMap">
	   <collection property="roles" column="UUID" ofType="SysUser" 
	      select = "org.aaron.sysMgr.sysRole.mappers.SysRoleMapper.getRolesByUserId"></collection>
	</resultMap>

	<!-- <parameter property="deptId" javaType="string" jdbcType="VARCHAR"/> -->
	<parameterMap type="SysUser" id="sysUserParameterMap">
		<parameter property="uuid" javaType="string" jdbcType="VARCHAR"/>
		<parameter property="userName" javaType="string" jdbcType="VARCHAR"/>
		<parameter property="password" javaType="string" jdbcType="VARCHAR"/>
		<parameter property="userCnName" javaType="string" jdbcType="VARCHAR"/>
		<parameter property="idCard" javaType="string" jdbcType="VARCHAR"/>
		<parameter property="phone" javaType="string" jdbcType="VARCHAR"/>
		<parameter property="email" javaType="string" jdbcType="VARCHAR"/>
		<parameter property="imageUrl" javaType="string" jdbcType="VARCHAR"/>
		<parameter property="address" javaType="string" jdbcType="VARCHAR"/>
		<parameter property="status" javaType="integer" jdbcType="INTEGER"/>
		<parameter property="createTime" javaType="date" jdbcType="TIMESTAMP"/>
	</parameterMap>

    <sql id="condition">
    <where>
	    <if test="uuid != null and uuid !='' ">
	    UUID = #{uuid}
	    </if>
        <if test="userName != null and userName !='' ">
	    AND USER_NAME = #{userName}
	    </if>
	    <if test="password != null and password !='' ">
	    AND PASSWORD = #{password}
	    </if>
	    <if test="userCnName != null and userCnName !='' ">
	    AND USER_CN_NAME = #{userCnName}
	    </if>
	    <if test="idCard != null and idCard !='' ">
	    AND IDCARD = #{idCard}
	    </if>
	    <if test="phone != null and phone !='' ">
	    AND PHONE = #{phone}
	    </if>
	    <if test="email != null and email !='' ">
	    AND EMAIL = #{email}
	    </if>
	    <if test="imageUrl != null and imageUrl !='' ">
	    AND IMAGE_URL = #{imageUrl}
	    </if>
	    <if test="address != null and address !='' ">
	    AND ADDRESS = #{address}
	    </if>
	    <if test="status != null and status !='' ">
	    AND STATUS = #{status}
	    </if>
    
    </where>
    </sql>
    
    <select id="getByUserName" parameterType="string" resultMap="sysUserResultMap">
       SELECT * FROM sys_user T
	    <where>
		    <if test="_parameter  !=null and _parameter  !='' ">
		    USER_NAME = #{value}
		    </if>
	    </where>
    </select>

</mapper>

4.3 SysUserService介面及其實現類SysUserServiceImpl


package org.ssm.sysMgr.sysUser.service;

import java.util.List;

import org.ssm.sysMgr.sysUser.entity.SysUser;

public interface SysUserService {
	public SysUser getByUserName(String userName);
}

package org.ssm.sysMgr.sysUser.service.impl;

import java.util.List;

import org.ssm.framework.dao.SqlSessionTemplate;
import org.ssm.framework.utils.Pager;
import org.ssm.sysMgr.sysUser.entity.SysUser;
import org.ssm.sysMgr.sysUser.service.SysUserService;
import org.apache.ibatis.session.RowBounds;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

@Service("sysUserService")
@SuppressWarnings({ "rawtypes", "unchecked" })
public class SysUserServiceImpl implements SysUserService {

        @Autowired
        private SysUserMapper sysUserMapper;

    public SysUserMapper getSysUserMapper() {
        return sysUserMapper;
    }
    @Autowired
    public void setSysUserMapper(SysUserMapper sysUserMapper) {
        this.sysUserMapper= sysUserMapper;
    }

    @Override
    public SysUser getByUserName(String userName) {
        return SysUserMapper.getByUserName(userName);
    }

}

4.5 控制器SysUserController


package org.ssm.sysMgr.sysUser.web;


import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
@RequestMapping("/sysUser")
public class SysUserController {
	
	@Resource(name = "sysUserService")
	private SysUserService sysUserService;
	
	@RequestMapping("/getUsers")
	public String  getByUserName(HttpServletRequest request ,HttpServletResponse response,String userName) {
		try {
		    SysUser result= sysUserService.getByUserName(userName);
		    String result = toJson(obj);
		    response.setContentType("text/json; charset=utf-8");
		    response.setHeader("Cache-Control", "no-cache"); // 取消瀏覽器快取
		    PrintWriter out = response.getWriter();
		    out.print(result);
		    //System.out.println(result);
		    out.flush();
		    out.close();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return null;
	}
	
}

5 資料庫MySQL

6 在瀏覽器輸入介面訪問地址:http://localhost:8080/專案名/控制器名/方法名.do?引數=value

例如:http://localhost:8080/UserSystem/sysUser/lgetByUserName.do?userName=admin