当前位置: 首页 > news >正文

仓库管理系统-2-后端之基于继承基类的方式实现增删改查

文章目录

  • 1 数据库表user
  • 2 后端通用框架
    • 2.1 User.java(实体类)
    • 2.2 使用封装的方法(继承基类)
      • 2.2.1 UserMapper.java(mapper接口)
      • 2.2.2 UserService.java(service接口)
      • 2.2.3 UserServiceImpl.java(service实现类)
      • 2.2.4 UserController.java(控制器)
  • 3 增删改查(封装的方法)
    • 3.1 UserController.java
    • 3.2 查询userService.list()
    • 3.3 新增userService.save(user)
    • 3.4 修改userService.updateById(user)
    • 3.5 新增或修改userService.saveOrUpdate(user)
    • 3.6 删除userService.removeById(user.getId())
    • 3.7 模糊查询userService.list(queryWrapper)
  • 4 附录
    • 4.1 LomBok的@Data注解失效问题
    • 4.2 the key is primitive警告问题
    • 4.3 参考附录

查询list()、新增save(user)、修改updateById(user)、新增或修改saveOrUpdate(user)、删除removeById(user.getId())、模糊查询list(queryWrapper)。

1 数据库表user

create table user(id int auto_increment primary key comment '主键',account varchar(20) null comment '账号',name varchar(100) not null comment '名字',password varchar(20) not null comment '密码',age int null comment '年龄',sex int null comment '性别 1男 2女',phone varchar(20) null comment '电话',role_id int null comment '角色 0:超级管理员 1:管理员 2:普通账户',isValid varchar(4) default 'Y' null comment '是否有效,Y有效,其他无效'
);

添加一条数据
在这里插入图片描述

2 后端通用框架

(1)创建实体类。
(2)创建mapper接口。
(3)创建service接口。
(4)创建service实现类。
(5)创建配置文件【封装的方法不需要,自定义的方法需要】。
(6)创建控制器。

2.1 User.java(实体类)

在这里插入图片描述

package com.zb.wms.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import lombok.Data;@Data
public class User {@TableId(value="id",type = IdType.AUTO)private Integer id;private String account;private String name;private String password;private Integer age;private Integer sex;private String phone;@TableField("role_id")private Integer roleId;@TableField("isValid")private String isValid;
}

2.2 使用封装的方法(继承基类)

在这里插入图片描述

2.2.1 UserMapper.java(mapper接口)

在这里插入图片描述

package com.zb.wms.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.zb.wms.entity.User;
import org.apache.ibatis.annotations.Mapper;@Mapper
public interface UserMapper extends BaseMapper<User> {
}

2.2.2 UserService.java(service接口)

在这里插入图片描述

package com.zb.wms.service;import com.baomidou.mybatisplus.extension.service.IService;
import com.zb.wms.entity.User;public interface UserService extends IService<User> {
}

2.2.3 UserServiceImpl.java(service实现类)

在这里插入图片描述

package com.zb.wms.service;import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.zb.wms.entity.User;
import com.zb.wms.mapper.UserMapper;
import org.springframework.stereotype.Service;@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
}

2.2.4 UserController.java(控制器)

package com.zb.wms.controller;import com.zb.wms.entity.User;
import com.zb.wms.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;import java.util.List;@RestController
public class UserController {@Autowiredprivate UserService userService;@GetMapping("/list")public List<User> list() {return userService.list();}
}

注解@RestController会将结果自动转成json返回,json中的数值和字符串与实体类对应。
在这里插入图片描述

3 增删改查(封装的方法)

User.java---实体
UserMapper.java---继承--->BaseMapper<User>
UserService.java---继承--->IService<User>
UserServiceImpl.java---继承--->ServiceImpl<UserMapper,User>
UserServiceImpl.java---实现--->UserService
UserController.java---使用--->UserService

3.1 UserController.java

package com.zb.wms.controller;import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.zb.wms.entity.User;
import com.zb.wms.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;import java.util.List;@RestController
public class UserController {@GetMapping("/")public String hello() {return "hello world";}
}

在这里插入图片描述

3.2 查询userService.list()

@RestController
public class UserController {@Autowiredprivate UserService userService;@GetMapping("/list")public List<User> list() {return userService.list();}
}

在这里插入图片描述

3.3 新增userService.save(user)

@RestController
public class UserController {@Autowiredprivate UserService userService;// 新增@PostMapping("/save")public boolean save(@RequestBody User user) {return userService.save(user);}
}

id是自增长的,可以不用传递。
在这里插入图片描述

3.4 修改userService.updateById(user)

@RestController
public class UserController {@Autowiredprivate UserService userService;// 修改@PostMapping("/mod")public boolean mod(@RequestBody User user) {return userService.updateById(user);}
}

在这里插入图片描述
id使用字符串也行,但最好还是与定义的类型保持一致。
在这里插入图片描述

3.5 新增或修改userService.saveOrUpdate(user)

@RestController
public class UserController {@Autowiredprivate UserService userService;// 新增或修改@PostMapping("/saveOrMod")public boolean saveOrMod(@RequestBody User user) {return userService.saveOrUpdate(user);}
}

(1)没有传递id就是新增。
在这里插入图片描述
(2)传递了id就是修改。
在这里插入图片描述

3.6 删除userService.removeById(user.getId())

@RestController
public class UserController {@Autowiredprivate UserService userService;// 删除@PostMapping("/delete")public boolean delete(@RequestBody User user) {return userService.removeById(user.getId());}
}

在这里插入图片描述

3.7 模糊查询userService.list(queryWrapper)

@RestController
public class UserController {@Autowiredprivate UserService userService;// 查询(模糊匹配)@PostMapping("/listP")public List<User> listP(@RequestBody User user) {QueryWrapper<User> queryWrapper = new QueryWrapper<>();queryWrapper.like("name", user.getName());return userService.list(queryWrapper);}
}

在这里插入图片描述

4 附录

4.1 LomBok的@Data注解失效问题

pom.xml的build标签中,将其余内容删除,只保留如下内容就可以了。
在这里插入图片描述

4.2 the key is primitive警告问题

在这里插入图片描述

@TableId(value="id",type = IdType.AUTO)
private int id;

该警告提示主键字段id是原始类型primitive【原始的】,不推荐使用。解决方案是将主键类型从int改为Integer这样的包装类。

@TableId(value="id",type = IdType.AUTO)
private Integer id;

4.3 参考附录

参考在线项目生成向导https://start.spring.io/
参考Spring项目–@Data注解失效问题
参考启动WARN:This primary key of “id“ is primitive !不建议如此请使用包装类 in Class原因分析

http://www.dtcms.com/a/301565.html

相关文章:

  • 【RL第三篇】REINFORCE Leave-One-Out(RLOO)算法(基于留一法的REINFORCE策略梯度算法)
  • RK3568基于mpp实现硬解码(一):mpp库的编译使用
  • [每周一更]-(第151期):Go语言中的Map、Slice、Array和Hash原理详解
  • 博士招生 | 香港大学 招收人工智能和网络安全方向 博士生
  • 7.27 状态机dp|质数线性筛|序列化树
  • Linux网络-------2.应⽤层⾃定义协议与序列化
  • SpringBoot实现Serverless:手撸一个本地函数计算引擎
  • mcu trace工具调研
  • elasticsearch 倒排索引原理详解
  • SpringBoot3整合Redis
  • 零基础学习性能测试第五章:性能瓶颈分析与调优-网络资源瓶颈分析与优化建议
  • Python调用大模型api并部署到前端的主流技术栈以及具体框架对比
  • 【牛客网C语言刷题合集】(四)
  • Java类加载器与双亲委派模型
  • n8n “Run Once for All Items“和“Run Once for Each Item“区别
  • 深度学习中的计算图与自动微分原理:静态图与动态图的实现差异
  • sd Function 学习笔记
  • BeautifulSoup 使用详解与实战示例
  • WAIC 2025 热点解读:如何构建 AI 时代的“视频神经中枢”?
  • WordPress 网站中的“mu-plugins”隐藏后门
  • [每周一更]-(第152期):Go中的CAS(Compare-And-Swap)锁原理详解
  • Java面试宝典:MySQL性能优化
  • ES6模块详解:核心语法与最佳实践
  • 编码器和解码器风格的Transformer架构
  • 使用vue2和 element-ui 做一个点餐收银台系统前端静态项目
  • 数据江湖的“三国演义”:数据仓库、数据湖与湖仓一体的全景对比
  • Gradio全解8——ChatInterfaceChatbot:聊天界面类与聊天机器人(4)——返回复杂响应与直接修改Chatbot值
  • Java Ai(day03)
  • 【秋招笔试】7月26日科大讯飞秋招第一题
  • 【最新最完整】SpringAI-1.0.0开发MCP Server,搭建MCP Client 实战笔记(进阶+详细+完整代码)