MyBatis注解方式的分页总数查询

MyBatis基于注解的分页及总数查询

    • 实现方式
    • 相关问题
    • 参考博客

实现方式

代码说明:

  • Role:map的java对象
  • Page: 包含index、count、keyWord三个属性
	// 定义JavaBean的map
	@Results(id = "roleMap", value = {
			@Result(column = "id", property = "id", jdbcType = JdbcType.VARCHAR),
			// ... 省略若干字段
			@Result(column = "name", property = "name", jdbcType = JdbcType.VARCHAR),
	})
	@Select({"SELECT * FROM role WHERE name = #{name}"})
	Role selectByName(@Param("name") String name);
	
	// 定义总数的map
	@Results(id = "totalMap", value = {
			@Result(column = "total", javaType = Integer.class)
	})
	@Select({"SELECT COUNT(*) AS total FROM role"})
	Integer countAll();
	
	// 以上两方法只是为了定义map,sql的功能可以自定义
	// 具体分页细节如下
	@Select({""})
	@ResultMap({"roleMap", "totalMap"})
	List> getAll(@Param("page") Page page);

返回结果:

  • list的第一个元素是role的list:result.get(0)
  • 第二个元素即总数的list:result.get(1).get(0)

相关问题

  • 配置文件数据库的url需要加上
&allowMultiQueries=true
  • mapper的方法不要重载
    我在开发时使用了baomidou插件,一开始分页查询的函数名为selectPage,这重载了BaseMapper里的方法,导致MyBatis结果解析一直报错-_-

参考博客

  • xml方式的实现
  • 分页查询返回总数的三种方式

你可能感兴趣的:(spring-boot)