栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

ssm整合CRUD(典藏版)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

ssm整合CRUD(典藏版)

目录
  • 前言
  • 1 准备工作
    • 1.1 创建工程
    • 1.2 物理建模
    • 1.3 逻辑建模
    • 1.4引入依赖
    • 1.5 加入日志配置文件
  • 2 连接数据库并进行测试
    • 2.1 创建jdbc.properties
    • 2.2 创建Spring配置文件
    • 2.3 在Spring配置文件中引入jdbc.properties
    • 2.4 在spring配置文件中配置数据源
    • 2.5 创建junit测试类测试
      • ①在日志配置文件中为测试类设置日志级别
      • ② 在test目录下创建一个测试类SSMTest
  • 3 spring整合mybatis
    • 3.1 创建mybatis的配置文件
    • 3.2 测试mybatis
      • ① 创建Mapper接口
      • ② 创建mapper配置文件
      • ③ 在junit测试类中装配Mapper接口
    • 3.3 配置spring配置文件
    • 3.4 测试Spring
      • ①创建Service接口
      • ② 创建Service类
      • ③ 测试
  • 4 web.xml
    • 4.1 生成web.xml
    • 4.2 设置web工程
    • 4.3 配置web.xml
  • 5 创建SpringMVC的配置文件
  • 6 显示首页
    • ① 创建首页对应的视图模板文件
    • ②配置访问首页的view-controller
  • 小结
  • 7 显示数据列表
    • 7.1 创建EmpHandler类并完成编写
      • ①首页上设置一个超链接,点击超链接跳转到显示全部数据页面
      • ②在类上标记@Controller注解
      • ③在handler中装配EmpService
    • 7.2 创建逻辑视图对应的视图模板页面
      • ① 从请求域 读取要显示的数据
      • ②遍历数据集合显示数据
  • 8 分页显示数据列表
    • 8.1 环境准备
      • ① 导入依赖
      • ②在SqlsessionFactoryBean中配置PageHelper插件
    • 8.2在首页添加超链接,需要考虑页码值(pageNo)传入
    • 8.3 service方法中实现分页功能
      • ①empservice接口
      • ②实现类
    • 8.4 EmpHandler实现
    • 8.5 完成页面显示
  • 9 删除操作
    • 9.1 在页面上给每一条记录编写超链接
    • 9.2 转换请求方式,将点击超链接的GET请求转换为最终的DELETe请求
    • 9.3 mapper接口及配置文件
    • 9.4 service接口及实现类
    • 9.5 handler类
  • 10 新增操作
    • 10.1 跳转到表单(edit-add.html)
      • ① 编写超链接
      • ②在springmvc-config.xml中配置
      • ③创建表单所在的视图模板文件(edit-add.html)
    • 10.2 提交表单
      • ①mapper接口及配置
      • ②serivce方法及实现类
      • ③handler方法
  • 11 更新操作(回显+提交)
    • 11.1 跳转到表单页面(emp-edit.html),回显数据(本质是查询)
      • ①编写超链接,传参数:empId和pageNum
      • ②mapper接口及配置文件
      • ③ service方法及实现类
      • ④handler方法
      • ④ 创建表单所在的视图模板文件
    • 11.2 提交表单
      • ①mapper接口及配置文件
      • ② service方法及实现类
      • ③ handler方法
  • 总结

前言

ssm框架整合之后,我们需要用其进行一个简单的CRUD。那么该如何进行呢?步骤是怎样的呢?本文将会从最开始环境搭建到最后所有功能的开发具体实现,一步步教会你改如何使用SSM框架进行CRUD。让我们开始吧。


1 准备工作 1.1 创建工程

本案例使用工具:

工具版本
IDEA2021.3
MYSQL5.0
maven3.8.4
  1. IDEA中创建maven工程,准备好基础包。
包名作用
entity存放实体类
handler存放控制器类
service存放service类和其实现类
mapper存放mapper接口
test存放测试类
  1. 注意设置maven本地仓库和使用自己的设置(防止都在默认的c盘,导致占用c盘空间过多)
1.2 物理建模

物理建模顾名思义就是在数据库中创建一个具体的table表,在数据库中实实在在存在的。那么本文以t-emp表为例。
下图给出数据库名称和表中字段名。

1.3 逻辑建模

物理建模完成之后,我们要在java代码中创建其实体类,即逻辑视图,以便将数据库与java代码进行绑定,便于后续操作。

public class Emp {
    private Integer empId;

    private String empName;

    private Double empSalary;

    public Emp() {
    }

    public Emp(Integer empId, String empName, Double empSalary) {
        this.empId = empId;
        this.empName = empName;
        this.empSalary = empSalary;
    }

    public Integer getEmpId() {
        return empId;
    }

    public void setEmpId(Integer empId) {
        this.empId = empId;
    }

    public String getEmpName() {
        return empName;
    }

    public void setEmpName(String empName) {
        this.empName = empName;
    }

    public Double getEmpSalary() {
        return empSalary;
    }

    public void setEmpSalary(Double empSalary) {
        this.empSalary = empSalary;
    }

    @Override
    public String toString() {
        return "Emp{" +
                "empId=" + empId +
                ", empName='" + empName + ''' +
                ", empSalary=" + empSalary +
                '}';
    }
}
1.4引入依赖

将整个SSM整合需要的依赖全部用maven配置。其余按需添加



    4.0.0

    com.atguigu.ssm
    demo-ssm-test
    1.0-SNAPSHOT
    war


    
        
        
            org.springframework
            spring-webmvc
            5.3.1
        

        
        
            org.springframework
            spring-orm
            5.3.1
        

        
        
            ch.qos.logback
            logback-classic
            1.2.3
        

        
        
            javax.servlet
            javax.servlet-api
            3.1.0
            provided
        

        
        
            org.thymeleaf
            thymeleaf-spring5
            3.0.12.RELEASE
        

        
        
            org.mybatis
            mybatis
            3.5.7
        

        
        
            mysql
            mysql-connector-java
            5.1.3
        

        
        
            com.alibaba
            druid
            1.0.31
        

        
        
            org.junit.jupiter
            junit-jupiter-api
            5.7.0
            test
        

        
        
            org.springframework
            spring-test
            5.3.1
        

        
        
            org.mybatis
            mybatis-spring
            2.0.6
        
        
        
        
            com.github.pagehelper
            pagehelper
            5.3.1
        

    

    
        8
        8
    


1.5 加入日志配置文件

日志文件对于我们进行调试代码有很好的作用,我们可以使用日志配置文件进行更好的查询到异常问题所在。
注意:配置文件全部放在resources目录下。

logback.xml



    
    
        
            
            
            [%d{HH:mm:ss.SSS}] [%-5level] [%thread] [%logger] [%msg]%n
        
    

    
    
    
        
        
    

    
       


全局日志级别我们一般都设置为debug。其余根据需求进行设置。比如说test测试类。


2 连接数据库并进行测试 2.1 创建jdbc.properties
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:13306/mybatis-example
jdbc.username=root
jdbc.password=abc123
2.2 创建Spring配置文件

spring-persist.xml
创建spring-persist.xml配置文件引入jdbc.properties要注意引入context空间,如果不引入,接下来的操作会报各种错误。比如说:

引入名称空间:

 xmlns:context="http://www.springframework.org/schema/context"
 http://www.springframework.org/schema/context  http://www.springframework.org/schema/context/spring-context.xsd
2.3 在Spring配置文件中引入jdbc.properties

    
2.4 在spring配置文件中配置数据源

    
        
        
        
        
    
2.5 创建junit测试类测试 ①在日志配置文件中为测试类设置日志级别
    

② 在test目录下创建一个测试类SSMTest
@SpringJUnitConfig(locations = {"classpath:spring-persist.xml"})
public class SSMTest {
    @Autowired
    private DruidDataSource dataSource;
    
    //使用日志进行输出,需要在logback.xml中设置类的日志级别为DUBUG
   Logger logger =  LoggerFactory.getLogger(getClass());
   
    @Test
    public void testConn() throws SQLException {
        DruidPooledConnection connection = dataSource.getConnection();
        //使用日志级别输出
        logger.debug(connection.toString());
    }
}

@SpringJUnitConfig -----spring整合junit5单元测试注解,指定spring配置文件位置,自动加载上下文。
注意:
我们使用的日志文件导入的包是:org.slf4j.Logge

千万不要导错了。

3 spring整合mybatis 3.1 创建mybatis的配置文件

mybatis-config.xml
主要作用:

  • 设置驼峰式命名
  • 设置实体类所在包的别名






    


    
        
    

3.2 测试mybatis ① 创建Mapper接口
public interface EmpMapper {
    List  getAllEmp();
}

以查询全部数据为例。

② 创建mapper配置文件




    

    
  




首页
9 删除操作

9.1 在页面上给每一条记录编写超链接
 
    ID
    NAME
    SALARY
      删除
      更新
  
 
    
      删除
    
9.2 转换请求方式,将点击超链接的GET请求转换为最终的DELETE请求

我们的思路是提供一个空表单,作为通用组件。



配套的js代码



9.3 mapper接口及配置文件
void deleteEmpByPrimaryId(Integer empId);


    delete from t_emp where  emp_id = #{empId}

9.4 service接口及实现类
//删除
    void doDeleteEmpByPrimaryId(Integer empId);
@Override
    public void doDeleteEmpByPrimaryId(Integer empId) {
        empMapper.deleteEmpByPrimaryId(empId);
    }
9.5 handler类

   @RequestMapping(value="/emp/{empId}/{pageNo}",method = RequestMethod.DELETE)
    public String doDelete(
            @PathVariable("empId")Integer empId,
            @PathVariable("pageNo")Integer pageNo
        ){
            empService.doDeleteEmpByPrimaryId(empId);
            return "redirect:/get/page/"+pageNo;
        }
10 新增操作


10.1 跳转到表单(edit-add.html) ① 编写超链接
添加数据
②在springmvc-config.xml中配置

③创建表单所在的视图模板文件(edit-add.html)



    
    Title
    


姓名:
工资:
10.2 提交表单 ①mapper接口及配置
void insert(Emp emp);

    
        insert into t_emp values(null,#{empName},#{empSalary})
    
②serivce方法及实现类
//新增
    void doAdd(Emp emp);
 @Override
    public void doAdd(Emp emp) {
        empMapper.insert(emp);
    }
③handler方法
  @RequestMapping(value="/emp",method = RequestMethod.POST)
    public String doSave(
            //使用实体类接收发送过来的请求参数
            Emp emp ){
        empService.save(emp);
        //跳转到最后一页,Integer.MAX_VALUE---为了确保直接前往最后一页
        return "redirect:/get/page/"+Integer.MAX_VALUE;
    }
11 更新操作(回显+提交)

11.1 跳转到表单页面(emp-edit.html),回显数据(本质是查询) ①编写超链接,传参数:empId和pageNum
 
    ID
    empName
    empSalary
    删除
    更新
  

    更新
  
②mapper接口及配置文件
 Emp selectedEmpByPrimaryId(Integer empId);


③ service方法及实现类
//查询
    Emp  selectEmpById(Integer empId);
 @Override
    public Emp selectEmpById(Integer empId) {
        
        return empMapper.selectedEmpByPrimaryId(empId);
    }
④handler方法

 @RequestMapping(value="/emp/{empId}/{pageNo}",method = RequestMethod.GET)
    public String  doFormResisPlayer(
            @PathVariable("empId") Integer empId,
            @PathVariable("pageNo") Integer pageNo,
            Model model
    ){
        Emp emp = empService.getEmpById(empId);
        //将实体类对象存入模型
        model.addAttribute("emp",emp);
        //前往表单页面
        return "emp-edit";
    }
④ 创建表单所在的视图模板文件

emp-edit




    
    更新


姓名:
工资:
11.2 提交表单 ①mapper接口及配置文件
void updateByPrimaryKey(Emp emp);

    
        update t_emp  set emp_name=#{empName},emp_salary=#{empSalary} where emp_id = #{empId}
    
② service方法及实现类
  void doUpdate(Emp emp);
 @Override
    public void doUpdate(Emp emp) {
        
        empMapper.updateByPrimaryKey(emp);
    }
③ handler方法
  @RequestMapping(value = "/emp",method = RequestMethod.PUT)
    public String doUpdate(
            Emp emp,
            @RequestParam("pageNo") Integer pageNo
    ){
        empService.doUpdate(emp);
		//	跳转到最后一页
        return "redirect:/get/page/"+pageNo;
    }
总结

至此我们已经完成了基于ssm框架基本的crud操作,可以将此案例作为一个练手项目。
不足之处还请多多指教。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1002693.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号