这里是使用的hibernate(不需要写sql)和springboot 也可使用 MyBatis(推荐使用)
下面是使用Spring Boot实现分页查询的示例:
- 在pom.xml文件中添加依赖项:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<!-- (可选)添加MySQL依赖 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.26</version>
</dependency>
- 定义一个JPA实体类(例如
User
),并在该类中添加相应的字段、构造方法和Getter/Setter方法。 - 在
User
类中添加JPA注解,并指定数据表名、主键等信息。例如:
@Data
@NoArgsConstructor
@AllArgsConstructor
@Entity
@Table(name = "user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "name")
private String name;
@Column(name = "age")
private Integer age;
}
- 创建一个
UserRepository
接口,继承自JpaRepository<User, Long>
,并添加方法用于查询分页数据。例如:
@Repository
public interface UserRepository extends JpaRepository<User, Long> {
Page<User> findByNameContaining(String keyword, Pageable pageable);
}
其中,findByNameContaining
方法用于查询包含关键字的用户列表,Pageable
参数用于指定分页相关信息,例如当前页码、每页记录数等。
- 创建一个
UserController
类,定义一个REST接口,用于调用UserRepository
中的方法获取用户列表。例如:
@RestController
@RequestMapping("/users")
public class UserController {
@Autowired
private UserRepository userRepository;
@GetMapping("")
public ResponseEntity<List<User>> getUsers(@RequestParam(defaultValue = "") String keyword,
@RequestParam(defaultValue = "0") int page,
@RequestParam(defaultValue = "10") int size) {
// 上面是指定内页显示几条数据
Pageable pageable = PageRequest.of(page, size);
Page<User> userPage = userRepository.findByNameContaining(keyword, pageable);
List<User> userList = userPage.getContent();
return new ResponseEntity<>(userList, HttpStatus.OK);
}
}
其中,getUsers
方法用于查询用户列表,并将查询结果封装在ResponseEntity
中返回给客户端。
- 启动Spring Boot应用程序,并访问http://localhost:8080/users,即可查询分页数据。
以上是使用Spring Boot实现分页查询的基本示例。需要注意的是,不同的ORM框架和数据库可能有所差异,具体实现方式也会有所不同。在实际开发中,需要根据具体需求进行适当调整和优化。
在上述示例中,我们使用了JPA作为ORM框架,并且可以使用MySQL作为数据存储库。以下是数据库和数据的相关信息:
- 创建一个名为
test
的数据库:
CREATE DATABASE test;
- 创建一个名为
user
的数据表:
CREATE TABLE `user` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`name` varchar(50) DEFAULT NULL COMMENT '姓名',
`age` int(11) DEFAULT NULL COMMENT '年龄',
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='用户表';
- 插入一些测试数据:
INSERT INTO `user` (`name`, `age`) VALUES ('张三', 18);
INSERT INTO `user` (`name`, `age`) VALUES ('李四', 22);
INSERT INTO `user` (`name`, `age`) VALUES ('王五', 30);
INSERT INTO `user` (`name`, `age`) VALUES ('赵六', 25);
INSERT INTO `user` (`name`, `age`) VALUES ('孙七', 28);
INSERT INTO `user` (`name`, `age`) VALUES ('周八', 31);
INSERT INTO `user` (`name`, `age`) VALUES ('吴九', 20);
INSERT INTO `user` (`name`, `age`) VALUES ('郑十', 24);
以上是使用MySQL作为数据存储库的示例。如果您使用其他数据库或者数据存储库,请根据具体情况进行相应的调整。
以下是使用Spring Boot实现分页查询的示例所需的application.yml
配置:
spring:
datasource:
url: jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC
username: root
password: yourpassword
driver-class-name: com.mysql.cj.jdbc.Driver
jpa:
database-platform: org.hibernate.dialect.MySQL8Dialect
hibernate:
ddl-auto: update
properties:
hibernate:
dialect: org.hibernate.dialect.MySQL8Dialect
show_sql: true
format_sql: true
use_sql_comments: true
# (可选)开启web服务相关的配置
servlet:
context-path: /api
server:
port: 8080
其中,spring.datasource.url
用于指定MySQL数据库的连接地址;spring.datasource.username
和spring.datasource.password
用于指定连接数据库时的用户名和密码。如果您使用不同的数据库,需要相应调整这些配置项。
spring.jpa.database-platform
、spring.jpa.properties.hibernate.dialect
等配置用于指定JPA的方言和其他相关属性。
servlet.context-path
用于指定Web服务的Context Path,server.port
用于指定服务监听的端口号。
在实际应用中,需要根据具体需求进行适当调整和优化,例如修改日志级别、添加安全认证等等。
目录结构如下
查询结构如下