我的第一个项目(十五) :完成数据保存功能(后端,改update)

第一个,项目,十五,完成,数据,保存,功能,后端,update · 浏览次数 : 41

小编点评

```java public class SysUserLoginResp { private String LoginName; private int life; private int score; public String getLoginName() { return LoginName; } public void setLoginName(String loginName) { LoginName = loginName; } public int getLife() { return life; } public void setLife(int life) { this.life = life; } public int getScore() { return score; } public void setScore(int score) { this.score = score; } @Override public String toString() { return "SysUserUpdateReq{" + "\"LoginName='\" + LoginName + '\'' + \", life=" + life + \", score=" + score + '}'; } } ```

正文

好家伙,

 

代码已开源(Gitee)

PH-planewar: 个人开发的全栈小游戏 前端:vue2 + element-ui 后端: Springboot + mybatis-plus 数据库: mysql 目前实现功能: 1.注册登陆 2.游戏数据保存 3.游戏运行 (gitee.com)

后端这边update方法改了一下

controller类:

package com.wulaoda.loginhouduan.controller;


import com.wulaoda.loginhouduan.entity.SysUserEntity;
import com.wulaoda.loginhouduan.req.SysUserLoginReq;
import com.wulaoda.loginhouduan.req.SysUserSaveReq;
import com.wulaoda.loginhouduan.req.SysUserUpdateReq;
import com.wulaoda.loginhouduan.resp.CommonResp;
import com.wulaoda.loginhouduan.resp.SysUserLoginResp;
import com.wulaoda.loginhouduan.service.SysUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.DigestUtils;
import org.springframework.web.bind.annotation.*;

@RestController
//绑定数据库表名
@RequestMapping("/sys-user")
public class SysUserController {

    @Autowired
    private SysUserService sysUserService;

    @PostMapping("register")
//    zxcv1234
    //@RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的);
    public CommonResp register(@RequestBody  SysUserSaveReq req){
        //对密码进行md5加密
        req.setPassword(DigestUtils.md5DigestAsHex(req.getPassword().getBytes()));
        //resp为返回数据
        CommonResp resp = new CommonResp<>();
        //真正的注册
        SysUserEntity saveResp = sysUserService.register(req);
        if(saveResp ==null){
            resp.setSuccess(false);
        }
        return resp;
    }

    @PostMapping("login")
    public CommonResp login(@RequestBody SysUserLoginReq req){
//        zxcv1234
        req.setPassword(DigestUtils.md5DigestAsHex(req.getPassword().getBytes()));
        CommonResp resp = new CommonResp<>();
        SysUserLoginResp loginResp = sysUserService.login(req);
        if (loginResp == null) {
            resp.setSuccess(false);
        }
        resp.setContent(loginResp);
        return resp;
    }

    @PostMapping("update")
    public CommonResp update(@RequestBody SysUserUpdateReq req){
        CommonResp resp = new CommonResp<>();
        sysUserService.update(req);
        return resp;
    }
    @GetMapping("getallscore")
    public CommonResp getallscore(){
        CommonResp resp = new CommonResp<>();
        sysUserService.getallscore();
        return resp;
    }

}

 

service类

package com.wulaoda.loginhouduan.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.wulaoda.loginhouduan.entity.SysUserEntity;
import com.wulaoda.loginhouduan.mapper.SysUserMapper;
import com.wulaoda.loginhouduan.req.SysUserLoginReq;
import com.wulaoda.loginhouduan.req.SysUserSaveReq;
import com.wulaoda.loginhouduan.req.SysUserUpdateReq;
import com.wulaoda.loginhouduan.resp.SysUserLoginResp;
import com.wulaoda.loginhouduan.resp.SysUserUpdateResp;
import com.wulaoda.loginhouduan.service.SysUserService;
import com.wulaoda.loginhouduan.utils.CopyUtil;
import com.wulaoda.loginhouduan.utils.SnowFlake;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import org.springframework.util.ObjectUtils;

import javax.annotation.Resource;
import java.util.List;

@Service
//implements表示接口的实现,必须实现接口中的所有方法
//此处继承SysUserService的方法并改写
public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUserEntity> implements SysUserService {

    @Resource
    @Autowired
    private SysUserMapper sysUserMapper;

    @Autowired
    private SnowFlake snowFlake;

//注册
    @Override
    public SysUserEntity register(SysUserSaveReq req) {
        //
        SysUserEntity user = CopyUtil.copy(req, SysUserEntity.class);
        //ObjectUtils.isEmpty判断对象是否为空
        if(ObjectUtils.isEmpty(req.getId())){
            //查看用户名是否已注册
            SysUserEntity userDb = selectByLoginName(req.getLoginName());
            //用户名未被注册
            if(ObjectUtils.isEmpty(userDb)){
                //用算法给帮它设置一个新id
                user.setId(snowFlake.nextId());
                //这步是真正的往数据库里插数据了
                sysUserMapper.insert(user);
                //哈哈,没东西返回了
            }else{
                //用户名已被注册,返回null
                return null;
            }
        }
        //无用返回
        return user;
    }
//登陆
    @Override
    public SysUserLoginResp login(SysUserLoginReq req) {
        SysUserEntity userDb = selectByLoginName(req.getLoginName());
        QueryWrapper<SysUserEntity> wrapper = new QueryWrapper<>();
        if(ObjectUtils.isEmpty(userDb)){
            //用户不存在
            return null;
        }else {
            String s1 = userDb.getPassword();
            String s2 = req.getPassword();
            //进行字符串校验
            if(s1.equals(s2)){
                //密码验证成功
                int a = userDb.getLife();

                SysUserLoginResp userLoginResp = CopyUtil.copy(userDb, SysUserLoginResp.class);
                return userLoginResp;
            }else {
                //密码校验失败
                return null;
            }
        }
    }
//数据更新
    @Override
    public SysUserUpdateResp update(SysUserUpdateReq req){
//        SysUserEntity userDb = selectByLoginName(req.getLoginName());
//        QueryWrapper<SysUserEntity> wrapper = new QueryWrapper<>();
//        LambdaUpdateWrapper<SysUserEntity> wrapper1 = new LambdaUpdateWrapper<>();
//        wrapper1.set(SysUserEntity::getLife, req.getLife());
//        sysUserMapper.update(userDb,wrapper1);
          //重写
          //网上的例子
//        LambdaUpdateWrapper<User> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
//        lambdaUpdateWrapper.eq(User::getName, "rhb").set(User::getAge, 18);
//        Integer rows = userMapper.update(null, lambdaUpdateWrapper);
        //以下版本只能修改单项数据
//          LambdaUpdateWrapper<SysUserEntity> wrapper1 = new LambdaUpdateWrapper<>();
//          wrapper1.eq(SysUserEntity::getLoginName, req.getLoginName()).set(SysUserEntity::getLife, req.getLife());
//          sysUserMapper.update(null,wrapper1);
        LambdaUpdateWrapper<SysUserEntity> wrapper1 = new LambdaUpdateWrapper<>();
        wrapper1.eq(SysUserEntity::getLoginName, req.getLoginName()).set(SysUserEntity::getLife, req.getLife());
        wrapper1.eq(SysUserEntity::getLoginName, req.getLoginName()).set(SysUserEntity::getScore, req.getScore());
        sysUserMapper.update(null,wrapper1);
          return null;
    }
//获取所有分数getallscore
//    @Override
//    public void getallscore(){
//        // 查询多个字段,其它不需要查询的字段则为null
////        List<Object> objects = sysUserMapper.selectObjs(new QueryWrapper<SysUserEntity>()
////                .lambda().select(SysUserEntity::getLoginName, SysUserEntity::getScore));
//        // 查询单个字段
////        List<String> strings = adminService.listObjs(new QueryWrapper<Admin>()
////                .lambda().select(Admin::getAdminMobile), Object::toString);
//// 查询多个字段,其它不需要查询的字段则为null
////        QueryWrapper<SysUserLoginResp> userQueryWrapper = Wrappers.query();
////
////        userQueryWrapper.select(SysUserLoginResp.class , e -> !e.getColumn().equals("loginName")).lt("score" , 50);
////        List<SysUserLoginResp> userList = sysUserMapper.selectList(userQueryWrapper);
////        userList.forEach(System.out::println);
//////        return (SysUserLoginResp) userList;
////        return null;
//
//        QueryWrapper<SysUserLoginResp> userQueryWrapper = new QueryWrapper<>();
//        userQueryWrapper.select(SysUserLoginResp.class , e->!e.getColumn().equals("password"))
//                .like("username" , "k")
//                .between("age" , 25 , 35)
//                .isNotNull("password");
//        List<SysUserLoginResp> userList = sysUserMapper.selectList(userQueryWrapper);
//        userList.forEach(System.out::println);
//    }
    //查询loginName是否被注册
    public SysUserEntity selectByLoginName(String loginName){
        //QueryWrapper<>()
        QueryWrapper<SysUserEntity> wrapper = new QueryWrapper<>();
        //wrapper.lambda().eq()单表查询,在"SysUserEntity::getLoginName"找一个指定的"loginName"
        wrapper.lambda().eq(SysUserEntity::getLoginName,loginName);
        //BaseMapper的selectList()方法,根据id批量查询
        List<SysUserEntity> userEntityList = sysUserMapper.selectList(wrapper);
        //CollectionUtils.isEmpty()判断集合是否为空
        if(CollectionUtils.isEmpty(userEntityList)){
            //若判断为空,则返回null,意思是没被注册过
            return  null;
        }else {
            //查到了,将这条数据返回
            return userEntityList.get(0);
        }
    }
}

 

对象实体类:

package com.wulaoda.loginhouduan.resp;

public class SysUserUpdateResp {
    private String LoginName;

    private int life;

    private int score;

    public String getLoginName() {
        return LoginName;
    }

    public void setLoginName(String loginName) {
        LoginName = loginName;
    }

    public int getLife() {
        return life;
    }

    public void setLife(int life) {
        this.life = life;
    }

    public int getScore() {
        return score;
    }

    public void setScore(int score) {
        this.score = score;
    }

    @Override
    public String toString() {
        return "SysUserUpdateReq{" +
                "LoginName='" + LoginName + '\'' +
                ", life=" + life +
                ", score=" + score +
                '}';
    }
}

 

与我的第一个项目(十五) :完成数据保存功能(后端,改update)相似的内容:

我的第一个项目(十五) :完成数据保存功能(后端,改update)

好家伙, 代码已开源(Gitee) PH-planewar: 个人开发的全栈小游戏 前端:vue2 + element-ui 后端: Springboot + mybatis-plus 数据库: mysql 目前实现功能: 1.注册登陆 2.游戏数据保存 3.游戏运行 (gitee.com) 后端这

我的第一个项目(十四) :完成数据保存功能(前端,增查改接口)

好家伙,天天拖,终于写完了 代码已开源(Gitee) PH-planewar: 个人开发的全栈小游戏 前端:vue2 + element-ui 后端: Springboot + mybatis-plus 数据库: mysql 目前实现功能: 1.注册登陆 2.游戏数据保存 3.游戏运行 (gitee

我的第一个项目(十一) :飞机大战分包完成(简单阐述分包思路以及过程)

好家伙, 代码已开源 Git: https://gitee.com/tang-and-han-dynasties/panghu-planebattle-esm.git NPM: panghu-planebattle-esm - npm (npmjs.com) 现在,比如说,我用Vue写好了个人博客主

我的第一个项目(十) :处理全局变量(解决模块化后变量无法获取的问题)

好家伙, 飞机大战分包分的差不多了, 但是又出现了问题: 文件目录如下: 然而关于变量 helloworld.vue完整代码

我的第一个项目(十二) :分数和生命值的更新(后端增删查改的"改")

好家伙,写后端,这多是一件美逝. 关于这个项目的代码前面的博客有写 我的第一个独立项目 - 随笔分类 - 养肥胖虎 - 博客园 (cnblogs.com) 现在,我们登陆进去了,我开始和敌人战斗,诶,打到一百分了,我现在要把这个分数保存起来 1.前端先把测试样例写好 随便写一个测试样例

我的第一个项目(十三) :组件间传值的一些方案(vuex,eventbus,localStorage)

好家伙, 先说一下我的需求,我要组件间传值 1.eventBus 前端兄弟组件传值eventbus无法使用 不报错也不触发,就很奇怪 //eventBus.js import Vue from "vue"; export default new Vue(); //Mylogin.vue

前后端分离项目(十):实现"改"功能(前后端)

好家伙,本篇介绍如何实现"改" 我们先来看看效果吧 (这可不是假数据哟,这是真数据哟) (忘记录鼠标了,这里是点了一下刷新) First Of All 我们依旧先来理一下思路: 首先在"管理"页面中,我能看到所有的书本信息, 随后,在每一个信息后都有对应的"修改按钮" 当我点击这个按钮时,我要①拿到

我的第一个项目(二):使用Vue做一个登录注册界面

好家伙, 顶不住了,太多的bug, 本来是想把背景用canvas做成动态的,但是,出现了各种问题 为了不耽误进度,我们先把一个简单的登录注册界面做出来 来看看效果: (看上去还不错) 本界面使用Vue2(新建项目的时候记得把less勾上,项目里有用到) 1.项目目录: 2.MyLogin.vue组件

我的第一个项目(三):注册登陆功能(后端)

好家伙,前端出了点bug 我们来搞定后端先: 后端我们用的框架是Spring boot 数据库:MySQl 代码已开源,连接在最后 新建项目: 只点Java Web 项目目录如下: 1.首先,我们在pom.xml文件中导入第三方包: web服务,mysql连接驱动等一系列包 pom.xml文件: <

我的第一个项目(四):(前端)发送请求以及表单校验

好家伙,本篇将继续完善前端界面 效果展示: 1.注册登陆 (后端已启动) 2.注册表单验证 (前端实现的表单验证) 在此之前: 我的第一个项目(二):使用Vue做一个登录注册界面 - 养肥胖虎 - 博客园 (cnblogs.com) 后端部分: 我的第一个项目(三):注册登陆功能(后端) - 养肥胖