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项目配置文件
-- 创建名为 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');
<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.0modelVersion>
<groupId>com.examplegroupId>
<artifactId>myprojectartifactId>
<version>1.0.0version>
<dependencies>
<dependency>
<groupId>org.springframeworkgroupId>
<artifactId>spring-contextartifactId>
<version>5.3.9version>
dependency>
<dependency>
<groupId>org.hibernategroupId>
<artifactId>hibernate-coreartifactId>
<version>5.6.2.Finalversion>
dependency>
<dependency>
<groupId>org.apache.commonsgroupId>
<artifactId>commons-lang3artifactId>
<version>3.12.0version>
dependency>
<dependency>
<groupId>log4jgroupId>
<artifactId>log4jartifactId>
<version>1.2.17version>
dependency>
<dependency>
<groupId>junitgroupId>
<artifactId>junitartifactId>
<version>4.13.2version>
<scope>testscope>
dependency>
dependencies>
<build>
<sourceDirectory>srcsourceDirectory>
<plugins>
<plugin>
<groupId>org.apache.maven.pluginsgroupId>
<artifactId>maven-compiler-pluginartifactId>
<version>3.8.1version>
<configuration>
<source>1.8source>
<target>1.8target>
configuration>
plugin>
plugins>
build>
project>
# 服务器端口
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
# 其他自定义配置
package com.example.model;
public class User {
private Long id; // 用户ID
private String username; // 用户名
private String password; // 密码
// 其他字段和对应的getters/setters方法 或者用注解
}
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);
}
DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.mapper.UserMapper">
<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>
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);
}
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方法
}
}
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方法
}
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); // 返回分页结果
}
}