fast-vue管理系统的人员信息页面搭建
后端实现数据操作
这里将介绍基于springboot框架简单的页面,并进行数据操作。
1. 数据库的设计
首先我们先搭建一张人员信息表,我的取名为sys-userinfo,其中设计好自己所需的字段
2. 后端部分设计
首先我们需要先在entity中设计根据字段设计出实体类
类中的字段与数据库中的字段相对应,其中@Date注解在类上, 为类提供读写属性, 此外还提供了 equals()、hashCode()、toString() 方法,简化了代码。下面代码是我自己设计的
package com.wedu.modules.sys.entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.wedu.common.validator.group.AddGroup;
import com.wedu.common.validator.group.UpdateGroup;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.util.Date;
@Data
@TableName("sys_user_info")
public class SysUserInfoEntity {
@TableId
// ID
private Integer id;
@NotBlank(message="用户名不能为空", groups = {AddGroup.class, UpdateGroup.class})
// 用户名字
private String name;
// 用户年龄
private Integer age;
// 账户余额
private Double accountBalance;
// 创建时间
private Date createTime;
// 完成状态
private Integer completionStatus;
}
设计好字段后就可以在server层写方法,首先定义一个server接口,里面定义展示增删查改的方法,其中的展示方法我使用了分页展示,查询方法则是根据用户姓名进行查询,删除则是根据用户id进行删除。
package com.wedu.modules.sys.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.wedu.common.utils.PageUtils;
import com.wedu.modules.sys.entity.SysUserEntity;
import com.wedu.modules.sys.entity.vo.UserInfoVO;
import java.util.List;
import java.util.Map;
/**
* 系统用户
*
* @author wedu
*/
public interface SysUserService extends IService<SysUserEntity> {
PageUtils queryPage(Map<String, Object> params);
/**
* 查询用户的所有权限
* @param userId 用户ID
*/
List<String> queryAllPerms(Long userId);
/**
* 查询用户的所有菜单ID
*/
List<Long> queryAllMenuId(Long userId);
/**
* 根据用户名,查询系统用户
*/
SysUserEntity queryByUserName(String username);
/**
* 保存用户
*/
void saveUser(SysUserEntity user);
/**
* 修改用户
*/
void update(SysUserEntity user);
/**
* 删除用户
*/
void deleteBatch(Long[] userIds);
/**
* 修改密码
* @param userId 用户ID
* @param password 原密码
* @param newPassword 新密码
*/
boolean updatePassword(Long userId, String password, String newPassword);
/**
* 获取当前登录人员信息
* @return 用户信息对象
*/
UserInfoVO getLoginUserInfo();
}
接着在impl中去实现这个方法
package com.wedu.modules.sys.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.wedu.common.utils.PageUtils;
import com.wedu.common.utils.Query;
import com.wedu.modules.sys.dao.SysUserInfoDao;
import com.wedu.modules.sys.entity.SysUserInfoEntity;
import com.wedu.modules.sys.service.SysUserInfoService;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays;
import java.util.Map;
@Service("sysUserInfoService")
public class SysUserInfoServiceImpl extends ServiceImpl<SysUserInfoDao, SysUserInfoEntity> implements SysUserInfoService {
// 分页查询,查询所以数据
@Override
public PageUtils queryPage(Map<String, Object> params) {
String name = (String) params.get("name");
IPage<SysUserInfoEntity> page = this.page(
new Query<SysUserInfoEntity>().getPage(params),
new QueryWrapper<SysUserInfoEntity>()
.like(StringUtils.isNotBlank(name),"name", name)
);
return new PageUtils(page);
}
// 根据名字查询
@Override
public SysUserInfoEntity queryInfoByUserName(String name) {
return baseMapper.queryInfoByUserName(name);
}
// 保存数据(新增)
@Override
public void saveUserInfo(SysUserInfoEntity sysUserInfoEntity) {
this.saveUserInfo(sysUserInfoEntity);
}
//删除数据
@Override
public void deleteUserInfo(Integer[] id) {
this.removeByIds(Arrays.asList(id));
}
//更新数据
@Override
@Transactional
public void updateUserInfo(SysUserInfoEntity user) {
this.updateById(user);
}
}
最后再在controller进行操作,Controller层是整个Web应用程序的核心,它承担了接收和处理用户请求,调用Service层进行业务处理,然后返回请求结果给前端页面的任务。
package com.wedu.modules.sys.controller;
import com.wedu.common.annotation.SysLog;
import com.wedu.common.utils.PageUtils;
import com.wedu.common.utils.R;
import com.wedu.common.validator.ValidatorUtils;
import com.wedu.common.validator.group.AddGroup;
import com.wedu.common.validator.group.UpdateGroup;
import com.wedu.modules.sys.entity.SysUserEntity;
import com.wedu.modules.sys.entity.SysUserInfoEntity;
import com.wedu.modules.sys.service.SysUserInfoService;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.Date;
import java.util.Map;
@RestController
@RequestMapping("/sys/userinfo")
public class SysUserInfoController {
@Autowired
private SysUserInfoService sysUserInfoService;
@GetMapping("/list")
@RequiresPermissions("sys:user:list")
//查询并返回一个列表数据
public R list(@RequestParam Map<String, Object> params){
//将查询结果封装成PageUtils对象
PageUtils page = sysUserInfoService.queryPage(params);
//返回包含键值对为page的R对象
return R.ok().put("page", page);
}
@GetMapping("/info/{id}")
@RequiresPermissions("sys:userinfo:info")
public R info(@PathVariable("id") Integer id){
SysUserInfoEntity user = sysUserInfoService.getById(id);
return R.ok().put("user", user);
}
@SysLog("存储数据")
@PostMapping("/save")
@RequiresPermissions("sys:userinfo:save")
public R save(@RequestBody SysUserInfoEntity sysUserInfoEntity){
ValidatorUtils.validateEntity(sysUserInfoEntity, AddGroup.class);
sysUserInfoEntity.setCreateTime(new Date());
sysUserInfoService.save(sysUserInfoEntity);
return R.ok();
}
@SysLog("删除用户")
@RequiresPermissions("sys:userinfo:delete")
@PostMapping("/delete")
public R delete(@RequestBody Integer[] ids){
sysUserInfoService.deleteUserInfo(ids);
return R.ok();
}
@SysLog("更新用户")
@RequiresPermissions("sys:userinfo:update")
@PostMapping("/update")
public R update(@RequestBody SysUserInfoEntity user){
ValidatorUtils.validateEntity(user, AddGroup.class);
user.setCreateTime(new Date());
sysUserInfoService.updateUserInfo(user);
return R.ok();
}
}
}
最后在与前端进行数据交互后即可进行操作,后续操作在后面将介绍。