基於Maven工具搭建Spring+SpringMVC++MyBatis(ssm)框架步驟
目錄
1.使用Ecplise建立Maven工程:
1.1 File -> New -> Other,在New視窗中選擇 Maven -> Maven Project;點選next,如下圖
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