springboot简单增删改查+分页

一、项目结构

project-name
├── backend  # 后端代码目录
│   ├── src
│   │   ├── main
│   │   │   ├── java
│   │   │   │   ├── com.example.project.controller  # 控制器包
│   │   │   │   ├── com.example.project.mapper      # Mapper接口和XML文件包
│   │   │   │   ├── com.example.project.model       # 模型包
│   │   │   │   ├── com.example.project.service     # 业务逻辑包
│   │   │   │   └── com.example.project.util        # 工具类包
│   │   │   ├── resources
│   │   │   │   ├── mapper                          # 存放Mapper对应的XML文件
│   │   │   │   ├── mybatis-config.xml              # MyBatis主配置文件
│   │   │   │   └── application.properties          # 数据库连接配置文件
│   │   │   └── static
│   │   │       ├── css                             # CSS文件目录
│   │   │       ├── js                              # JavaScript文件目录
│   │   │       └── images                          # 图片目录
│   └── pom.xml     # Maven项目配置文件

二、曾删改查+分页

2-1、数据库

-- 创建名为 users 的表,并插入初始数据
CREATE TABLE users (
    id INT PRIMARY KEY AUTO_INCREMENT, -- 用户ID,主键,自动递增
    username VARCHAR(50) NOT NULL,      -- 用户名,不能为空
    password VARCHAR(50) NOT NULL      -- 密码,不能为空
);

-- 向 users 表中插入多行数据,包括用户名和密码
INSERT INTO users (username, password) VALUES
    ('alice', 'alicepassword'), 
    ('bob', 'bobpassword'),     
    ('charlie', 'charliepassword'); 

2-2、pom.xml依赖

<project xmlns="http://maven.apache.org/POM/4.0.0" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
         http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>myproject</artifactId>
    <version>1.0.0</version>

    <dependencies>
        <!-- Spring Framework -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.3.9</version>
        </dependency>

        <!-- Hibernate ORM -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>5.6.2.Final</version>
        </dependency>

        <!-- Apache Commons Lang -->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-lang3</artifactId>
            <version>3.12.0</version>
        </dependency>

        <!-- Log4j -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>

        <!-- JUnit for testing -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.13.2</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
    
    <build>
        <sourceDirectory>src</sourceDirectory>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <!-- 其他插件 -->
        </plugins>
    </build>
</project>

2-3、application.properties

# 服务器端口
server.port=8080

# 数据库连接配置
spring.datasource.url=jdbc:mysql://localhost:3306/mydatabase
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

# 日志级别配置
logging.level.root=INFO
logging.level.org.springframework.web=DEBUG

# 其他自定义配置


2-4、实体类 User

package com.example.model;

public class User {
    private Long id;  // 用户ID
    private String username;  // 用户名
    private String password;  // 密码
    // 其他字段和对应的getters/setters方法 或者用注解
}

2-5、Mapper 层

package com.example.mapper;

import org.apache.ibatis.annotations.Param;
import com.example.model.User;

import java.util.List;

public interface UserMapper {
    // 根据ID查找用户
    User selectById(@Param("id") Long id);
    // 查找所有用户
    List<User> selectAll();
    // 插入用户
    void insert(User user);
    // 更新用户
    void update(User user);
    // 根据偏移量和大小分页查询用户
    List<User> selectByPage(@Param("offset") int offset, @Param("size") int size);
}

2-6、userMapper.xml 配置文件

<?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.mapper.UserMapper">

    <!-- 根据ID查询用户 -->
    <select id="selectById" resultType="com.example.model.User">
        SELECT * FROM users WHERE id = #{id}
    </select>

    <!-- 查询所有用户 -->
    <select id="selectAll" resultType="com.example.model.User">
        SELECT * FROM users
    </select>

    <!-- 插入用户 -->
    <insert id="insert" parameterType="com.example.model.User">
        INSERT INTO users (username, password) VALUES (#{username}, #{password})
    </insert>

    <!-- 更新用户 -->
    <update id="update" parameterType="com.example.model.User">
        UPDATE users SET username = #{username}, password = #{password} WHERE id = #{id}
    </update>

    <!-- 根据偏移量和大小分页查询用户 -->
    <select id="selectByPage" resultType="com.example.model.User">
        SELECT * FROM users LIMIT #{offset}, #{size}
    </select>

</mapper>

2-7、Service 层UserService 接口

package com.example.service;

import com.example.model.User;

import java.util.List;

public interface UserService {
    // 根据ID获取用户
    User getUserById(Long id);
    // 获取所有用户
    List<User> getAllUsers();
    // 创建用户
    void createUser(User user);
    // 更新用户
    void updateUser(User user);
    // 删除用户
    void deleteUser(Long id);
    // 分页查询用户
    List<User> getUsersByPage(int page, int size);
}

2-8、Service 层UserServiceImpl 实现类

package com.example.service.impl;

import com.example.model.User;
import com.example.service.UserService;
import com.example.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;

    @Override
    public User getUserById(Long id) {
        return userMapper.selectById(id);  // 调用mapper中的selectById方法
    }

    @Override
    public List<User> getAllUsers() {
        return userMapper.selectAll();  // 调用mapper中的selectAll方法
    }

    @Override
    public void createUser(User user) {
        userMapper.insert(user);  // 调用mapper中的insert方法
    }

    @Override
    public void updateUser(User user) {
        userMapper.update(user);  // 调用mapper中的update方法
    }

    @Override
    public void deleteUser(Long id) {
        userMapper.deleteById(id);  // 调用mapper中的deleteById方法
    }

    @Override
    public List<User> getUsersByPage(int page, int size) {
        int offset = (page - 1) * size;  // 计算偏移量
        return userMapper.selectByPage(offset, size);  // 调用mapper中的selectByPage方法
    }
}

2-9、Util 分页工具类

PageUtil 分页工具类

package com.example.util;

import java.util.List;

public class PageUtil<T> {
    private int page; // 当前页码
    private int size; // 每页记录数
    private int totalPage; // 总页数
    private long totalElements; // 总记录数
    private List<T> content; // 分页数据列表

    // 构造方法和getters/setters方法
}

2-10、 Controller 层UserController 控制器

package com.example.controller;

import com.example.model.User;
import com.example.service.UserService;
import com.example.util.PageUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

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

    @Autowired
    private UserService userService;

    @GetMapping("/{id}")
    public User getUserById(@PathVariable Long id) {
        return userService.getUserById(id);  // 调用service中的getUserById方法
    }

    @GetMapping
    public List<User> getAllUsers() {
        return userService.getAllUsers();  // 调用service中的getAllUsers方法
    }

    @PostMapping
    public void createUser(@RequestBody User user) {
        userService.createUser(user);  // 调用service中的createUser方法
    }

    @PutMapping
    public void updateUser(@RequestBody User user) {
        userService.updateUser(user);  // 调用service中的updateUser方法
    }

    @DeleteMapping("/{id}")
    public void deleteUser(@PathVariable Long id) {
        userService.deleteUser(id);  // 调用service中的deleteUser方法
    }

    @GetMapping("/page")
    public PageUtil<User> getUsersByPage(@RequestParam("page") int page, @RequestParam("size") int size) {
        List<User> users = userService.getUsersByPage(page, size);  // 调用service中的getUsersByPage方法
        // 计算总记录数等
        // ...
        return new PageUtil<>(page, size, totalPage, totalElements, users);  // 返回分页结果
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员小王꧔ꦿ

感谢打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值