目录
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