SpringBoot: backend folder framework

SpringBoot: backend folder framework

entity:存放实体类
repository:继承Basemapper,链接数据库
service:实现一些增删改查的功能函数
controller:给前端提供接口
config:存放配置类
utils:存放service中可能用得到的辅助性功能函数
common:存放Result类

insert image description here

entity example

package com.ustb.springboot.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.*;

import javax.persistence.*;

@Entity//这个实体类会映射成一张表
@Data//自动生成getter/setter/hashcode
@AllArgsConstructor//自动生成带所有的带参数的构造方法
@NoArgsConstructor//自动生成默认不带参数的构造方法
@TableName("user") //表示映射到数据库的表名为user
@ToString
public class User {
    
    

    //所有的属性一律都是私有的
    @Id//表示是主键
    @GeneratedValue(strategy = GenerationType.IDENTITY)//默认的主键生成策略
    @TableId(value = "uid",type = IdType.AUTO)
    private int uid; //用户编号
    private String username; //用户名
    private String nickname;
    private String email;
    private String mobile;
    @JsonIgnore  //不想展示这个信息
    private String password;//密码
    @Column(length = 4)
    private String gender;//性别
    private String regDate;//注册日期
    private String avatar; //头像
    private int status;//用户的状态 状态:1,0
    //private int test;
}

repository example

package com.ustb.springboot.repository;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ustb.springboot.entity.User;
import org.springframework.stereotype.Repository;

@Repository
public interface UsersRepository extends BaseMapper<User> {
    
    
}

service example

userService:

package com.ustb.springboot.service;

import com.ustb.springboot.controller.dto.UserDTO;
import com.ustb.springboot.entity.User;

import java.util.List;
import java.util.Map;

public interface UserService {
    
    

    public int save(User user);

    public List<User> findAll();

    public int deleteById(int uid);

    public Map<String, Object> findPage(int pageNum, int pageSize);

    public UserDTO login(UserDTO userDTO);

    public int register(UserDTO userDTO);

    public User getById(int id);
}

userServiceImp:

package com.ustb.springboot.service;

import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.ustb.springboot.controller.dto.UserDTO;
import com.ustb.springboot.entity.User;
import com.ustb.springboot.repository.UsersRepository;
import com.ustb.springboot.utils.STRUtils;
import com.ustb.springboot.utils.TokenUtils;
import org.springframework.stereotype.Service;

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

@Service
public class UserServiceImpl implements UserService{
    
    

    @Resource
    private UsersRepository userRepository;

    @Override
    public int save(User user) {
    
    
        QueryWrapper<User> wrapper = new QueryWrapper<User>();
        wrapper.eq("username", user.getUsername());
        List<User> result = userRepository.selectList(wrapper);
        if (result != null && result.size()>0){
    
    
            userRepository.update(user, wrapper);
            return 2;
        } else {
    
    
            userRepository.insert(user);
            return 1;
        }
    }

    @Override
    public List<User> findAll() {
    
    
        return userRepository.selectList(null);
    }

    @Override
    public int deleteById(int uid) {
    
    
        return userRepository.deleteById(uid);
    }

    @Override
    public Map<String, Object> findPage(int pageNum, int pageSize) {
    
    
        QueryWrapper<User> wrapper = new QueryWrapper<User>();
        Page<User> page = new Page<User>(pageNum, pageSize);
        Page<User> userPage = userRepository.selectPage(page, null);
        Map<String, Object> res = new HashMap<>();
        // 分页的所有数据都在userPage对象中封装着
        // 获取总页数
        long pages = userPage.getPages();
        // 获取当前页
        long current = userPage.getCurrent();
        // 获取当前页数据集合
        List<User> records = userPage.getRecords();
        // 获取总记录数
        long total = userPage.getTotal();
        // 当前页是否有下一页
        boolean hasNext = userPage.hasNext();
        // 当前页是否有上一页
        boolean hasPrevious = userPage.hasPrevious();
        res.put("data", records);
        res.put("total", total);
        return res;
    }

    @Override
    public UserDTO login(UserDTO userDTO) {
    
    
        QueryWrapper<User> wrapper = new QueryWrapper<>();
        String username = userDTO.getUsername();
        String password = userDTO.getPassword();
        if (StrUtil.isBlank(username) || StrUtil.isBlank(password)){
    
    
            return null;
        }
        wrapper.eq("username", username).eq("password", password);
        List<User> result = userRepository.selectList(wrapper);
        if (result!=null && result.size() == 1){
    
    
            BeanUtil.copyProperties(result.get(0),userDTO);
            String token = TokenUtils.genToken(Integer.toString(result.get(0).getUid()), result.get(0).getPassword());
            userDTO.setToken(token);
            return userDTO;
        }
        return null;
    }

    @Override
    public int register(UserDTO userDTO) {
    
    
        QueryWrapper<User> wrapper = new QueryWrapper<>();
        String username = userDTO.getUsername();
        String password = userDTO.getPassword();
        if (StrUtil.isBlank(username) || StrUtil.isBlank(password)){
    
    
            return 0;
        }
        wrapper.eq("username", username);
        List<User> list = userRepository.selectList(wrapper);
        if (list!=null && list.size()>0){
    
    
            return 0;
        } else {
    
    
            User user = new User();
            user.setUsername(username);
            user.setPassword(password);
            user.setStatus(0);
            user.setNickname(STRUtils.getRandomString(10));
            return userRepository.insert(user);
        }
    }

    @Override
    public User getById(int id) {
    
    
        return userRepository.selectById(id);
    }
}

controller example

package com.ustb.springboot.controller;

import com.ustb.springboot.common.Result;
import com.ustb.springboot.controller.dto.UserDTO;
import com.ustb.springboot.entity.User;
import com.ustb.springboot.service.UserService;
import com.ustb.springboot.utils.TokenUtils;
import org.springframework.web.bind.annotation.*;

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

@RestController
@RequestMapping("/user")  //为接口统一加前缀
public class UserContorller {
    
    

    @Resource
    private UserService userService;

    //@RequestBody: 将前端的json直接映射为一个User类
    @PostMapping("/save") //新增或者更新
    public Result save(@RequestBody User user){
    
      //更新或者插入
        int data = userService.save(user);
        return Result.success(data);
    }

    @GetMapping("/getall")  //查询所有数据数据,注解依赖于上面的RestController注解
    public Result findAll(){
    
    
        List<User> all = userService.findAll();
        if (all.size()>0 && all!=null)
            return Result.success(all);
        else return Result.error();
    }

    @DeleteMapping("/{uid}")
    public Result delete(@PathVariable int uid){
    
    
        int data = userService.deleteById(uid);
        if (data>0)
            return Result.success(data);
        else return Result.error();
    }


    //@RequestParam:接受pageNum=1&pagsize=10
    @GetMapping("/page")  //实现分页查询
    public Result findPage(int pageNum, int pageSize){
    
    
        Map<String, Object> page = userService.findPage(pageNum, pageSize);
        if (page!=null)
            return Result.success(page);
        else return Result.error();
    }

    @PostMapping("/login") //新增或者更新
    public Result login(@RequestBody UserDTO userDTO){
    
      //更新或者插入
        UserDTO login = userService.login(userDTO);
        if (login!=null){
    
    
            return Result.success(login);
        }
        else return Result.error();

    }

    @PostMapping("/register")  //注册
    public Result register(@RequestBody UserDTO userDTO){
    
    
        int register = userService.register(userDTO);
        if (register != 0)
            return Result.success(register);
        else return Result.error();
    }

}

Guess you like

Origin blog.csdn.net/no1xiaoqianqian/article/details/127102899