安装MyBatisX插件
在idea应用市场中下载安装MyBatisX插件,方便开发。
导入MyBatis-Plus依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
导入mysql连接驱动依赖
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
编写实体类
@Data
public class User {
private Long id;
private String name;
private Integer age;
private String email;
}
编写Dao层代码
Dao层,既是Mapper层,操作数据库的接口。
public interface UserMapper extends BaseMapper<User> {
}
我们只需要继承BaseMapper接口即可,并且泛型为对应操作的实体类。
与MyBatis不同,MyBatis-Plus中自己内部已经实现了CRUD方法,不用自己定义方法,直接可以调用。
编写业务逻辑层
编写接口,让接口继承IService接口,并且泛型为要操作的实体类。
编写该接口的实现类,我们不需要实现全部方法,因为BaseMapper接口中定义了很多方法,所以我们要继承ServiceImpl类,该类是
Service接口的总的实现类,里面实现了IService,并且继承了BaseMapper。泛型需要指定为对应的Mapper和实体类。
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
}
编写分页功能
创建一个config目录,并且编写MyBatisConfig配置类。
@Configuration
public class MyBatisConfig {
/**
* 新的分页插件,一缓和二缓遵循mybatis的规则,需要设置 MybatisConfiguration#useDeprecatedExecutor = false 避免缓存出现问题(该属性会在旧插件移除后一同移除)
*/
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
}
编写控制层
@GetMapping("/dynamic_table")
public String dynamic_table(@RequestParam(value = "pn", defaultValue = "1") Integer pn, Model model) {
List list = userService.list();
// 分页查询数据
Page<User> userPage = new Page<>(pn, 2);
// 分页查询结构
Page<User> page = userService.page(userPage, null);
// 当前页
long current = page.getCurrent();
// 总页数
long pages = page.getPages();
// 总记录数
long total = page.getTotal();
model.addAttribute("page", page);
return "table/dynamic_table";
}
Q.E.D.