创建项目
创建好之后,项目整体结构如下:
Spring Boot整合MyBatis-Plus
①打开pom.xml文件,把mybatis依赖注释掉或者删除掉,引入mybatis-plus依赖放到dependencies标签里面,然后刷新依赖
<!--mybatis-plus核心依赖--> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.2</version> </dependency>
②打开application.yml,把mybatis配置注释掉或者删除掉,引入mybatis-plus配置
mybatis-plus: configuration: log-impl: org.apache.ibatis.logging.stdout.StdOutImpl typeAliasesPackage: com.qcbt.entity #存放实体类的目录路径 mapperLocations: classpath:mapper/*.xml # 全局配置id自增 => global-config: db-config: id-type: auto
MyBatis-Plus引入完成
③引入Lombok依赖,使代码更加简洁,刷新依赖
<!--lombok核心依赖--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.14</version> </dependency>
添加分页插件
①在com.qcby包下创建config.MybatisPlusConfig类,添加@Configuration注解
@Configuration public class MybatisPlusConfig { // 最新版 @Bean // <bean id=""/> public MybatisPlusInterceptor mybatisPlusInterceptor() { MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); return interceptor; } }
实现分页
①数据库创建User表,添加数据
CREATE TABLE `user` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `name` varchar(255) COLLATE utf8mb4_bin DEFAULT NULL COMMENT '用户名', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
②在entity包下创建User实体类
@Data //Lombok提供的注解,写上这个注解之后,不用写get,set,toString方法 @TableName("user") //mybatis-plus提供的注解,写这个实体类对应的表名 public class User { private Long id; private String name; }
③在mapper文件下创建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.qcby.mapper.UserMapper"> <select id="findAll" resultType="com.qcby.entity.User"> select * from user </select> </mapper>
④在mapper包下创建UserMapper接口,继承BaseMapper类,定义findAll方法
@Mapper public interface UserMapper extends BaseMapper<User> { public IPage<User> findAll(Page<User> page); }
⑤在service包下创建UserService接口,继承IService类,定义findAll方法
public interface UserService extends IService<User> { public IPage<User> findAll(Page<User> page); }
⑥在service.impl包下创建UserServiceImpl类,继承ServiceImpl类,实现UserService 接口,加上@Service注解
@Service public class UserServiceImpl extends ServiceImpl<UserMapper,User> implements UserService { @Resource private UserMapper userMapper; @Override public IPage<User> findAll(Page<User> page){ return this.userMapper.findAll(page); } }
⑦在controller包下创建UserController类,加上@RestController注解
@RestController @RequestMapping("user") public class UserController { @Autowired private UserServiceImpl service; @RequestMapping("findAll") public IPage<User> findAll(Integer pageNum, Integer pageSize){ //分页实现 Page<User> page=new Page<>(pageNum,pageSize); return this.service.findAll(page); } }
⑧在SpringBootProjectApplication 类上,加上@MapperScan("com.qcby.mapper")注解
@MapperScan("com.qcby.mapper") @SpringBootApplication public class SpringBootProjectApplication { public static void main(String[] args) { SpringApplication.run(SpringBootProjectApplication.class, args); } }
⑨浏览器访问 http://localhost:8080/user/findAll?pageNum=1&pageSize=3 ,访问user表中的前3条数据,结果如下: