SSM框架整合(十五)上

简介: SSM框架整合(十五)

一. SSM框架的整合

SSM 框架, 指的是 Spring+SpringMVC+MyBatis 框架。


其中, Spring的知识可以 参考老蝴蝶以前的文章,Spring的"两个蝴蝶飞,你好"的简单开发(一)


MyBatis也可以参考老蝴蝶以前的文章: MyBatis的简单了解(一)


SSM的整合,是在以前的基础之上,进行整合的,不对以前的知识进行讲解。


SSM的整合,也是跟以前SSH的整合一样,两两整合。 但SpringMVC是Spring框架的一部分,所以SpringMVC与Spring框架不需要整合。


所以,直接 Spring与MyBatis进行整合即可。


整合SSM 实现 REST 风格的CRUD操作。


二. SSM框架整合的详细步骤


二.一 新建一个动态的Web项目,名称为SSM, 选择2.5版本的


二.二 在src下创建包,在SSM项目下创建 config 的源文件夹


src 下创建的包分别为 : com.yjl.pojo, com.yjl.mapper, com.yjl.service, com.yjl.service.impl, com.yjl.action, com.yjl.utils , 来放置代码


创建源文件夹为 config, 来放置 配置文件


20190910123142443.png


二.三 创建mybatis 数据库,里面创建 user表。 以user表为例进行整合


User的 字段有 ,id,name,sex,age,description, id为Integer,自动增长,主键。


20190910123158194.png


数据有:


20190910123204939.png


二.四 导入SSM 需要的整合Jar包


1 . MyBatis 所需要的Jar包


20190910123229460.png


共15个。


2 . Spring+SpringMVC所需要的 jar包


20190910123210974.png


共 25个


3 . JSTL模板类 库,有两个


20190910123253301.png


4 . 数据库连接池 C3P0所需要的 jar包 或者是dbcp 所需要的jar包。 用dbcp吧,区别于SSH. 有两个


20190910123258707.png


5 . mysql 数据库的驱动 1个。


20190910123303386.png


6 . MyBatis与 Spring整合所需要的jar包 由MyBatis提供, 注意版本,选择1.3版本的。 1个。


20190910123322834.png


将这些jar 包放置在 WEB-INF 下面的lib文件夹下。


共有 16+25+2+2+1+1= 46个。


导入之后, 发现 commons-logging-1.2.jar 包 重复,(Spring与MyBatis都有),去除一个。


log4j.jar 有两个版本, log4j-1.2.17.jar(MyBatis的), log4j-1.2.16.jar(Spring的),去除低版本的,保留 1.2.17


故最后只剩下 44个 jar包。


20190910123337201.png


二.五 源文件夹 config下创建 db.properties 文件,来存储数据库的连接配置


db.properties:


##关于数据库的属性
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatis?characterEncoding=utf8
jdbc.username=root
jdbc.password=abc123
## 关于数据库连接池的属性
jdbc.maxActive=30
jdbc.maxIdle=5


在数据库前面加上前缀, jdbc,避免直接 url,username 与spring中的属性重复。


二.六 源文件夹config 下创建log4j.properties, 来存储日志信息


log4j.properties


### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
### direct messages to file hibernate.log ###
#log4j.appender.file=org.apache.log4j.FileAppender
#log4j.appender.file.File=hibernate.log
#log4j.appender.file.layout=org.apache.log4j.PatternLayout
#log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
### set log levels - for more verbose logging change 'info' to 'debug' ###
log4j.rootLogger=debug, stdout


二.七 源文件夹 config下创建 mybatis文件夹,下面再创建 SqlMapConfig.xml 文件,存储MyBatis的配置


二.八 config下创建spring的文件夹,下面再创建 spring的配置文件


如 applicationContext-dao.xml(Spring与dao的整合) , applicationContext-service.xml(Spring与Service的整合), springmvc.xml (SpringMVC的配置文件)


创建之后, config 源文件夹下的目录如下所示:


2019091012334890.png


上面是配置基本的文件,还没有到真正开始呢。 现在,才正式进入配置。


二.九 利用MyBatis的逆向工程来生成 user 表的逆向代码


MyBatis的逆向工程,可以观看老蝴蝶写的文章: MyBatis逆向工程的使用(十二)


逆向工程执行之后 ,会生成 User.java, UserExample.java, UserMapper.java, UserMapper.xml 文件。


将 User.java,UserExample.java 复制到 com.yjl.pojo 包下, 将UserMapper.java, UserMapper.xml 复制到 com.yjl.mapper 包下。


在MyBatis中添加分页查询的功能, 关于MyBatis的分页,可以观看老蝴蝶以前写的文章: MyBatis的pageHelper分页插件的使用(十五)


需要在UserExample, UserMapper.java, UserMapper.xml 中添加分页的功能代码。


故需要对其进行稍微的改变。


改变后的文件如下:


User.java


package com.yjl.pojo;
import java.io.Serializable;
public class User implements Serializable{
  private static final long serialVersionUID = 6736354022794444729L;
  private Integer id;
    private String name;
    private Integer age;
    private String sex;
    private String description;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name == null ? null : name.trim();
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex == null ? null : sex.trim();
    }
    public String getDescription() {
        return description;
    }
    public void setDescription(String description) {
        this.description = description == null ? null : description.trim();
    }
  @Override
  public String toString() {
    return "User [id=" + id + ", name=" + name + ", age=" + age + ", sex=" + sex + ", description=" + description
        + "]";
  }
}


UserExample.java


package com.yjl.pojo;
import java.util.ArrayList;
import java.util.List;
public class UserExample {
    protected String orderByClause;
    protected boolean distinct;
    //添加两个字段,用于分页。
    private int start;  //开始的位置
    private int offset; //每页显示的最大数目
    public int getStart() {
    return start;
  }
  public void setStart(int start) {
    this.start = start;
  }
  public int getOffset() {
    return offset;
  }
  public void setOffset(int offset) {
    this.offset = offset;
  }
  // .... 省略逆向工程生成的代码, 主要是太多了,老蝴蝶就不复制了。
}


UserMapper.java


package com.yjl.mapper;
import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.yjl.pojo.User;
import com.yjl.pojo.UserExample;
public interface UserMapper {
    int countByExample(UserExample example);
    int deleteByExample(UserExample example);
    int deleteByPrimaryKey(Integer id);
    int insert(User record);
    int insertSelective(User record);
    List<User> selectByExample(UserExample example);
    User selectByPrimaryKey(Integer id);
    int updateByExampleSelective(@Param("record") User record, @Param("example") UserExample example);
    int updateByExample(@Param("record") User record, @Param("example") UserExample example);
    int updateByPrimaryKeySelective(User record);
    int updateByPrimaryKey(User record);
    //根据sql语句进行相应的查询
  List<User> selectBySQL(@Param(value="limit")int limit, 
      @Param(value="offset") int offset);
}


UserMapper.xml


代码也太多了,就不复制了,在逆向工程生成的代码之上, 把 selectBySQL写出来即可。


 <!-- 分页查询 -->
   <select id="selectBySQL" resultMap="BaseResultMap" parameterType="com.yjl.pojo.UserExample" >
    select
    <include refid="Base_Column_List" />
    from user
    limit #{limit},#{offset}
  </select>


样式为:


20190910123400295.png

相关文章
|
1月前
|
Java
SSM框架整合
SSM框架整合
23 3
|
1月前
|
前端开发 Java 数据库连接
SSM框架笔记源码剖析
SSM,是Spring+Spring MVC+MyBatis的缩写,是继SSH之后,目前比较主流的JavaEE企业级框架,适用于搭建各种大型的企业级应用系统。Spring依赖注人DI来管理各层的组件,使用AOP (面向切面编程)管理事务、日志、权限等。Spring MVC代表Model(模型)、View(视图).Contoller(控制)接收外部请求并进行分发和处理。MyBatis是基于JDBC的框架,主要用来操作数据库,并且将业务实体和数据表联系起来。
39 0
|
1月前
|
SQL Java 数据库连接
浅谈SSM框架理论相关知识_kaic
浅谈SSM框架理论相关知识_kaic
|
13天前
|
JSON 前端开发 Java
手把手整合SSM框架2
手把手整合SSM框架
25 0
|
13天前
|
Java 数据库连接 Maven
手把手整合SSM框架1
手把手整合SSM框架
22 0
|
13天前
|
SQL 前端开发 Java
基于SSM框架的教务系统
基于SSM框架的教务系统
23 2
基于SSM框架的教务系统
|
6天前
|
存储 Java 关系型数据库
基于SSM框架的电影院售票网站
基于SSM框架的电影院售票网站
基于SSM框架的电影院售票网站
|
13天前
|
Java 数据库连接 Android开发
SSM框架——使用MyBatis Generator自动创建代码
SSM框架——使用MyBatis Generator自动创建代码
15 2
|
14天前
|
Java 测试技术 数据库连接
基于SSM框架实现的快递配送平台
基于SSM框架实现的快递配送平台
|
26天前
|
JavaScript Java 测试技术
基于ssm+vue.js的框架失物招领信息交互平台附带文章和源代码设计说明文档ppt
基于ssm+vue.js的框架失物招领信息交互平台附带文章和源代码设计说明文档ppt
16 1