1.搭建springboot项目,这块可以在网上找,搭建最简单的springboot就行,可以用idea的springinitianizr构建,如图
创建完后,引入dependency
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web-services</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.16</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.2</version>
</dependency>
application.yml
server:
port: 8088
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/zcy?serverTimezone=Asia/Shanghai
username: root
password: 123456
application.properties
mybatis-plus.global-config.db-config.table-prefix=t_
mybatis-plus.generator.author=author
mybatis-plus.generator.file-out-impl=org.mybatis.generator.internal.DefaultFileOutput
mybatis-plus.generator.template-path=classpath:/templates/mapper
mybatis-plus.generator.file-overwrite=true
mybatis-plus.generator.xml-disabled=true
mybatis-plus.generator.jdbc.driverClass=${spring.datasource.driver-class-name}
mybatis-plus.generator.jdbc.url=${spring.datasource.url}
mybatis-plus.generator.jdbc.userId=${spring.datasource.username}
mybatis-plus.generator.jdbc.password=${spring.datasource.password}
mybatis-plus.mapper-locations=classpath*:resources/mapper/*.xml
建表
CREATE TABLE `t_user_account` (
`id` int NOT NULL AUTO_INCREMENT COMMENT 'ID',
`user_name` varchar(100) DEFAULT NULL COMMENT '用户名',
`user_email` varchar(30) DEFAULT NULL COMMENT '邮箱',
`account` varchar(30) DEFAULT NULL COMMENT '账号',
`password` varchar(100) DEFAULT NULL COMMENT '密码',
`organize_id` int DEFAULT NULL COMMENT '部门ID',
PRIMARY KEY (`id`)
) ENGINE=InnoDB
entity
package com.example.mybatisplusdemo.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
/**
* @author :
* @date : 2024/5/12 20:25
* @description :
**/
@Data
@TableName("t_user_account")
public class UserAccount {
@TableId(type = IdType.AUTO)
private Long id;
@TableField("user_name")
private String userName;
@TableField("user_email")
private String userEmail;
@TableField("password")
private String password;
@TableField("account")
private String account;
@TableField("organize_id")
private Long organizeId;
}
mapper接口
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.mybatisplusdemo.entity.UserAccount;
import org.apache.ibatis.annotations.Mapper;
/**
* @author :
* @date : 2024/5/12 20:24
* @description :
**/
@Mapper
public interface UserAccountMapper extends BaseMapper<UserAccount> {
}
IService 接口
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.example.mybatisplusdemo.dto.UserAccountDTO;
import com.example.mybatisplusdemo.entity.UserAccount;
/**
* @author :
* @date : 2024/5/12 20:31
* @description :
**/
public interface IUserAccountService extends IService<UserAccount> {
}
接口实现类
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.example.mybatisplusdemo.entity.UserAccount;
import com.example.mybatisplusdemo.mapper.UserAccountMapper;
import com.example.mybatisplusdemo.service.IUserAccountService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/**
* @author : zhangcaiyun
* @date : 2024/5/12 20:33
* @description :
**/
@Service
public class UserAccountServiceImpl extends ServiceImpl<UserAccountMapper, UserAccount> implements IUserAccountService {
}
新增记录可以直接如下调用
userAccountService.save(account);
在做一个分页查询,在接口中新增如下接口
public Page<UserAccount> selectPage(int currentPage,pageSize) {
Page<UserAccount> page = new Page<>(currentPage, pageSize);
QueryWrapper<UserAccount> queryWrapper = new QueryWrapper<>();
Page<UserAccount> userAccountPage = userAccountMapper.selectPage(page, queryWrapper);
return userAccountPage;
}
调用后userAccountPage数据如下
{
"records": [{
"id": 1,
"userName": "zhangcaiyun",
"userEmail": "zhangcaiyun@sina.cn",
"password": "123456",
"account": "c410230",
"organizeId": 1111
},
{
"id": 2,
"userName": "zhangcaiyun",
"userEmail": "zhangcaiyun@sina.cn",
"password": "123456",
"account": "c410230",
"organizeId": 1111
},
{
"id": 3,
"userName": "zhangcaiyun",
"userEmail": "zhangcaiyun@sina.cn",
"password": "123456",
"account": "c410230",
"organizeId": 1111
}
],
"total": 0,
"size": 10,
"current": 1,
"orders": [],
"optimizeCountSql": true,
"hitCount": false,
"countId": null,
"maxLimit": null,
"searchCount": true,
"pages": 0
}
问题,可以发现可以正常的返回数据了,但是total和pages确是0。
解决mybatis-plus中分页查询返回有记录,但total和pages却为0的问题。
1.新增如下依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-extension</artifactId>
<version>3.4.2</version>
</dependency>
2.新增配置类
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import javax.sql.DataSource;
/**
* @author :
* @date : 2024/5/12 21:56
* @description :
**/
@Configuration
public class MybatisPlusConfig {
@Bean("mybatisPlusInterceptor")
public MybatisPlusInterceptor getInterceptor() {
MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return mybatisPlusInterceptor;
}
}
3.启动后再次查询返回如下
{
"records": [{
"id": 1,
"userName": "zhangcaiyun",
"userEmail": "zhangcaiyun@sina.cn",
"password": "123456",
"account": "c410230",
"organizeId": 1111
},
{
"id": 2,
"userName": "zhangcaiyun",
"userEmail": "zhangcaiyun@sina.cn",
"password": "123456",
"account": "c410230",
"organizeId": 1111
},
{
"id": 3,
"userName": "zhangcaiyun",
"userEmail": "zhangcaiyun@sina.cn",
"password": "123456",
"account": "c410230",
"organizeId": 1111
}
],
"total": 3,
"size": 10,
"current": 1,
"orders": [],
"optimizeCountSql": true,
"hitCount": false,
"countId": null,
"maxLimit": null,
"searchCount": true,
"pages": 1
}