1. 初始化 Spring Boot 项目

首先,使用 Spring Initializr 生成一个 Spring Boot 项目,并添加以下依赖:

<dependencies>
    <!-- Spring Boot Starter Web -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!-- MyBatis Plus Starter -->
    <dependency>
        <groupId>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>3.4.3.3</version>
    </dependency>

    <!-- MySQL Connector -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <scope>runtime</scope>
    </dependency>

    <!-- Lombok -->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>

    <!-- Spring Boot Starter Test (for testing purposes) -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

2. 添加数据库配置

在 src/main/resources/application.properties 文件中添加数据库配置,并包含 user 表的 SQL 建表语句:

spring.datasource.url=jdbc:mysql://localhost:3306/your_database?useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=your_password
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

mybatis-plus.mapper-locations=classpath:/mapper/*.xml
mybatis-plus.type-aliases-package=cn.shutdown.demo.model
# User 表的 SQL 建表语句
CREATE TABLE `user` (
  `id` bigint NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `age` int DEFAULT NULL,
  `email` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

确保数据库连接信息正确,并且已经创建了一个名为 your_database 的数据库。

创建 User 实体类

在 src/main/java/cn/shutdown/demo/model 目录下创建 User.java:

package cn.shutdown.demo.model;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;

@Data
@TableName("user")
public class User {
    @TableId(type = IdType.AUTO)
    private Long id;
    private String name;
    private Integer age;
    private String email;
}

创建 UserMapper 接口

在 src/main/java/cn/shutdown/demo/mapper 目录下创建 UserMapper.java:

package cn.shutdown.demo.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import cn.shutdown.demo.model.User;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface UserMapper extends BaseMapper<User> {
    // 这里不需要写额外的代码,因为 BaseMapper 已经提供了基本的 CRUD 操作
}

创建 UserService 接口和实现类

在 src/main/java/cn/shutdown/demo/service 目录下创建 IUserService.java 和 UserServiceImpl.java:

package cn.shutdown.demo.service;

import com.baomidou.mybatisplus.extension.service.IService;
import cn.shutdown.demo.model.User;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

public interface IUserService extends IService<User> {
    IPage<User> selectUserPageByQuery(Page<User> page, UserQuery query);
}
package cn.shutdown.demo.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import cn.shutdown.demo.mapper.UserMapper;
import cn.shutdown.demo.model.User;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import cn.shutdown.demo.model.UserQuery;

public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService {
    @Override
    public IPage<User> selectUserPageByQuery(Page<User> page, UserQuery query) {
        // 这里可以根据query对象中的属性来构建动态的查询条件
        // 例如,使用MyBatis Plus的条件构造器
        return baseMapper.selectPage(page, getQueryWrapper(query));
    }

    private QueryWrapper<User> getQueryWrapper(UserQuery query) {
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        if (query.getName() != null) {
            queryWrapper.like("name", query.getName());
        }
        if (query.getEmail() != null) {
            queryWrapper.like("email", query.getEmail());
        }
        // 可以根据需要添加更多的查询条件
        return queryWrapper;
    }
}

创建 UserController 类

在 src/main/java/cn/shutdown/demo/controller 目录下创建 UserController.java:

package cn.shutdown.demo.controller;

import com.baomidou.mybatisplus.core.metadata.IPage;
import cn.shutdown.demo.model.User;
import cn.shutdown.demo.service.IUserService;
import cn.shutdown.demo.model.UserQuery;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.Optional;

@RestController
public class UserController {

    @Autowired
    private IUserService userService;

    @GetMapping("/users")
    public IPage<User> listUsers(@RequestParam(defaultValue = "1") int currentPage,
                                @RequestParam(defaultValue = "10") int pageSize,
                                @RequestParam(required = false) String name,
                                @RequestParam(required = false) String email) {
        Page<User> page = new Page<>(currentPage, pageSize);
        UserQuery query = new UserQuery();
        query.setName(name);
        query.setEmail(email);
        return userService.selectUserPageByQuery(page, query);
    }
}

配置 MyBatis Plus 分页插件

在 src/main/java/cn/shutdown/demo/config 目录下创建 MyBatisPlusConfig.java:

package cn.shutdown.demo.config;

import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MybatisPlusConfig {

    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
        return interceptor;
    }
}

运行项目

确保你的数据库已经运行,并且 user 表已经创建。运行 Spring Boot 应用程序,然后访问 http://localhost:8080/users?pageNum=1&pageSize=10 来测试分页查询。

添加模糊查询功能
如果需要添加模糊查询功能,可以按照之前的步骤进行扩展,添加 UserQuery 类、更新 UserService 和 UserMapper,并在 UserController 中添加新的接口。

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部