# CRUD 示例代码(tofly-gas 风格) 以下示例满足这些关键约束: - Controller 不写业务代码 - SQL 只在 `*Mapper.xml` - 分层为 Controller -> Service -> Mapper - 返回统一结果对象(示例使用 `ResultRespone`) ## 1) Controller 示例 ```java package com.tofly.gas.demo.controller; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.tofly.common.result.ResultRespone; import com.tofly.gas.demo.entity.GasStation; import com.tofly.gas.demo.service.GasStationService; import lombok.AllArgsConstructor; import org.springframework.web.bind.annotation.*; import java.util.Arrays; @RestController @AllArgsConstructor @RequestMapping("/gasStation") public class GasStationController { private final GasStationService gasStationService; @GetMapping("/page") public ResultRespone page(Page page, @ModelAttribute GasStation query) { return ResultRespone.success(gasStationService.pageQuery(page, query)); } @GetMapping("/{id}") public ResultRespone getById(@PathVariable Long id) { return ResultRespone.success(gasStationService.getById(id)); } @PostMapping public ResultRespone save(@RequestBody GasStation entity) { return ResultRespone.success(gasStationService.create(entity)); } @PutMapping public ResultRespone update(@RequestBody GasStation entity) { return ResultRespone.success(gasStationService.modify(entity)); } @DeleteMapping("/{id}") public ResultRespone delete(@PathVariable Long id) { return ResultRespone.success(gasStationService.removeById(id)); } @DeleteMapping("/deleteByIds") public ResultRespone deleteByIds(String ids) { return ResultRespone.success(gasStationService.removeByIds(Arrays.asList(ids.split(",")))); } } ``` ## 2) Service / ServiceImpl 示例 ```java package com.tofly.gas.demo.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.tofly.gas.demo.entity.GasStation; public interface GasStationService extends IService { Page pageQuery(Page page, GasStation query); GasStation create(GasStation entity); boolean modify(GasStation entity); } ``` ```java package com.tofly.gas.demo.service.impl; import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.tofly.gas.demo.entity.GasStation; import com.tofly.gas.demo.mapper.GasStationMapper; import com.tofly.gas.demo.service.GasStationService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @Service @RequiredArgsConstructor public class GasStationServiceImpl extends ServiceImpl implements GasStationService { @Override public Page pageQuery(Page page, GasStation query) { return this.page(page, Wrappers.query(query)); } @Override public GasStation create(GasStation entity) { this.save(entity); return entity; } @Override public boolean modify(GasStation entity) { return this.updateById(entity); } } ``` ## 3) Mapper 接口示例(仅声明,不写 SQL) ```java package com.tofly.gas.demo.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.tofly.gas.demo.entity.GasStation; import org.apache.ibatis.annotations.Param; public interface GasStationMapper extends BaseMapper { Page pageCustom(Page page, @Param("q") GasStation query); } ``` ## 4) GasStationMapper.xml 示例(SQL 只放这里) ```xml id, station_code, station_name, status, create_time, update_time ```