• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Mybatis分页的实现及使用注解开发操作

mybatis 搞代码 4年前 (2022-01-09) 21次浏览 已收录 0个评论
文章目录[隐藏]

分页的实现

sql的分页语句为(第一个参数为当前页面的索引起始位置,第二个参数为页面的展示个数)

select * from user limit #{startIndex},#{pageSize};
# startIndex : 起始位置 ,默认是0开始
# pageSize :页面大小
# 如何计算出当前页面索引起始位置
# currentPage = (currentPage-1)* pageSize  

limit实现分页

1、编写dao接口

//查询全部用户实现分页
List<User> selectUserByLimit(Map<String,Integer> map);

2、编写对应mapper映射文件的方法(参数我们可以使用map封装,方便参数传递)

<select id="selectUserByLimit" parameterType="Map" resultType="User">
    select * from mybatis.user limit #{startIndex},#{pageSize}
</select>

3、创建了获取sqlSession对象的工具类,并使之可以进行自动提交事务

package com.MLXH.utils;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactor<strong style="color:transparent">本文来源gao@daima#com搞(%代@#码网@</strong>y;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
//mybatis的工具类,重复的代码的提纯
public class MyBatisUtils {
    //类变量不需要设置默认值;
    private static SqlSessionFactory sqlSessionFactory;
    static {
        //在maven中,所有的资源文件一般都放在resources目录下,我们可以直接拿到。
        try {
            String resource = "mybatis-config.xml";
            InputStream inputStream = Resources.getResourceAsStream(resource);
            sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    //设置SqlSessionFactory公共的方法
    public static SqlSessionFactory getSqlSessionFactory(){
        return sqlSessionFactory;
    }
    //获得一个带事务自动提交功能的SqlSession公共的方法
    public static SqlSession getSqlSession(){
        //自动提交事务
        return sqlSessionFactory.openSession(true);
    }
}

RowBounds实现分页

1、写接口

//查询全部用户实现分页使用RowBounds
List<User> selectUserByRowBounds();

2、写Mapper映射文件

<select id="selectUserByRowBounds" resultType="User">
    select * from mybatis.user
</select>

3、工具类同上(只是为了获取sqlSession对象简单而已)

4、编写测试代码

@Test
public void selectUserByRowBounds(){
    //创建sqlSession
    SqlSessionFactory sqlSessionFactory = MyBatisUtils.getSqlSessionFactory();
    SqlSession sqlSession = sqlSessionFactory.openSession();
    int currentPage = 2; //当前页
    int pageSize = 2; //页面大小
    RowBounds rowBounds = new RowBounds((currentPage - 1) * pageSize, pageSize);
    //注意点;使用RowBounds就不能使用getMapper了
    //selectList: 接收一个List
    //selectMap: 接收一个Map
    //selectOne : 接收只有一个对象的时候
    List<User> users = sqlSession.selectList("com.MLXH.dao.UserDao.selectUserByRowBounds", null, rowBounds);
    for (User user : users) {
        System.out.println(user);
    }
}

两者的区别

  • rowBounds 本质就是封装了limit
  • limit 是在SQL层面实现分页,在测试中使用getMapper获得对象
  • rowBounds 在代码层面实现分页,创建rowBounds对象

注解开发


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Mybatis分页的实现及使用注解开发操作

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址