安装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方法,不用自己定义方法,直接可以调用。

image-20220409222213034

编写业务逻辑层

编写接口,让接口继承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.


热爱生活,热爱程序