注意事项
统一响应结构
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Result {
private Integer code;//响应码,1 代表成功; 0 代表失败
private String msg; //响应信息 描述字符串
private Object data; //返回的数据
//增删改 成功响应
public static Result success(){
return new Result(1,"success",null);
}
//查询 成功响应
public static Result success(Object data){
return new Result(1,"success",data);
}
//失败响应
public static Result error(String msg){
return new Result(0,msg,null);
}
}
开发流程
@Slf4j
@RestController()
@RequestMapping("/depts")
public class DeptController {
@Autowired
private DeptService deptService;
@GetMapping
public Result deptList(){
List<Dept> list = deptService.list();
log.info("查询部门数据",list.toString());
return Result.success(list);
}
}
public interface DeptService {
List<Dept> list();
}
@Service
public class DeptServiceImpl implements DeptService {
@Autowired
private DeptMapper deptMapper;
@Override
public List<Dept> list() {
return deptMapper.list();
}
}
@Mapper
public interface DeptMapper {
@Select("select id, name, create_time, update_time from dept")
List<Dept> list();
}
@GetMapping
public Result deptList(){
List<Dept> list = deptService.list();
log.info("查询部门数据",list.toString());
return Result.success(list);
}
void deleteDept(Integer id);
@Override
public void deleteDept(Integer id) {
deptMapper.deleteDept(id);
}
@Delete("delete from dept where id = #{id}")
void deleteDept(Integer id);
@PostMapping
public Result addDept(@RequestBody Dept dept){
deptService.addDept(dept);
return Result.success();
}
void addDept(Dept dept);
@Override
public void addDept(Dept dept) {
deptMapper.addDept(dept);
}
@PutMapping
public Result updateDept(@RequestBody Dept dept){
deptService.updateDempt(dept);
return Result.success();
}
@GetMapping("/{id}")
public Result selectById(@PathVariable Integer id){
Dept dept = deptService.getDeptById(id);
return Result.success(dept);
}
void updateDempt(Dept dept);
Dept getDeptById(Integer id);
@Override
public void updateDempt(Dept dept) {
dept.setUpdateTime(LocalDateTime.now());
deptMapper.updateDept(dept);
}
@Override
public Dept getDeptById(Integer id) {
return deptMapper.getDeptById(id);
}
@Update("update dept set name = #{name},update_time = #{updateTime} where id = #{id}")
void updateDept(Dept dept);
@Select("select id, name, create_time, update_time from dept where id = #{id}")
Dept getDeptById(Integer id);
后台要的数据只是一个,而后台需要传输总条数和当前查询出来的对象集合——封装为一个对象,响应前端
@Slf4j
@RestController
@RequestMapping("/emps")
public class EmpController {
@Autowired
private EmpService empService;
@GetMapping
public Result getEmps(@RequestParam(defaultValue = "1") Integer page,
@RequestParam(defaultValue = "5")Integer pageSize) {
PageModel pageModel = empService.getEmpsPage(page,pageSize);
log.info("总条数",pageModel.getTotal().toString());
return Result.success(pageModel);
}
}
@RequestParam的属性defaultValue可以来设置参数的默认值
public interface EmpService {
PageModel getEmpsPage(Integer page, Integer pageSize);
}
@Service
public class EmpServiceImpl implements EmpService {
@Autowired
private EmpMapper empMapper;
@Override
public PageModel getEmpsPage(Integer page, Integer pageSize) {
Integer count = empMapper.count();
page = (page-1)*pageSize;
List<Emp> empList = empMapper.getEmpsPage(page,pageSize);
PageModel pageModel = new PageModel(count,empList);
return pageModel;
}
}
@Mapper
public interface EmpMapper {
@Select("select count(*) from emp")
Integer getCount();
@Select("select * from emp limit #{page},#{pageSize}")
List<Emp> getEmpsPage(Integer page,Integer pageSize);
}
依赖
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.4.1</version>
</dependency>
EmpController不变,同上
EmpService不变,同上
EmpServiceImpl
@Override
public PageModel getEmpsPage(Integer page, Integer pageSize) {
//1.设置分页参数
PageHelper.startPage(page,pageSize);
//2.执行查询
List<Emp> emps = empMapper.getEmpsPage();
Page<Emp> p = (Page<Emp>) emps;
//3.封装
PageModel pageModel = new PageModel(p.getTotal(),p.getResult());
return pageModel;
}
@Select("select * from emp")
List<Emp> getEmpsPage();
@GetMapping
public Result getEmps(@RequestParam(value = "name",required = false) String name,
@RequestParam(value = "gender",required = false) Short gender,
@DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate begin,
@DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate end,
@RequestParam(defaultValue = "1") Integer page,
@RequestParam(defaultValue = "5")Integer pageSize) {
PageModel pageModel = empService.getEmpsPage(name,gender,begin,end,page,pageSize);
log.info("总条数",pageModel.getTotal().toString());
return Result.success(pageModel);
}
PageModel getEmpsPage(String name, Short gender, LocalDate begin, LocalDate end, Integer page, Integer pageSize);
@Override
public PageModel getEmpsPage(String name, Short gender, LocalDate begin, LocalDate end, Integer page, Integer pageSize) {
//1.设置分页参数
PageHelper.startPage(page,pageSize);
//2.执行查询
List<Emp> emps = empMapper.getEmpsPage(name,gender,begin,end);
Page<Emp> p = (Page<Emp>) emps;
//3.封装
PageModel pageModel = new PageModel(p.getTotal(),p.getResult());
return pageModel;
}
List<Emp> getEmpsPage(String name, Short gender, LocalDate begin, LocalDate end);
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mhn.mapper.EmpMapper">
<select id="getEmpsPage" resultType="com.mhn.pojo.Emp">
select id, username, password, name, gender, image, job, entrydate, dept_id, create_time, update_time
from emp
<where>
<if test="name != null and name != ''">name like concat('%',#{name},'%')</if>
<if test="gender != null">and gender = #{gender}</if>
<if test="begin!=null and end!=null">
and entrydate between #{begin} and #{end}
</if>
</where>
order by update_time DESC
</select>
</mapper>
@DeleteMapping("/{ids}")
public Result deleteEmpByIds(@PathVariable List<Integer> ids){
empService.deleteEmpByIds(ids);
return Result.success();
}
void deleteEmpByIds(List<Integer> ids);
@Override
public void deleteEmpByIds(List<Integer> ids) {
empMapper.deleteEmpByIds(ids);
}
void deleteEmpByIds(List<Integer> ids);
<delete id="deleteEmpByIds">
delete from emp where id in
<foreach collection="ids" item="id" separator="," open="(" close=")">
#{id}
</foreach>
</delete>