以下示例满足这些关键约束:
@ToFlyAppLog*Mapper.xmlResultResponepackage com.example.demo.controller;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.common.ResultRespone;
import com.example.common.log.annotation.ToFlyAppLog;
import com.example.demo.entity.Device;
import com.example.demo.service.DeviceService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import lombok.AllArgsConstructor;
import org.springframework.web.bind.annotation.*;
import java.util.Arrays;
@RestController
@AllArgsConstructor
@RequestMapping("/device")
@Api(tags = "设备管理")
public class DeviceController {
private final DeviceService deviceService;
@GetMapping("/page")
@ApiOperation("分页查询")
public ResultRespone page(Page<Device> page, @ModelAttribute Device query) {
return ResultRespone.success(deviceService.pageQuery(page, query));
}
@GetMapping("/{id}")
@ApiOperation("按ID查询")
@ApiImplicitParams({
@ApiImplicitParam(name = "id", value = "主键ID", required = true, dataType = "Long")
})
public ResultRespone getById(@PathVariable Long id) {
return ResultRespone.success(deviceService.getById(id));
}
@PostMapping
@ToFlyAppLog(title = "设备管理-新增")
@ApiOperation("新增设备")
public ResultRespone save(@RequestBody Device device) {
return ResultRespone.success(deviceService.create(device));
}
@PutMapping
@ToFlyAppLog(title = "设备管理-修改")
@ApiOperation("修改设备")
public ResultRespone update(@RequestBody Device device) {
return ResultRespone.success(deviceService.modify(device));
}
@DeleteMapping("/{id}")
@ToFlyAppLog(title = "设备管理-删除")
@ApiOperation("按ID删除")
public ResultRespone delete(@PathVariable Long id) {
return ResultRespone.success(deviceService.removeById(id));
}
@DeleteMapping("/deleteByIds")
@ToFlyAppLog(title = "设备管理-批量删除")
@ApiOperation("按ID批量删除")
public ResultRespone deleteByIds(String ids) {
return ResultRespone.success(deviceService.removeByIds(Arrays.asList(ids.split(","))));
}
}
package com.example.demo.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.example.demo.entity.Device;
public interface DeviceService extends IService<Device> {
Page<Device> pageQuery(Page<Device> page, Device query);
Device create(Device device);
boolean modify(Device device);
}
package com.example.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.example.demo.entity.Device;
import com.example.demo.mapper.DeviceMapper;
import com.example.demo.service.DeviceService;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
@Service
@RequiredArgsConstructor
public class DeviceServiceImpl extends ServiceImpl<DeviceMapper, Device> implements DeviceService {
@Override
public Page<Device> pageQuery(Page<Device> page, Device query) {
return this.page(page, Wrappers.query(query));
}
@Override
public Device create(Device device) {
this.save(device);
return device;
}
@Override
public boolean modify(Device device) {
return this.updateById(device);
}
}
package com.example.demo.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.demo.entity.Device;
import org.apache.ibatis.annotations.Param;
public interface DeviceMapper extends BaseMapper<Device> {
Page<Device> pageCustom(Page<Device> page, @Param("q") Device query);
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.demo.mapper.DeviceMapper">
<sql id="Base_Columns">
id, device_code, device_name, status, create_time, update_time
</sql>
<resultMap id="DeviceResultMap" type="com.example.demo.entity.Device">
<id column="id" property="id"/>
<result column="device_code" property="deviceCode"/>
<result column="device_name" property="deviceName"/>
<result column="status" property="status"/>
<result column="create_time" property="createTime"/>
<result column="update_time" property="updateTime"/>
</resultMap>
<select id="pageCustom" resultMap="DeviceResultMap">
SELECT <include refid="Base_Columns"/>
FROM t_device
<where>
<if test="q != null and q.deviceName != null and q.deviceName != ''">
AND device_name LIKE CONCAT('%', #{q.deviceName}, '%')
</if>
<if test="q != null and q.status != null">
AND status = #{q.status}
</if>
</where>
ORDER BY update_time DESC
</select>
</mapper>
// 错误:在 Mapper 注解中写 SQL
@Select("select * from t_device")
List<Device> listAll();