mybatis-plus分页查询数据库数据
1 在springboot中整合mybatis-plus
<!-- 引入mybatisPlus --> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.2.0</version> </dependency> <!-- 引入mysql驱动包 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.27</version> </dependency> <!-- 引入Druid依赖,阿里巴巴所提供的数据源 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.29</version> </dependency>
2 在application.yml配置
spring: datasource: type: com.alibaba.druid.pool.DruidDataSource driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8 username: root password: 123456
3 在启动类上面添加@MapperScan注解,扫描mapper包
@MapperScan("com.atguigu.admin.mapper")
4 新建User和UserMapper
import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableName; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @AllArgsConstructor @NoArgsConstructor @Data @TableName("user") public class User { //非数据库中的数据 @TableField(exist = false) private String userName; @TableField(exist = false) private String password; //数据库中的数据 private int id; private String name; private String age; private String email; }
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.fxz.admin.bean.User; import org.apache.ibatis.annotations.Mapper; @Mapper public interface UserMapper extends BaseMapper<User> { //mapper继承父类获取操作方法 泛型为数据库数据对应的类 无需配置xml映射文件 }
5 Service
import com.baomidou.mybatisplus.extension.service.IService; import com.fxz.admin.bean.User; public interface UserService extends IService<User> { }
//继承父类 泛型为对应mapper和操作对象 @Service public class UserServiceImpl extends ServiceImpl<UserMapper,User> implements UserService { }
6 分页查询拦截器
@Configuration public class MybatisConfig { //mybatis分页查询必须配置分页拦截器 @Bean public PaginationInterceptor paginationInterceptor() { PaginationInterceptor paginationInterceptor = new PaginationInterceptor(); return paginationInterceptor; } }
7 前端控制器 Controller
@GetMapping(value = "/dynamic_table") //拦截请求 public String dynamic(Model model,@RequestParam(value = "pn",defaultValue = "1")int pn){ //分页参数 Page<User> page = new Page(pn,2); //调用page分页 Page<User> users = userService.page(page); model.addAttribute("users",users); return "table/dynamic_table"; }
8 前端页面展示数据
<tr class="gradeX" th:each="user: ${users.records}"> <!--这里按照取得的记录数遍历-->
<td th:text="${user.id}"></td>
<td th:text="${user.name}"></td>
<td th:text="${user.age}"></td>
<td th:text="${user.email}"></td>
</tr>
</div> <div class="row-fluid"> <div class="span6"> <div class="dataTables_info" id="dynamic-table_info"> <!--分页栏 获取数据--> 当前第[[${users.current}]]页 总计 [[${users.pages}]]页 共[[${users.total}]]条记录 </div> </div> <div class="span6"> <div class="dataTables_paginate paging_bootstrap pagination"> <ul> <li class="prev disabled"><a href="#">← 前一页</a></li> <!---生成数字序列--> <li th:class="${num == users.current?'active':''}" th:each="num:${#numbers.sequence(1,users.pages)}" > <a th:href="@{/dynamic_table(pn=${num})}">[[${num}]]</a> </li> <li class="next disabled"><a href="#">下一页 → </a></li> </ul> </div> </div> </div> </div>