仓库管理系统-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原因分析