AirSky-CRUD

数据库表-mysql

CREATE TABLE `airsky_test` (
  `User_Id` int(10) NOT NULL AUTO_INCREMENT,
  `Login_Name` varchar(50) NOT NULL,
  `Login_Password` varchar(32) NOT NULL,
  `Gender` char(1) DEFAULT NULL,
  `Contact_Phone` varchar(50) DEFAULT NULL,
  `Contact_Email` varchar(50) NOT NULL,
  `User_Name` varchar(50) NOT NULL,
  `Birthday` date DEFAULT NULL,
  `Contact_Adress` varchar(500) DEFAULT NULL,
  `Post_Code` varchar(6) DEFAULT NULL,
  `Register_Time` date NOT NULL,
  `User_Status` char(1) NOT NULL,
  `PROVINCE` varchar(10) DEFAULT NULL,
  `Last_Modefy_Time` date DEFAULT NULL,
  PRIMARY KEY (`User_Id`),
  UNIQUE KEY `Login_Name` (`Login_Name`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8;

实体类
AirSky_User.java

package com.airsky.user.entity;

import lombok.Data;
import tk.mybatis.mapper.annotation.KeySql;

import javax.persistence.Id;
import javax.persistence.Table;
import java.io.Serializable;
import java.util.Date;

/**
 * @author LT
 * @version 1.0.0
 * @ClassName AirSky_User.java
 * @Description TODO 用户实体类
 * @createTime 2020年06月28日 14:57:00
 */
@Data
@Table(name = "airsky_test")
public class AirSky_User implements Serializable {

    @Id
    @KeySql(useGeneratedKeys = true)
    private Integer userId;       // id
    private String loginName;     // 用户名
    private String loginPassword; // 密码
    private String gender;        // 性别
    private String contactPhone;  // 电话
    private String contactEmail;  // 邮箱
    private String userName;      // 用户
    private Date birthday;        // 时间
    private String contactAdress; // 地址
    private String postCode;      // 邮编
    private Date registerTime;    // 注册时间
    private String userStatus;    // 用户状态
    private String province;      // 省的缩写
    private Date lastModefyTime;  // 最后时间
}

数据访问层(通用Mapper)
UserMapper.java

package com.airsky.user.mapper;

import com.airsky.user.entity.AirSky_User;
import tk.mybatis.mapper.common.Mapper;

/**
 * @author LT
 * @version 1.0.0
 * @ClassName UserMapper.java
 * @Description TODO 用户映射器
 * @createTime 2020年06月28日 15:02:00
 */
public interface UserMapper extends Mapper<AirSky_User> {
}

业务逻辑层
UserService.java

package com.airsky.user.service;

import com.airsky.user.entity.AirSky_User;
import com.airsky.user.entity.PageResult;
import com.airsky.user.mapper.UserMapper;
import com.airsky.user.utils.Md5Util;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.mysql.cj.util.StringUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.catalina.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import tk.mybatis.mapper.entity.Example;

import java.util.List;
import java.util.regex.Pattern;

/**
 * @author LT
 * @version 1.0.0
 * @ClassName UserService.java
 * @Description TODO 用户业务层
 * @createTime 2020年06月28日 15:07:00
 */
@Slf4j
@Service
public class UserService {

    @Autowired
    private UserMapper userMapper;

    /**
     * 分页查询
     *
     * @param loginName
     * @param pageNum
     * @param pageSize
     * @return
     */
    public PageInfo<AirSky_User> queryUserByPage(String loginName, int pageNum, int pageSize) {
        // 封装开始分页页数
        PageHelper.startPage(pageNum, pageSize);
        // 封装查询语句
        Example example = new Example(AirSky_User.class);
        // 判断用户名为不为空
        if (!StringUtils.isNullOrEmpty(loginName)) {
            // 查询条件
            example.createCriteria().orLike("loginName", "%" + loginName + "%");
        }
        // 封装查询语句到集合中
        List<AirSky_User> users = userMapper.selectByExample(example);
        // 判空
        if (CollectionUtils.isEmpty(users)) {
            return null;
        }
        return new PageInfo<>(users);
    }

    /**
     * 根据用户id删除用户
     *
     * @param userId
     * @return
     */
    public String deleteByUserId(Integer userId) {
        // 根据主键查询id
        AirSky_User user = userMapper.selectByPrimaryKey(userId);
        // 判断是否为0
        if ("0".equals(user.getUserStatus())) {
            return "该用户处于禁用状态无法删除";
        }

        // 通过三元运算判断
        return userMapper.deleteByPrimaryKey(userId) == 1 ? "删除成功" : "删除失败";
    }

    /**
     * 保存用户
     *
     * @param user
     * @return
     */
    public String save(AirSky_User user) {
        // 封装通用Example查询
        Example example = new Example(AirSky_User.class);
        // 封装Example的创建标准查询
        Example.Criteria criteria = example.createCriteria();
        // 封装用户名and语句
        criteria.andEqualTo("loginName", user.getLoginName());
        // 根据Example条件进行查询总数
        int i = userMapper.selectCountByExample(example);
        // 判断是否为1
        if (i == 1) {
            return "登录名已存在";
        }

        // 封装邮编
        String regex = "^[1-9]\\d{5}$";
        if (!Pattern.matches(regex, user.getPostCode())) {
            return "邮编不正确";
        }

        // 封装MD5
        String md5Pwd = Md5Util.getMD5(user.getLoginPassword());
        // 设置登录密码为md5
        user.setLoginPassword(md5Pwd);
        // 插入用户
        int count = userMapper.insert(user);
        if (count != 1) {
            return "添加用户失败";
        }
        return "用户添加成功";
    }

    /**
     * 更新用户
     *
     * @param user
     * @return
     */
    public String update(AirSky_User user) {
        // 通过主键选择更新AirSky_User表
        int count = userMapper.updateByPrimaryKeySelective(user);
        if (count == 1) {
            return "更新成功";
        }
        return "更新失败";
    }

}

视图层
UserController.java

package com.airsky.user.controller;

import com.airsky.user.entity.AirSky_User;
import com.airsky.user.entity.PageResult;
import com.airsky.user.service.UserService;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

/**
 * @author LT
 * @version 1.0.0
 * @ClassName UserController.java
 * @Description TODO 用户控制层
 * @createTime 2020年06月28日 15:07:00
 * <p>
 * 1、 查询功能
 *  查询字段::登录名(支持模糊查询)、
 * 性别(提供下拉选择框:空值、男、女)、
 * 出生开始日期、结束日期(要求出生开始日期必须小于结束日期)、
 * 用户状态(下来列表:全部、启用、禁用)、
 * 所属省份、注册开始时间、结束时间(要求开始时间必须小于结束时间)
 * <p>
 *  查询列表,实现分页功能(物理数据库)
 * <p>
 * 2、 删除功能
 * 删除前,判断该用户是否是‘禁用’状态,否则不能
 * <p>
 * 3、 新增功能
 * 根据数据字典,完成所有的必输项、长度校验;出生日期必须年满 18 周岁、邮编必须全是数字、两次密码输入一致、登录名必须唯一、密码必须 MD5保存
 * <p>
 * 4、 修改功能(参考新增的说明)
 * 5、 复制功能(参考新增的说明)
 *
 * </p>
 */
@RestController
public class UserController {

    @Autowired
    private UserService userService;

    /**
     * 查询列表
     *
     * @param loginName
     * @param pageNum
     * @param pageSize
     * @return
     */
    @GetMapping("/list") // get请求
    public PageInfo<AirSky_User> queryUserByPage(  
            @RequestParam(required = false) String loginName,
            @RequestParam(defaultValue = "1") int pageNum,
            @RequestParam(defaultValue = "5") int pageSize) {

        PageInfo<AirSky_User> userPageResult = userService.queryUserByPage(loginName, pageNum, pageSize);
        return userPageResult;
    }

    /**
     * 按用户ID删除
     *
     * @param userId
     * @return
     */
    @DeleteMapping("/delete")
    public String deleteByUserId(Integer userId) {
        String deleteByUserId = userService.deleteByUserId(userId);
        return deleteByUserId;
    }

    /**
     * 保存用户
     *
     * @param user
     * @return
     */
    @PostMapping("save")
    public String saveUser(AirSky_User user) {
        String save = userService.save(user);
        return save;
    }

    /**
     * 更新用户
     *
     * @param user
     * @return
     */
    @PostMapping("/update")
    public String edit(AirSky_User user) {
        if (user.getUserId() != null) {
            String update = userService.update(user);

            return update;
        }
        String save = userService.save(user);
        return save;
    }

}

测试结果
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值