SSM框架快速整合实例——学生查询

<h1 id="一、快速准备">一、快速准备

SSM 框架即 Spring 框架、SpringMVC 框架、MyBatis 框架,关于这几个框架的基础和入门程序,我前面已经写过几篇文章作为基础和入门介绍了。这里再简单的介绍一下:

1.Spring

Spring 框架是 Java 应用最广的框架,它的成功来源于理念,而不是技术本身,它的理念包括 IoC (控制反转) 和 A面向切面编程)。Spring框架是个轻量级的Java EE框架,所谓轻量级,是指不依赖于容器就能运行的。简单来说,Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。

作用于web层,相当于controller,与struts中的action一样,都是用来处理用户请求的。同时,相比于struts2来说,更加细粒度,它是基于方法层面的,而struts是基于类层面的。Spring MVC 分离了控制器、模型对象、分派器以及处理程序对象的角色,这种分离让它们更容易进行定制。

MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。MyBatis 是一款优秀的持久层框架,它支持定制化 sql、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。

如果已经陆续学习过 SSM 框架相关知识的,可以忽略掉这一部分,直接看下面的内容

快速创建项目">二、快速创建项目

鉴于 jar 包依赖于管理的方便,我们使用 Maven 进行项目的管理和开发,所以这一步我们使用 IDEA 快速创建一个 Maven 项目,关于如何使用 IDEA 快速创建 Maven 项目,这里就不进行过多赘述了,大家可以参考下面这篇文章

Maven 项目创建完成后,快速打开并配置 pom.xml 文件,具体配置如下:

4.0.0 com.ssm.example SsmDemo war 0.0.1-SNAPSHOT SSMDemo Maven Webapp http://maven.apache.org
    <!-- 配置 SpringMVC 依赖包 -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>4.3.7.RELEASE</version>
    </dependency>

    <!-- Spring JDBC 依赖包-->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>4.3.7.RELEASE</version>
    </dependency>

    <!-- Spring AOP 依赖包-->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aspects</artifactId>
        <version>4.3.7.RELEASE</version>
    </dependency>

    <!--MyBatis 依赖包-->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.4.2</version>
    </dependency>

    <!-- Spring 整合 MyBatis 依赖包 -->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis-spring</artifactId>
        <version>1.3.1</version>
    </dependency>

    <!-- MySQL 驱动依赖包 -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.41</version>
    </dependency>

    <!-- C3P0 数据源依赖包 -->
    <dependency>
        <groupId>c3p0</groupId>
        <artifactId>c3p0</artifactId>
        <version>0.9.1</version>
    </dependency>

    <!-- jstl 依赖包 -->
    <dependency>
        <groupId>jstl</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>

    <!-- ServletAPI 依赖包-->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.0.1</version>
        <scope>provided</scope>
    </dependency>

    <!-- junit 测试依赖包 -->
  <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
  </dependency>
<!-- 如果不添加此节点,mybatis 的 mapper.xml 文件都会被漏掉 -->
<build>
    <resources>
        <resource>
            <directory>src/main/java</directory>
            <includes>
                <include>**/*.properties</include>
                <include>**/*.xml</include>
            </includes>
            <filtering>false</filtering>
        </resource>
    </resources>
</build>

打开 web.xml 文件,快速配置开启 Spring 、SpringMVC 编码过滤以及静态资源加载,具体配置代码如下:

Archetype Created Web Application contextConfigLocation classpath:applicationContext.xml org.springframework.web.context.ContextLoaderListener mvc-dispatcher org.springframework.web.servlet.DispatcherServlet contextConfigLocation classpath:springmvc.xml mvc-dispatcher / CharacterEncodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding utf-8 forceRequestEncoding true forceResponseEncoding true CharacterEncodingFilter /* default *.js default *.css

在 resources 文件夹下新建 applicationContext.xml 文件,配置 MyBatis 和数据库相关信息,具体代码配置如下:

<!-- 加载资源文件 --> <context:property-placeholder location="classpath:db.properties"/&gt; <!-- 配置 C3P0 数据源 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"&gt; <property name="user" value="${jdbc.user}"&gt;</property> <property name="password" value="${jdbc.password}"&gt;</property> <property name="driverClass" value="${jdbc.driverClass}"&gt;</property> <property name="jdbcUrl" value="${jdbc.jdbcUrl}"&gt;</property> <property name="initialPoolSize" value="5"&gt;</property> <property name="maxPoolSize" value="10"&gt;</property> </bean> <!-- 配置 MyBatis SqlSessionFactory --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"&gt; <!-- 指定 MyBatis 数据源 --> <property name="dataSource" ref="dataSource"/&gt; <!-- 指定 MyBatis mapper 映射文件位置 --> <property name="mapperLocations" value="classpath:com/ssm/example/dao/*.xml"/&gt; <!-- 指定 MyBatis 全局配置文件的位置 --> <property name="configLocation" value="classpath:mybatis-config.xml"&gt;</property> </bean> <!-- 扫描 MyBatis 的 mapper 接口 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"&gt; <!--扫描所有 dao 接口,加入到 IOC 容器中 --> <property name="basePackage" value="com.ssm.example.dao"/&gt; </bean> <!-- 配置事务管理器 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"&gt; <!-- 指定数据源 --> <property name="dataSource" ref="dataSource"&gt;</property> </bean> <!-- 配置事务增强 --> <tx:advice id="txAdvice" transaction-manager="transactionManager"&gt; <tx:attributes> <!-- 配置所有方法都是事务方法 --> <tx:method name="*"/&gt; <tx:method name="get*" read-only="true"/&gt; </tx:attributes> </tx:advice> <!-- 开启基于注解的事务 --> <aop:config> <!-- 切入点表达式 --> <aop:pointcut expression="execution(* com.ssm.example.service.impl.*.*(..))" id="txPoint"/&gt; <!-- 配置事务增强 --> <aop:advisor advice-ref="txAdvice" pointcut-ref="txPoint"/&gt; </aop:config>

在 resources 文件夹下新建 db.properties 文件,配置数据库连接相关信息,具体代码配置如下:

在 resources 文件夹下新建 mybatis-config.xml 文件,配置相关的数据库操作辅助信息,具体代码配置如下:

<typeAliases>
    <!-- 指定一个包名,MyBatis会在包名下搜索需要的JavaBean-->
    <package name="com.ssm.example.entity"/&gt;
</typeAliases>

在 resources 文件夹下新建 springmvc.xml 文件,配置相关的数据库操作辅助信息,具体代码配置如下:

<!-- 启用 SpringMVC 注解驱动 --> <mvc:annotation-driven /> <!-- 扫描业务代码 --> <context:component-scan base-package="com.ssm.example"&gt;</context:component-scan> <!-- 配置视图解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"&gt; <property name="prefix" value="/"&gt;</property> <property name="suffix" value=".jsp"&gt;</property> </bean>

新建 MySQL 数据库,快速新建数据表 ssm_example,具体建表代码如下:

INSERT INTO student VALUES (1,'孔乙己','男','kongyiji@163.com','13509856897','计算机1班');
INSERT INTO student VALUES (2,'阿强','女','aqiang@126.com','12345678909','软件工程');
INSERT INTO student VALUES (3,'阿福','afu@12345.com','13657898762','数学专业');
INSERT INTO student VALUES (4,'阿霞','12345@qq.com','12378645987','英语专业');
INSERT INTO student VALUES (5,'指南者','compassblog@gmail.com','13587690873','打杂搬砖专业');

SET FOREIGN_KEY_CHECKS = 1;

快速新建实体类 Student.java,具体代码如下:

public class Student {

private int id;
private String name;
private String gender;
private String email;
private String tel;
private String cla;

public int getId() {
    return id;
}
public void setId(int id) {
    this.id = id;
}
public String getName() {
    return name;
}
public void setName(String name) {
    this.name = name;
}
public String getGender() {
    return gender;
}
public void setGender(String gender) {
    this.gender = gender;
}
public String getEmail() {
    return email;
}
public void setEmail(String email) {
    this.email = email;
}
public String getTel() {
    return tel;
}
public void setTel(String tel) {
    this.tel = tel;
}
public String getCla() {
    return cla;
}
public void setCla(String cla) {
    this.cla = cla;
}

}

快速新建 StuentController.java 控制类,具体代码如下:

import java.util.List;

import com.ssm.example.entity.Student;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import com.ssm.example.service.StudentService;

@Controller
public class StudentController {

@Autowired
private StudentService studentService;

/**
 * 查找所有学生
 * @return
 */
@RequestMapping(value="/findAll")
public ModelAndView test(){
    List<Student> list = studentService.findAll();
    ModelAndView modelAndView = new ModelAndView();
    modelAndView.setViewName("index");
    modelAndView.addObject("list",list);
    return modelAndView;
}

}

快速新建 StudentService.java 接口,代码如下:

import java.util.List;

import com.ssm.example.entity.Student;

public interface StudentService {
public List findAll();
}

快速新建 StudentServiceImpl.java 类实现接口,具体代码如下:

import java.util.List;

import com.ssm.example.dao.StudentDAO;
import com.ssm.example.entity.Student;
import com.ssm.example.service.StudentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class StudentServiceImpl implements StudentService {

@Autowired
private StudentDAO studentDAO;

public List<Student> findAll() {
    // TODO Auto-generated method stub
    return studentDAO.findAll();
}

}

快速新建 dao 接口 StudentDAO.java,具体代码如下:

import java.util.List;

import com.ssm.example.entity.Student;

public interface StudentDAO {
public List findAll();
}

快速新建 dao 接口代理文件 StudentDAO.xml,具体代码如下:

<mapper namespace="com.ssm.example.dao.StudentDAO"&gt; <resultMap type="Student" id="studentMap"&gt; <id property="id" column="id"/&gt; <result property="name" column="name"/&gt; <result property="gender" column="gender"/&gt; <result property="email" column="email"/&gt; <result property="tel" column="tel"/&gt; <result property="cla" column="cla"/&gt; </resultMap> <select id="findAll" resultMap="studentMap"&gt; select * from student </select> </mapper>

快速新建访问页面 index.jsp,并且页面使用 bootstrap 框架作轻度渲染,具体代码如下:

<%@ page isELIgnored="false" %> <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> 学生列表


SSM 框架快速整合实例--学生查询


编号 姓名 性别 电子邮箱 联系电话 班级 操作 <td&gt; <button class="btn btn-primary btn-sm edit_btn"&gt; <span class="glyphicon glyphicon-pencil"&gt;编辑</span> </button>   <button class="btn btn-danger btn-sm delete_btn"&gt; <span class="glyphicon glyphicon-trash"&gt;删除</span> </button> </td&gt; </tr&gt; </c:forEach> </tbody> </table&gt; </div> </div> </div>

到这里,SSM 框架整合程序就已经书写完毕,部署并启动 Tomcat 服务器,然后到浏览器地址栏测试,结果如下:

项目源码地址:获取源码

相关文章

ArrayList简介:ArrayList 的底层是数组队列,相当于动态数组。与 Java 中的数组相比,它的容量能动态增...
一、进程与线程 进程:是代码在数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位。 线程...
本文为博客园作者所写:&#160;一寸HUI,个人博客地址:https://www.cnblogs.com/zsql/ 简单的一个类...
#############java面向对象详解#############1、面向对象基本概念2、类与对象3、类和对象的定义格式4、...
一、什么是异常? 异常就是有异于常态,和正常情况不一样,有错误出错。在java中,阻止当前方法或作用域...
Collection接口 Collection接口 Collection接口 Collection是最基本的集合接口,一个Collection代表一组...