Spring boot整合Mybatis-plus分页插件的使用
不久前在工作中使用到了Mybati-plus,而且在给前端返回的数据需要有分页功能。之前没有做过相关的功能实现,于是在网上找了一些资料研究了半天,才把任务完成。特此记录下来,方便以后的学习和每一位看到的朋友的方便。如果你有疑问和建议,也请在文章末尾留言,看到一定回复!
- 项目结构:
controller
service
mapper
config
pojo - 分页插件的配置
在config包下新建一个配置类:
@EnableTransactionManagement
@Configuration
public class MybatisPlusConfig {
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
}
service层
@Service
public class StudentService {
@Resource
private StudentMapper studentMapper;
public Page<Student> selectOneStudent(String studentname, String sex) {
Map<String, Object> map = new HashMap<>();
map.put("studentname", studentname);
map.put("sex", sex);
Page page = new Page();
page.setCurrent(1); // 当前页数
page.setSize(3); // 每页数量
List<Student> students = studentMapper.selectOneStudent(page, map);
Page<Student> pa = (Page<Student>) page.setRecords(studentMapper.selectOneStudent(page, map));
Long sum = pa.getTotal();
System.out.println("总数量是:" + sum);
return pa;
}
}
mapper层
@Mapper
public interface StudentMapper extends BaseMapper<Student> {
List<Student> selectOneStudent(Page page, Map<String,Object> map);
}
controller层
@RestController
@RequestMapping("/")
public class PageController {
@Autowired
private StudentService studentService;
@RequestMapping("/queryOne")
public List<Student> findOne(@RequestParam("studentname") String studentname, @RequestParam("sex") String sex) {
System.out.println("传入的参数是:"+studentname+":性别:"+sex);
Page<Student> students = studentService.selectOneStudent(studentname,sex);
List<Student> stu = students.getRecords();
return stu;
}
}
pojo层
@Data
@NoArgsConstructor
@AllArgsConstructor
@TableName("student")
public class Student implements Serializable {
@TableId
private String studentno;
private String studentname;
private String loginpwd;
private Character sex;
private Integer majorid;
private String phone;
private String email;
private Date borndate;
//表示数据库没有该字段,如果不加则会抛出异常信息
@TableField(exist = false)
private String address;
}
主要的核心内容是在service层中的代码
Page page = new Page();//创建一个分页对象
page.setCurrent(1); // 当前页数
page.setSize(3); // 每页数量
//调用mapper的实现方式
List students = studentMapper.selectOneStudent(page, map);
Page pa = (Page) page.setRecords(studentMapper.selectOneStudent(page, map));
以下是需要导入的这依赖包:
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-support</artifactId>
<version>2.1.9</version>
<scope>compile</scope>
</dependency>
——————————————————————————————
以上的数据库使用的是MySQL,而在使用Oracle的时候出现一个奇怪的问题:在mapper的方法中在传值的时候需要这样写,
List<Student> selectOneStudent(Page page,@Param("map") Map<String,Object> map);
就是多加一个@Param("map"),只在Oracle的时候出现该问题,目前MySQL没有遇到,同时在xml文件里面自定义SQL取值的时候,需要以及map.key形式
希望可以帮到各位路过的朋友!