SpringBoot结合Mybatis实现数据的【增删改查】

记录跟着青戈学毕设,一切来源于B站up主 @程序员青戈


数据库的一个表对应一个实体类
mapper是存放Mybatis接口的地方
在这里插入图片描述
postman
在这里插入图片描述
在这里插入图片描述


一、增

UserController.java

    /**
     * 新增用户信息
     */
    @PostMapping("/add")
//    前端 -> UserController -> UserService -> UserMapper
//    ①这个user是从前端页面传进来的 由前端传给Controller
    public Result add(@RequestBody User user) {
//        try catch 以更加优雅的方式处理数据
        try {
            userService.insertUser(user);//②再将这个user传给userService
        } catch (Exception e) {
            if (e instanceof DuplicateKeyException) {
                return Result.error("插入数据库错误");
            } else {
                return Result.error("系统错误");
            }
        }
        return Result.success();
    }

UserService.java

    public void insertUser(User user){
        userMapper.insert(user);  //③userService再将user传给userMapper
    }

UserMapper.java

//    将user对象属性里的值插到数据库里去
//    ④最后通过一个sql去执行
    @Insert("insert into `user` (username,password,name,phone,email,address,avatar) " +
            "values (#{username},#{password},#{name},#{phone},#{email},#{address},#{avatar})")
    void insert(User user);

二、删

  • 单个删除

UserController.java

    /**
     * 指定删除用户信息
     */
    @DeleteMapping("/delete/{id}")
    public Result delete(@PathVariable Integer id) {
        userService.deleteUser(id);
        return Result.success();
    }

UserService.java

    public void deleteUser(Integer id) {
        userMapper.deleteUser(id);
    }

UserMapper.java

//    删除
    @Delete("delete from `user` where id = #{id}")//不写id的话就把整张表给删了
    void deleteUser(Integer id);
  • 批量删除
    传递一个数组,利用循环进行删除批量数据

UserController.java

    /**
     * 批量删除用户信息
     */
    @DeleteMapping("/delete/batch")
    public Result batchDelete(@RequestBody List<Integer> ids) {   //  [2,6,7]
        userService.batchDeleteUser(ids);
        return Result.success();
    }

UserService.java (循环)

    public void batchDeleteUser(List<Integer> ids) {
        for (Integer id : ids) {
            userMapper.deleteUser(id);   //  2  6  7
        }
    }

UserMapper.java (同单个删除,不变)


三、改

UserController.java

    /**
     * 修改用户信息
     */
    @PutMapping("/update")
    public Result update(@RequestBody User user) {
        userService.updateUser(user);
        return Result.success();
    }

UserService.java

    public void updateUser(User user) {
        userMapper.updateUser(user);
    }

UserMapper.java

//    修改
    @Update("update `user` set username = #{username}, password = #{password}, name = #{name}, " +
            "phone=#{phone}, email=#{email}, address=#{address}, avatar=#{avatar} where id=#{id}")
    void updateUser(User user);

四、查

  • 全部查询

请求成功,但是未返回数据?在这里插入图片描述
未设置返回数据
在这里插入图片描述
设置后就查询得到了
在这里插入图片描述
UserController.java

    /**
     * 查询全部用户信息
     */
    @GetMapping("/selectAll")
    public Result selectAll() {
        List<User> userList = userService.selectAll();
        return Result.success(userList);
    }

UserService.java

    public List<User> selectAll() {
        return userMapper.selectAll();
    }

UserMapper.java

//    查询所有
    @Select("select * from `user`")
    List<User> selectAll();
  • 排序查询
    asc 正序排序(默认) desc 倒序排序

UserController.java

    /**
     * 倒序查询全部用户信息
     */
    @GetMapping("/desc")
    public Result selectDesc() {
        List<User> userList = userService.selectDesc();
        return Result.success(userList);
    }

UserService.java

    public List<User> selectDesc() {
        return userMapper.selectDesc();
    }

UserMapper.java

//   倒序查询 desc
    @Select("select * from `user` order by id desc")
    List<User> selectDesc();
  • 单条件

UserController.java

    /**
     * 单条件查询 据id查询
     */
    @GetMapping("/selectById/{id}")
    public Result selectById(@PathVariable Integer id) {
        User user = userService.selectById(id);
        return Result.success(user);
    }

UserService.java

    public User selectById(Integer id) {
        return userMapper.selectById(id);
    }

UserMapper.java

//    单条件查询
    @Select("select * from `user` where id = #{id} order by id desc")
    User selectById(Integer id);
  • 多条件

UserController.java

    /**
     * 多条件查询
     */
    @GetMapping("/selectByMore")
    public Result selectByMore(@RequestParam String username, @RequestParam String name) {
        List<User> userList = userService.selectByMore(username , name);
        return Result.success(userList);
    }

UserService.java

    public List<User> selectByMore(String username, String name) {
        return userMapper.selectByMore(username,name);
    }

UserMapper.java

//    多条件查询
    @Select("select * from `user` where username = #{username} and name = #{name} order by id desc")
    List<User> selectByMore(@Param("username") String username, @Param("name") String name);
  • 模糊查询

SQL语句 ( UserMapper.java)

//    模糊查询  多条件全模糊查询
    @Select("select * from `user` where username like concat('%', #{username},'%') and name like concat('%', #{name},'%') order by id desc")
    List<User> selectByLike(String username, String name);
  • 分页多条件模糊查询

计算limit : ( pageNum - 1) * pageSize

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值