后端crud接口完整实现 前端crud实现 Idea集成svn插件 Idea中svn的基本操作 项目仓库搭建

本文介绍了前后端分离技术的概述,包括后端使用SSM实现CRUD接口,前端使用Vue进行CRUD操作,以及如何在Idea中集成和使用 SVN。详细讲解了后端的接口实现步骤,如Base继承结构、Mapper和Service的实现,前端Vue文件的创建、路由配置和Axios的使用,以及如何解决跨域问题。
摘要由CSDN通过智能技术生成

代码管理工具-svn
一、课程介绍
前后端分离技术概述(掌握)
后端crud接口完整实现(掌握)
前端crud实现(掌握)
Idea集成svn插件(掌握)
Idea中svn的基本操作(掌握)
项目仓库搭建(重要)
二、前后端分离概述
2.1什么是前后端分离
前后端分离是一种架构模式,前后端项目分开开发,测试,部署.
并行开发:前后端并行开发,测试,再联调.
后端先行:后端先开发好接口,前端使用真是数据,省去写mock过程. 采纳
2.2前后端分离优势
为优质产品打造精益团队
通过将开发团队前后端分离化,让前后端工程师只需要专注于前端或后端的开发工作,是的前后端工程师实现自治,培养其独特的技术特性,然后构建出一个全栈式的精益开发团队。
专业的人做专业的事情
提升开发效率
前后端分离以后,可以实现前后端代码的解耦,只要前后端沟通约定好应用所需接口以及接口参数,便可以开始并行开发,无需等待对方的开发工作结束。与此同时,即使需求发生变更,只要接口与数据格式不变,后端开发人员就不需要修改代码,只要前端进行变动即可。如此一来整个应用的开发效率必然会有质的提升。
并行开发
完美应对复杂多变的前端需求
如果开发团队能完成前后端分离的转型,打造优秀的前后端团队,开发独立化,让开发人员做到专注专精,开发能力必然会有所提升,能够完美应对各种复杂多变的前端需求。
增强代码可维护性
前后端分离后,应用的代码不再是前后端混合,只有在运行期才会有调用依赖关系。

全栈开发(jquery):配了假前端,来小姐姐给我写个页面
前后端分离模式下的全栈(前后台)-vue,j2ee 这都是我的
前后端分离模式下的后台开发-j2ee 这是前端的不要找我

2.3第三个项目中使用前后端技术架构

后端:
ssm+mave多模块
swagger文档描述
postman测试
前端:
nodejs
npm:管理js库
webpack:对静态资源打包
vuejs:MVVM模式的开发js库
ElementUI:前端ui框架
vuecli:vue开发脚手架,能够快速搭建vue项目,里面包含了webpack的打包配置,服务器热启动.

三、后端crud实现

后端项目结构:

被忽略-pom.xml
现象: 导包没用,项目变灰

在这里插入图片描述

3.1 restfull概述

Restfull是http协议的扩展,它以资源为核心,通过url定位资源,以http协议不同请求方式表示操作(PUT,POST,GET,DELETE,PATCH,HEAD,OPTION)

  添加: 
PUT /employee  @RequestBody
{
   
}
  删除:
DELETE /employee/id RequestMapping(value={
   id}) @PathVirable(“id”) Long id
  修改:
POST /employee/id RequestMapping(value={
   id}) @PathVirable(“id”) Long id @RequestBody
{
   
}
查询一个:
GET /employee/id  RequestMapping(value={
   id}) @PathVirable(“id”)
批量查询
PATCH/employee
高级查询
GET /employee 

3.2 后端接口实现

3.2.1 Base继承结构

体现写一个后端crud的步骤
itsource_common: 自己domain继承BaseDomain
itsource_mapper: 自己Mapper.java继承与BaseMapper 自己的Mapper.xml
由于Mapper.java继承了BaseMapper 的基础方法,所以不要忘记了在Mapper.xml
里面忘记了写对应的映射语句
itsource_service:
自己IServie继承与IbaseService的基础接口方法,自己ServiceImpl基于BaseServiceImpl,里面实现基础接口实现.
以后只有扩展方法是需要在自己的接口和实现类中写以外,其他统统不用管.
在这里插入图片描述
junit
itsource_web:实现Controller

以部门为例写一个crud接口

3.2.2 domain及表

public class Department extends BaseDomain
{
   
    private String name;
DROP TABLE IF EXISTS `t_department`;
CREATE TABLE `t_department` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

3.2.3 Mapper.java&Mapper.xml

在这里插入图片描述

public interface DepartmentMapper extends BaseMapper<Department> {
   
}

<?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="cn.itsource.mapper.DepartmentMapper">
    <!--void save(T t);-->
    <insert id="save" parameterType="Department">
        INSERT INTO  t_department(name) VALUES(#{
   name})
    </insert>
    <!--void remove(Serializable id);-->
    <delete id="remove" parameterType="long">
        DELETE FROM t_department where id = #{
   id }
    </delete>
    <!--void update(T t);-->
    <update id="update" parameterType="Department">
        update t_department set name = #{
   name} where id = #{
   id}
    </update>
    <!--T loadById(Serializable id);-->
    <select id="loadById" parameterType="long" resultType="Department">
        SELECT  * from t_department where id = #{
   id}
    </select>
    <!--List<T> loadAll();-->
    <select id="loadAll" resultType="Department">
        SELECT  * from t_department
    </select>
</mapper>

3.2.4 IxxxService.java XxxServiceImpl.java

package cn.itsource.service;

import cn.itsource.basic.service.IBaseService;
import cn.itsource.domain.Department;

public interface IDepartmentService extends IBaseService<Department> {
   
}

package cn.itsource.service.impl;

import cn.itsource.basic.service.impl.BaseServiceImpl;
import cn.itsource.domain.Department;
import cn.itsource.service.IDepartmentService;
import org.springframework.stereotype.Service;

@Service
public class DepartmentServiceImpl extends BaseServiceImpl<Department> implements IDepartmentService {
   
}

3.2.5 junit

package cn.itsource.service;

import cn.itsource.basic.PageList;
import cn.itsource.domain.Department;
import cn.itsource.domain.Employee;
import cn.itsource.query.EmployeeQuery;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;

public class DepartmentServiceTest extends BaseTest {
   

    @Autowired
    private IDepartmentService departmentService;


    @Test
    public void test()throws Exception{
   
        for (Department department : departmentService.getAll()) {
   
            System.out.println(department);
        }
    }
}

3.2.6 controller

package cn.itsource.web.controller;

import cn.itsource.basic.AjaxResult;
import cn.itsource.basic.PageList;
import cn.itsource.basic.query.BaseQuery;
import cn.itsource.domain.Employee;
import cn.itsource.query.EmployeeQuery;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 约束方法不漏
 * 约束方法名按照规范来
 *
 * @param <T>
 */
public interface BaseController<T> {
   
    AjaxResult add(T t);

    AjaxResult del(Long id);

    AjaxResult update(Long id,T t);

    T getById(Long id);

    List<T> list();

    PageList<T> query(BaseQuery query);
}

package cn.itsource.web.controller;

import cn.itsource.basic.AjaxResult;
import cn.itsource.basic.PageList;
import cn
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值