-
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({"<script>"
+ "SELECT SQL_CALC_FOUND_ROWS * FROM role "
+ "<if test='page.keyWord != null'>"
+ "WHERE name LIKE CONCAT('%', #{page.keyWord}, '%') "
+ "</if>"
+ "LIMIT ${(page.index - 1) * page.count}, #{page.count};"
+ "SELECT FOUND_ROWS() AS total;"
+ "</script>"})
@ResultMap({"roleMap", "totalMap"})
List<List<?>> getAll(@Param("page") Page page);
返回结果:
- list的第一个元素是role的list:result.get(0)
- 第二个元素即总数的list:result.get(1).get(0)
&allowMultiQueries=true
- mapper的方法不要重载
我在开发时使用了baomidou插件,一开始分页查询的函数名为selectPage,这重载了BaseMapper里的方法,导致MyBatis结果解析一直报错-_-
MyBatis基于注解的分页及总数查询实现方式相关问题参考博客实现方式代码说明:Role:map的java对象Page: 包含index、count、keyWord三个属性 // 定义JavaBean的map @Results(id = "roleMap", value = { @Result(column = "id", property = "id", jdbcType ...
spring boot 集成 mybatis 使用注解实现
spring boot 和 mybatis已经正常集成,在使用查询时使用的是注解,(项目没有任何XML文件)
@Mapper
@Table(name = "t_user")
public interface UserMapper {
@Select("select * from t_us...
1、做分页查询的时候,如果是单表还好,可以用mybatis-plus自带的分页,我们可以不用额外的去查询总数。
但如果是多表关联查询,就每次要写两个一样的sql,一个查询数据,一个查询总数,然后我就在想能不能在分页查询数据的时候,同时把总数量也查询出来。于是我在网上找了下,还真有,不过大多都是复制粘贴的,很多都有一样的问题。
<resultMap type="java.lang.Integer" id="count">
<result column="total"/
目录mybatis注解@Param分页Count
mybatis注解@Param
基于mybatis注解写sql,出现了一个对象映射问题,一开始我没用@Param,因为当时只有一个入参所以没写springboot是能识别到的,但是我后来因为需求原因重写了方法加多了一个入参,就无法识别了
//实体类Student
@data
public class Student{
private int id;
private String name;
private String age;
//例如写一个m
MyBatis 是一款优秀的 ORM(Object Relational Mapping)框架,它支持 XML 和注解两种方式进行 SQL 映射。其中注解方式具有简单、直观、便于维护等优点,本次回答将介绍注解方式下的分页查询。
1. 在 Mapper 接口中定义方法,方法使用注解 `@Select` 注解进行 SQL 语句的映射,其中 `@Select` 注解中的 value 属性值为 SQL 语句。
```java
@Select("SELECT * FROM user LIMIT #{offset}, #{pageSize}")
List<User> queryUserByPage(@Param("offset") int offset, @Param("pageSize") int pageSize);
2. 在调用该方法时,传入相应的参数即可实现分页查询。
```java
int pageNum = 1; // 当前页码
int pageSize = 10; // 每页显示的记录数
int offset = (pageNum - 1) * pageSize; // 计算起始记录位置
List<User> userList = userMapper.queryUserByPage(offset, pageSize);