数据库表-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;
}
}
测试结果