本次工作总结
后台管理系统:
用户后台数据管理:包括查询、新增、修改、删除
新闻后台数据管理:包括查询、批量导入、修改、删除
相关代码实现
所有用户
用户列表,用于后台管理数据的查看所有用户
Controller层:
@GetMapping("/userlist")
@ResponseBody
public ResultBean userlist(@RequestParam(defaultValue = "1") Integer page,
@RequestParam(defaultValue = "10") Integer limit){
List<User> users = userService.getPaper(page,limit);
int size = userService.getAllUsers().size();
return new ResultBean(200,"查询成功",size,users);
}
Service层(分页查询所有用户):
@Override
public List<User> getPaper(int page, int limit) {
PageParams pageParams = new PageParams(page,limit);
List<User> users = userMapper.listUserByParams((pageParams.getPageNum()-1)*pageParams.getPageSize(), pageParams.getPageSize());
int size = users.size();
int count=0;
int pageSize = pageParams.getPageSize();
if(size%pageSize!=0){
count=pageSize-size%pageSize;
}
for(int i=0;i<count;i++){
users.add(new User());
}
return users;
}
Mapper查询语句:
<select id="listUserByParams" resultType="com.sanelysong.riscv.pojo.User">
SELECT *
FROM t_user
limit #{pageStart},#{pageSize}
</select>
更新用户
更新某一个用户的信息
Controller层:
@GetMapping("/updateuser")
public Result updateuser(@Valid User user, HttpServletRequest request, HttpServletResponse response){
return userService.updateUser(user);
}
Service层:
@Override
public Result updateUser(User user) {
if(user != null){
if(user.getSignature() == "" || user.getSignature() == null){
user.setSignature("这个人很懒,什么都没写");
}
userMapper.updateById(user);
return Result.success("修改用户信息成功");
}else {
return Result.fail(404,"修改失败");
}
}
逻辑比较简单,就不赘述了。
删除用户
Controller层:
@GetMapping("deleteuser")
public Result deleteuser(@PathVariable("id") Long id){
return userService.deleteuser(id);
}
Service层:
@Override
public Result deleteuser(Long id) {
userMapper.deleteById(id);
return Result.success("删除成功");
}
新增用户
Controller层:
@PostMapping("adduser")
public Result adduser(@Valid User user){
return userService.addUser(user);
}
Service层:
@Override
public Result addUser(User user) {
userMapper.insert(use @Override
public Result addUser(User user) {
//判断邮箱是否已存在
User user2 = userMapper.selectOne(new QueryWrapper<User>().eq("email",user.getEmail()));
if(user == null || user2 != null){
return Result.fail(404,"插入失败,请检查数据");
}else {
String password = user.getPassword();
//密码加密
user.setPassword(MD5Util.md5OneTime(password));
userMapper.insert(user);
return Result.success("插入成功");
}
}
r);
return Result.success("插入成功");
}
批量导入新闻
因为新闻的增删改查和用户的增删改查逻辑相同,所以这了只写了新闻的批量导入
ExcelUtil工具类在前几篇博客已经写到过,这里就不再写了。
Controller层:
@PostMapping("/uplodaNews")
public Result uploadNews(@RequestParam("file") MultipartFile file) throws IOException {
String fileName = file.getOriginalFilename(); // 获取文件名
InputStream is = null;
try{
is = file.getInputStream();
List<Map> paperList = newsService.getListByExcel(is,fileName);// 获取解析后的List集合
System.out.println(paperList.toString());
Boolean result = newsService.batchImportStuInfo(paperList); // 把数据插入数据库
if (result){
return Result.success("上传成功");
}else {
return Result.fail(403,"上传失败");
}
}catch (Exception e){
e.printStackTrace();
} finally {
is.close();
}
return Result.fail(403,"文件出错");
}
Service层:
@Override
public List<Map> getListByExcel(InputStream is, String fileName) {
try{
List<Map> newsList = new ExcelUtils(new News()).analysisExcel(is, fileName);
return newsList;
}catch (Exception e){
e.printStackTrace();
}
return new ArrayList<>();
}
@Override
public Boolean batchImportStuInfo(List<Map> newslist) {
Integer flag = newsMapper.batchImportInfo(newslist);
if (flag > 0){
return true;
} else return false;
}
Mapper层:
<insert id="batchImportInfo" parameterType="java.util.List">
insert into t_news values
<foreach item="item" collection="list" separator=",">
(#{item.id},#{item.title},#{item.content},#{item.time},#{item.link})
</foreach>
</insert>
个人总结
因为项目使用到了Mybatis-plus,所以许多数据库查询语句使用起来都比较方便。
完成了后台管理的部分功能,这样以后更新数据会更加方便。