小白练习-使用springboot+mybatis-plus实现基础的增删改查

以下内容仅供自己学习使用,侵权必删

  1. 实体类
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Data;

@Data
@TableName(value = "sys_user")
public class User {
    @TableId(type = IdType.AUTO)
    private Integer id;
    private String username;
    @JsonIgnore //不展示这个信息给前端
    private String password;
    private String nickname;
    private String email;
    private String phone;
    private String address;
}

  1. controller控制器
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.el.springboot.entity.User;
import com.el.springboot.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;


import java.util.List;


@RestController
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;

    /**
     * 查询管理员列表
     *
     * @return
     */
    @GetMapping("/all")
    public List<User> findAll() {
        return userService.list();
    }

    /**
     * 新增或修改
     */
    @PostMapping("/save")
    public Boolean save(@RequestBody User user) {
        return userService.saveUser(user); //saveUser是调用了Service类的方法
    }

    /**
     *根据id进行删除
     */
    @DeleteMapping("/{id}")
    public Boolean delete(@PathVariable Integer id) {
        return userService.removeById(id);
    }

    /**
     * 批量删除
     */
    @PostMapping("/del/batch")
    public Boolean deleteBatch(@RequestBody List<Integer> ids) {
        return userService.removeBatchByIds(ids);
    }

    /**
     * 分页查询
     *
     * @param pageNum
     * @return SELECT * from sys_user LIMIT 0,2;--第一页
     * --(2-1)*2=2
     * SELECT * from sys_user LIMIT 2,2;--第二页
     * --(3-1)*2=4
     * SELECT * from sys_user LIMIT 4,2;--第三页
     * limit第一个参数=(pageSize-1)*pageNum
     */
    //@GetMapping("/page")
    //public Map<String, Object> findPage(
    //        @RequestParam Integer pageNum,
    //        @RequestParam Integer pageSize,
    //        @RequestParam String username
    //) {
    //    pageNum = (pageNum - 1) * pageSize;
    //    List<User> data = userMapper.selectPage(pageNum, pageSize,username);
    //    Integer total = userMapper.selectTotal(username);
    //    Map<String, Object> res = new HashMap<>();
    //    res.put("total", total);//返回总条数
    //    res.put("data", data);//返回数据
    //    res.put("pageNum", pageNum);//页数
    //    res.put("pageSize", pageSize);//条
    //    return res;
    //}

    /**
     * 分页查询
     */
    @GetMapping("/page")
    public IPage<User> findPage(@RequestParam Integer pageNum,
                                @RequestParam Integer pageSize,
                                @RequestParam(defaultValue = "") String username,
                                @RequestParam(defaultValue = "") String email,
                                @RequestParam(defaultValue = "") String address
    ) {
        IPage<User> page = new Page<>(pageNum, pageSize);
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        if (!"".equals(username)) {
            queryWrapper.like("username", username);
        }
        if (!"".equals(email)) {
            queryWrapper.like("email", email);
        }
        if (!"".equals(address)) {
            queryWrapper.like("address", address);
        }
        queryWrapper.orderByDesc("id");
        return userService.page(page, queryWrapper);
    }
}

  1. config配置mybatis-plus分页插件
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
@MapperScan("com.el.springboot.mapper")
public class MybatisPlusConfig {
    /**
     * 新的分页插件,一缓和二缓遵循mybatis的规则,需要设置 MybatisConfiguration#useDeprecatedExecutor = false 避免缓存出现问题(该属性会在旧插件移除后一同移除)
     */
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
        return interceptor;
    }
}

  1. service类
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.el.springboot.entity.User;
import com.el.springboot.mapper.UserMapper;
import org.springframework.stereotype.Service;

@Service
public class UserService extends ServiceImpl<UserMapper,User> {

    public Boolean saveUser(User user) {
        //if (user.getId() == null) {
        //    return save(user);
        //}
        //return updateById(user);
        return  saveOrUpdate(user); //saveOrUpdate是mybatis-plus自带的
    }
}
  1. mapper类
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.el.springboot.entity.User;


//@Mapper //因为在配置类那边扫描了全部,所以这里可以注释起来
public interface UserMapper extends BaseMapper<User> {

}
  1. 使用postman测试
    image
posted @ 2023-03-18 23:54  Amyel  阅读(148)  评论(0)    收藏  举报