springboot 使用mybatis plus和mysql交互

springboot工作流程:

image

1.client端向springboot一个url(即用户访问一个url)
2.springboot调用该url对应的函数(访问数据库,请求数据)
3.数据库向springboot返回数据
4.springboot向client端返回数据

@RestController是特殊版本的@Controller,用来返回Jason/xml数据,@Controller通常返回html页面

Maven仓库地址
Mybatis-Plus官网

pom.xml文件中添加依赖:
Spring Boot Starter JDBC
Project Lombok
MySQL Connector/J
mybatis-plus-boot-starter
mybatis-plus-generator

SpringBoot中的常用模块
pojo层:将数据库中的表对应成Java中的Class
mapper层(也叫Dao层):将pojo层的class中的操作,映射成sql语句
service层:写具体的业务逻辑,组合使用mapper中的操作
controller层:负责请求转发,接受页面过来的参数,传给Service处理,接到返回值,再传给页面

下面的示例将controller和service写在一起(实际上是没写service层,直接让controller层去处理逻辑了)(示例代码中的import都是自动生成的):

pojo层-backend/pojo/User.java:

package com.kob.backend.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

// 下面用 Lombok 注解来简化代码编写,自动生成常见的方法和构造方法
// pojo层 将数据库中的表对应成Java中的Class
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
    private Integer id;
    private String username;
    private String password;
}

mapper层-backend/mapper/UserMapper.java:

package com.kob.backend.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.kob.backend.pojo.User;
import org.apache.ibatis.annotations.Mapper;
// mapper层(也叫Dao层):将pojo层的class中的操作,映射成sql语句

@Mapper
public interface UserMapper extends BaseMapper<User> {
}

controller层-backend/controller/UserController.java:

controller层通过调用前面的mapper和pojo层和,实现和数据库交互。
下面的代码实现了对应的功能:

1. http://localhost:3000/user/all/ => 展示数据库所有的user
2. http://localhost:3000/user/1/ => 展示id为1的user
3. http://localhost:3000/user2/1/ => 展示id为1的user
4. http://localhost:3000/user3/2/ => 展示id大于2小于3的user
5. http://localhost:3000/user4/5/d/pd/ => 数据库中添加id为5,username为d,password为pd的user
6. http://localhost:3000/user5/delete/5/ => 删除数据库中id为5的user
package com.kob.backend.controller.user;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.kob.backend.mapper.UserMapper;
import com.kob.backend.pojo.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
public class UserController {

    @Autowired
    UserMapper userMapper;

    @GetMapping("/user/all/")
    public List<User> getAll() {
        return userMapper.selectList(null);
    }

    @GetMapping("/user/{userId}/")
    public User getuser(@PathVariable int userId) {
        return userMapper.selectById(userId);
    }
    @GetMapping("/user2/{userId}/")
    public User getuser2(@PathVariable int userId) {
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("id",userId);
        return userMapper.selectOne(queryWrapper);
    }
    @GetMapping("/user3/{userId}")
    public List<User> getuser3(@PathVariable int userId) {
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.ge("id",2).le("id",3); // 返回id大于2小于3的数据
        return userMapper.selectList(queryWrapper);
    }

    @GetMapping("/user4/{userId}/{username}/{password}/")
    public String addUser(
            @PathVariable int userId,
            @PathVariable String username,
            @PathVariable String password) {
        User user = new User(userId, username, password);
        userMapper.insert(user);
        return "add user successfully!";
    }

    @GetMapping("/user5/delete/{userId}/")
    public String deleteUser(@PathVariable int userId) {
        userMapper.deleteById(userId);
        return "delete user successfully!";
    }
}
posted @ 2024-02-20 21:17  r涤生  阅读(2)  评论(0编辑  收藏  举报