使用idea创建一个基于maven的ssm项目,完成对学生的查询功能。
1.创建maven框架
1.1创建一个父项目ssm
1.2 在父项目下创建common模块
1.3 在父项目下创建dao模块
参考1.2
1.4 在父项目下创建service模块
参考1.2
1.5 在父项目下创建action模块
参考1.2,模板选择webapp
1.6添加依赖关系
1.6.1在父项目中管理所有jar包的版本,ssm项目所需的jar包如下:
完整的父项目pom文件
<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.nuaa</groupId>
<artifactId>ssm</artifactId>
<packaging>pom</packaging>
<version>1.0-SNAPSHOT</version>
<modules>
<module>common</module>
<module>dao</module>
<module>service</module>
<module>action</module>
</modules>
<!-- 版本控制 -->
<properties>
<spring-version>4.3.18.RELEASE</spring-version>
<junit-version>4.11</junit-version>
<servlet-api>3.1.0</servlet-api>
<jsp-api.version>2.2.1</jsp-api.version>
<jstl-version>1.2.1</jstl-version>
<taglibs-version>1.2.5</taglibs-version>
<mysql-version>5.1.38</mysql-version>
<mybatis-version>3.4.5</mybatis-version>
<mybatis-spring-version>1.3.2</mybatis-spring-version>
<log4j-version>1.2.17</log4j-version>
<druid-version>1.1.10</druid-version>
</properties>
<!-- 依赖关系 -->
<dependencyManagement>
<dependencies>
<!-- spring支持 start -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</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-jdbc</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-context</artifactId>
<version>${spring-version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring-version}</version>
</dependency>
<!-- spring支持 end -->
<!-- javaee支持 start -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>${servlet-api}</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp.jstl</groupId>
<artifactId>javax.servlet.jsp.jstl-api</artifactId>
<version>${jstl-version}</version>
</dependency>
<dependency>
<groupId>org.apache.taglibs</groupId>
<artifactId>taglibs-standard-impl</artifactId>
<version>${taglibs-version}</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>${jsp-api.version}</version>
</dependency>
<!-- javaee支持 end -->
<!-- mysql和mybatis支持 start -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis-version}</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql-version}</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j-version}</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>${mybatis-spring-version}</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>${druid-version}</version>
</dependency>
<!-- mysql和mybatis支持 start -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit-version}</version>
</dependency>
</dependencies>
</dependencyManagement>
</project>
1.6.2在common模块中添加spring相关的jar包
common模块的pom文件
<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>ssm</artifactId>
<groupId>com.nuaa</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>common</artifactId>
<name>common</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
<!-- spring支持 start -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</dependency>
<!-- spring支持 end -->
</dependencies>
<build>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
<!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
<plugin>
<artifactId>maven-site-plugin</artifactId>
<version>3.7.1</version>
</plugin>
<plugin>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>3.0.0</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
1.6.3dao模块依赖common,并添加mysql和mybatis相关的jar包
dao模块的pom文件
<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>ssm</artifactId>
<groupId>com.nuaa</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>dao</artifactId>
<name>dao</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>com.nuaa</groupId>
<artifactId>common</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!-- mysql和mybatis支持 start -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>${mybatis-version}</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql-version}</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>${log4j-version}</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>${mybatis-spring-version}</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>${druid-version}</version>
</dependency>
<!-- mysql和mybatis支持 start -->
</dependencies>
<build>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
<!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
<plugin>
<artifactId>maven-site-plugin</artifactId>
<version>3.7.1</version>
</plugin>
<plugin>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>3.0.0</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
1.6.4service模块依赖dao模块
service模块的pom文件
<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>ssm</artifactId>
<groupId>com.nuaa</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>service</artifactId>
<name>service</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>com.nuaa</groupId>
<artifactId>dao</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
<build>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<!-- clean lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#clean_Lifecycle -->
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<!-- default lifecycle, jar packaging: see https://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_jar_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
</plugin>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
<!-- site lifecycle, see https://maven.apache.org/ref/current/maven-core/lifecycles.html#site_Lifecycle -->
<plugin>
<artifactId>maven-site-plugin</artifactId>
<version>3.7.1</version>
</plugin>
<plugin>
<artifactId>maven-project-info-reports-plugin</artifactId>
<version>3.0.0</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
1.6.5action模块依赖service模块,并添加javaee相关的jar包
action模块的pom文件
<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>ssm</artifactId>
<groupId>com.nuaa</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>action</artifactId>
<packaging>war</packaging>
<name>action Maven Webapp</name>
<!-- FIXME change it to the project's website -->
<url>http://www.example.com</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>com.nuaa</groupId>
<artifactId>service</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!-- javaee支持 start -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>${servlet-api}</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp.jstl</groupId>
<artifactId>javax.servlet.jsp.jstl-api</artifactId>
<version>${jstl-version}</version>
</dependency>
<dependency>
<groupId>org.apache.taglibs</groupId>
<artifactId>taglibs-standard-impl</artifactId>
<version>${taglibs-version}</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>${jsp-api.version}</version>
</dependency>
<!-- javaee支持 end -->
</dependencies>
<build>
<finalName>action</finalName>
<pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
<plugins>
<plugin>
<artifactId>maven-clean-plugin</artifactId>
<version>3.1.0</version>
</plugin>
<!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.2</version>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.1</version>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
</plugin>
<plugin>
<artifactId>maven-install-plugin</artifactId>
<version>2.5.2</version>
</plugin>
<plugin>
<artifactId>maven-deploy-plugin</artifactId>
<version>2.8.2</version>
</plugin>
</plugins>
</pluginManagement>
</build>
</project>
2.commom模块的完善
在/com/nuaa下创建entity包,并创建三个实体类;创建vo包,创建封装查询条件的vo类
course类:
package com.nuaa.entity;
import java.io.Serializable;
public class Course implements Serializable {
private static final long serialVersionUID = -6619865305715173837L;
private Integer cid;
private String cname;
private String cdesc;
private Integer state;
public Course() {
}
public Course(Integer cid) {
super();
this.cid = cid;
}
public Course(Integer cid, String cname) {
this.cid = cid;
this.cname = cname;
}
public Course(Integer cid, String cname, String cdesc, Integer state) {
super();
this.cid = cid;
this.cname = cname;
this.cdesc = cdesc;
this.state = state;
}
public Integer getCid() {
return cid;
}
public void setCid(Integer cid) {
this.cid = cid;
}
public String getCname() {
return cname;
}
public void setCname(String cname) {
this.cname = cname;
}
public String getCdesc() {
return cdesc;
}
public void setCdesc(String cdesc) {
this.cdesc = cdesc;
}
public Integer getState() {
return state;
}
public void setState(Integer state) {
this.state = state;
}
@Override
public String toString() {
return "Course [cid=" + cid + ", cname=" + cname + ", cdesc=" + cdesc + ", state=" + state + "]";
}
}
Grade类
package com.nuaa.entity;
import java.io.Serializable;
public class Grade implements Serializable {
private static final long serialVersionUID = -5912480482423594438L;
private Integer gid;
private String gname;
private String gdesc;
private Integer state;
private Course course;
public Course getCourse() {
return course;
}
public void setCourse(Course course) {
this.course = course;
}
public Grade() {
}
public Grade(Integer gid) {
super();
this.gid = gid;
}
public Grade(Integer gid, String gname) {
this.gid = gid;
this.gname = gname;
}
public Grade(Integer gid, String gname, String gdesc, Integer state) {
super();
this.gid = gid;
this.gname = gname;
this.gdesc = gdesc;
this.state = state;
}
public Grade(Integer gid, String gname, String gdesc, Integer state, Course course) {
super();
this.gid = gid;
this.gname = gname;
this.gdesc = gdesc;
this.state = state;
this.course = course;
}
public Integer getGid() {
return gid;
}
public void setGid(Integer gid) {
this.gid = gid;
}
public String getGname() {
return gname;
}
public void setGname(String gname) {
this.gname = gname;
}
public String getGdesc() {
return gdesc;
}
public void setGdesc(String gdesc) {
this.gdesc = gdesc;
}
public Integer getState() {
return state;
}
public void setState(Integer state) {
this.state = state;
}
@Override
public String toString() {
return "Grade [gid=" + gid + ", gname=" + gname + ", gdesc=" + gdesc + ", state=" + state + "]";
}
}
Student类
package com.nuaa.entity;
import java.io.Serializable;
import java.util.Date;
public class Student implements Serializable {
private static final long serialVersionUID = -4892754273912691589L;
private Integer sid;
private String username;
private String password;
private String name;
private String sex;
private int age;
private Grade grade;
private Course course;
private Date dateOfAdmission;
public Student() {
}
public Student(Integer sid, String username, String password, String name,String sex, int age, Grade grade, Course course, Date dateOfAdmission)
{
super();
this.sid = sid;
this.username = username;
this.password = password;
this.name = name;
this.sex = sex;
this.age = age;
this.grade = grade;
this.course = course;
this.dateOfAdmission = dateOfAdmission;
}
public Date getDateOfAdmission() {
return dateOfAdmission;
}
public void setDateOfAdmission(Date dateOfAdmission) {
this.dateOfAdmission = dateOfAdmission;
}
public Integer getSid() {
return sid;
}
public void setSid(Integer sid) {
this.sid = sid;
}
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 getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Grade getGrade() {
return grade;
}
public void setGrade(Grade grade) {
this.grade = grade;
}
public Course getCourse() {
return course;
}
public void setCourse(Course course) {
this.course = course;
}
@Override
public String toString() {
return "Student [sid=" + sid + ", username=" + username + ", password=" + password + ", name=" + name + ", sex="
+ sex + ", age=" + age + ", grade=" + grade + ", course=" + course + ", dateOfAdmission="
+ dateOfAdmission + "]";
}
}
QueryVo类:
package com.nuaa.vo;
import java.sql.Date;
/**
* 查询条件VO里面的字段(字段随便起) ---> 和学生管理页面的组合查询条件一致
*
*/
public class QueryVo
{
private String name;
private Integer minAge;
private Integer maxAge;
private String sex;
private Integer gid;
private Integer cid;
private Date startDate;
private Date endDate;
public QueryVo()
{
super();
}
public QueryVo(String name, Integer minAge, Integer maxAge, String sex, Integer gid, Integer cid, Date startDate, Date endDate)
{
super();
this.name = name;
this.minAge = minAge;
this.maxAge = maxAge;
this.sex = sex;
this.gid = gid;
this.cid = cid;
this.startDate = startDate;
this.endDate = endDate;
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public Integer getMinAge()
{
return minAge;
}
public void setMinAge(Integer minAge)
{
this.minAge = minAge;
}
public Integer getMaxAge()
{
return maxAge;
}
public void setMaxAge(Integer maxAge)
{
this.maxAge = maxAge;
}
public String getSex()
{
return sex;
}
public void setSex(String sex)
{
this.sex = sex;
}
public Integer getGid()
{
return gid;
}
public void setGid(Integer gid)
{
this.gid = gid;
}
public Integer getCid()
{
return cid;
}
public void setCid(Integer cid)
{
this.cid = cid;
}
public Date getStartDate() {
return startDate;
}
public void setStartDate(Date startDate) {
this.startDate = startDate;
}
public Date getEndDate() {
return endDate;
}
public void setEndDate(Date endDate) {
this.endDate = endDate;
}
}
3.dao模块的完善
创建resources文件夹
3.1创建student,course, grade表
create table grade -- 班级表
(
gid int auto_increment primary key,
gname varchar(20) not null unique,
gdesc varchar(500),
state int, -- 1表示启用、0表示被禁用
cid int -- 关联course表的外键
)engine=Innodb default charset=utf8;
create table course -- 课程表
(
cid int auto_increment primary key,
cname varchar(20) not null unique,
cdesc varchar(500),
state int -- 1表示启用、0表示被禁用
)engine=Innodb default charset=utf8;
create table student -- 学生表
(
sid int auto_increment primary key,
username varchar(10) not null unique,
password varchar(50),
name varchar(10),
sex varchar(6),
age int,
gid int, -- 关联grade表的外键
cid int, -- 关联course表的外键
date_of_admission date
)engine=Innodb default charset=utf8;
3.2在resources下添加log4j.properties日志配置文件
# Global logging configuration
log4j.rootLogger=ERROR, stdout
# MyBatis logging configuration...
log4j.logger.org.mybatis.example.BlogMapper=TRACE
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
3.3在resources下添加mybatis的全局配置文件mybatis-config.xml
与spring整合后mybatis-config.xml配置文件中只配置别名和其他全局设置
3.4编写dao接口和对应的mapper文件
<?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="com.nuaa.dao.StudentMapper">
<!--student表字段与student对象的映射关系-->
<resultMap id="studentMap" type="Student">
<id column="sid" property="sid"/>
<result column="username" property="username"/>
<result column="password" property="password"/>
<result column="name" property="name"/>
<result column="sex" property="sex"/>
<result column="age" property="age"/>
<result column="date_of_admission" property="dateOfAdmission"/>
<association property="grade" javaType="Grade">
<id column="gid" property="gid"/>
<result column="gname" property="gname"/>
</association>
<association property="course" javaType="Course">
<id column="cid" property="cid"/>
<result column="cname" property="cname"/>
</association>
</resultMap>
<select id="findStudent" resultMap="studentMap">
SELECT s.*, g.gname gname, c.cname cname
FROM student s
JOIN grade g
ON s.gid = g.gid
JOIN course c
ON s.cid = c.cid
</select>
</mapper>
为了让spring容器自动生成mapper接口的代理对象,需要将StudentMapper接口和StudentMapper.xml文件放入同一个包中,
由于maven默认不会编译处于非classpath下的xml文件,所以在dao的pom文件中加入如下配置:
3.5在resources下添加database.properties数据库配置文件
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/sms?useUnicode=true&characterEncoding=utf8
username=root
password=123
initialSize=30
maxActive=50
minIdle=5
maxIdle=15
maxWait=6000
3.6编写mybatis与spring整合配置文件spring-dao.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:database.properties" />
<!--配置数据源信息-->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="password" value="${jdbc.password}"/>
<property name="username" value="${jdbc.username}"/>
</bean>
<!--配置SqlSessionFactory-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!--mybatis的配置信息-->
<property name="configLocation" value="classpath:mybatis-config.xml"/>
<property name="dataSource" ref="dataSource"/>
</bean>
<!--自动扫描mapper接口和mapper.xml文件-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!--要扫描的包-->
<property name="basePackage" value="com.nuaa.dao."/>
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
</bean>
</beans>
4.service模块的完善
4.1编写IStudentService接口和StudentServiceImpl实现类
接口:
package com.nuaa.service;
import com.nuaa.entity.Student;
import java.util.List;
public interface IStudentService
{
public List<Student> findStudent() throws Exception;
}
实现类:
package com.nuaa.service.impl;
import com.nuaa.dao.StudentMapper;
import com.nuaa.entity.Student;
import com.nuaa.service.IStudentService;
import org.springframework.stereotype.Repository;
import javax.annotation.Resource;
import java.util.List;
@Repository
public class StudentServiceImpl implements IStudentService
{
@Resource
private StudentMapper studentMapper;
@Override
public List<Student> findStudent() throws Exception {
return studentMapper.findStudent();
}
}
4.2编写配置文件spring-service.xml
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd">
<context:component-scan base-package="com.nuaa.service"/>
</beans>
5.完善action模块
5.1编写Controller
package com.nuaa.controller;
import com.nuaa.entity.Student;
import com.nuaa.service.IStudentService;
import org.springframework.stereotype.Controller;
import org.springframework.web.servlet.ModelAndView;
import javax.annotation.Resource;
import java.util.List;
@Controller
public class StudentController
{
@Resource
private IStudentService studentService;
@RequestMapping("/studentList.action")
public ModelAndView findStiudent() throws Exception
{
ModelAndView modelAndView = new ModelAndView();
List<Student> studentList = studentService.findStudent();
modelAndView.addObject("studentList", studentList);
modelAndView.setViewName("/WEB-INF/studentList.jsp");
return modelAndView;
}
}
5.2编写jsp页面
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>查询学生列表</title>
</head>
<body>
<form action="${pageContext.request.contextPath }/item/queryItem.action" method="post">
查询条件:
<table width="100%" border=1>
<tr>
<td><input type="submit" value="查询"/></td>
</tr>
</table>
商品列表:
<table width="100%" border=1>
<tr>
<td>姓名</td>
<td>年龄</td>
<td>班级</td>
<td>课程</td>
<td>入学日期</td>
</tr>
<c:forEach items="${studentList }" var="student">
<tr>
<td>${student.username }</td>
<td>${student.age }</td>
<td>${student.grade.gname }</td>
<td>${student.course.cname }</td>
<td><fmt:formatDate value="${student.dateOfAdmission}" pattern="yyyy-MM-dd HH:mm:ss"/></td>
</tr>
</c:forEach>
</table>
</form>
</body>
</html>
5.3编写配置文件springmvc.xml
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd">
<!-- 配置handler -->
<context:component-scan base-package="com.nuaa.controller"/>
<!--配置注解的映射器和适配器-->
<mvc:annotation-driven></mvc:annotation-driven>
<!-- 配置视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"/>
</beans>
5.4编写配置文件web.xml
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1"
metadata-complete="true">
<!--配置监听器-->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:spring-dao.xml
classpath:spring-service.xml
</param-value>
</context-param>
<!-- 配置前端控制器 -->
<servlet>
<servlet-name>ssmDemo</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--mvc配置文件-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>ssmDemo</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
<display-name>firstSpring</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
完成后的项目结构如下:
6.部署到tomcat
部署完毕,测试ok。