十次方项目总结-1

 

1.项目设计

1.1开发模式

十次方项目采用前后端分离的模式

1.2技术选型

后端:springcloud+springboot+mybatis plus+mysql

前端:vue+nodejs + NUXT + elementUI

本次项目开发注重于后端

1.3技术架构

采用前后端分离的技术架构

1.4微服务模块划分

微服务模块
tensquare_common
公共模块
tensquare_article
文章微服务
tensquare_user
用户微服务
tensquare_eureka
注册中心
tensquare_notice 
消息通知微服务

1.5数据库表结构分析

采用的分库分表设计,每个微服务模块为一个独立的数据库

1.6前后端约定的返回码

状态描述
返回码
成功20000

失败

20001
用户名或密码错误20002
权限不足20003
远程调用失败20004
重复操作20005

2.RESTful架构

简单总结RESTful架构为:

1.每一个URI代表一种资源;

2.客户端和服务器之间,传递这种资源的某种表现层;

3.客户端通过四个HTTP动词,对服务器端资源进行操作,实现"表现层状态转化"

本次项目使用GET、POST、PUT、DELETE四种方法

幂等性:幂等性是指重复使用同样的参数调用同一方法时总能获得同样的结果。不论你请求多少次,资源的状态是一样的。

GET:安全且幂等,一般用来获取信息——>用于查询接口

POST:不安全且不幂等,可以新建和更新资源——>用于提交接口

PUT:不安全但幂等,使用替换的方式更新资源——>用于更新接口

DELETE:不安全但幂等,删除资源——>用于删除接口

 

3.项目开发准备

3.1开发环境

虚拟机系统CentOS7  容器docker  数据库mysql5.7

所有第三方工具都运行在docker容器中

3.2接口测试工具postman

能够发送任何形式的http请求

4.项目工程搭建

创建tensquare_parent的maven工程,导入相关依赖,此为父工程

4.1搭建tensquare_common子模块

在此模块下创建:

1.Result类,用于controller返回结果封装

2.PageResult类,用于返回分页结果

3.StatusCodel类,用于定义返回码

4.IdWorker工具类,用于提供分布式id生成器

因为生产环境为分片部署,所以不可以使用自增id。(当数据量庞大时,在数据库分库分表后,数据库自增id不能满足唯一id来标识数据;因为每个表都按自己节奏自增,会造成id冲突,无法满足需求)

使用雪花算法生成唯一主键值,可以解决这一问题。

4.2搭建tensquare_article模块

1.创建ArticleApplication启动类和application.yml并添加内容

2.文章管理CRUD操作

集成mybatis plus

    1.mybatis plus概述:

    完全继承于mybatis,是对mybatis的二次封装和扩展

    只依赖于mybatis和mybatis-spring

    启动即可自动注入CRUD,性能无损耗,直接面向对象操作

    自动热加载,Mapper对应的xml可以热加载,大大减少web重启的时间,提高开发效率

    避免sql注入问题

  2.引入依赖

 3.在application.yml添加相关配置

 4.在启动类中添加MapperScanner注解,开启mapper扫描

 5.创建pojo下的Article实体类

 6.编写数据访问接口dao

 7.编写service

 8.编写controller

5.此章节需要注意的点

5.1在文章的更新方法中,掌握两种方法

   //修改文章
    public void update(Article article) {
        //方法一
        articleDao.updateById(article);
        //方法二
//        EntityWrapper wrapper = new EntityWrapper<Article>();
//        wrapper.eq("id", article.getId());
//        articleDao.update(article, wrapper);
    }

方法一为BaseMapper的方法

方法二需要掌握Mybatis plus工具条件构造器EntityWrapper wrapper的使用方法。

5.2文章的分页查询方法

controller

//根据条件查询列表
    //POST
    ///article/search/{page}/{size}
    //文章分页
    @RequestMapping(value = "/search/{page}/{size}", method = RequestMethod.POST)
    public Result findByPage(@PathVariable Integer page,
                             @PathVariable Integer size,
                             @RequestBody Map<String, Object> map) {
        //查询
        Page<Article> pageData = articleService.findByPage(map, page, size);
        //封装分页返回对象
        PageResult<Article> pageResult = new PageResult<>(
                pageData.getTotal(), pageData.getRecords()
        );
        //返回result
        return new Result(StatusCode.OK, true, "查询成功", pageResult);
    }

service 

//分页查询
    public Page<Article> findByPage(Map<String, Object> map, Integer page, Integer size) {
        EntityWrapper<Article> wrapper = new EntityWrapper<>();
        Set<String> keySet = map.keySet();
        //遍历设置查询条件
        for (String key : keySet) {
            wrapper.eq(map.get(key) != null, key, map.get(key));
        }
        //设置分页查询参数
        Page<Article> page1 = new Page<>(page, size);
        List<Article> list = articleDao.selectPage(page1, wrapper);
        page1.setRecords(list);
        return page1;

    }

1.掌握mybatis plus分页插件Page<T>的用法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值