mybatis中使用limit实现分页,以及Map的用法

1、limit实现分页

limit是sql中存在的,可以实现分页查询,其使用方法为:

select * from table1 limit startIndex,pageStze
--这里的startIndex与pageSize在使用时用整数代替

顾名思义,limit需要两个参数:startIndex是标识页面的其实下标的,就是从第多少条记录开始分页显示;pageSize是每一个页面显示的记录的条数。比如:

select * from table1 limit 35

就表示从表中第三条记录开始,每五条记录作为一页来显示。mybatis中可以传入这两个参数。

2、Map的用法

使用Map要先导入util包(当然IDEA可以自动导入)
Map的核心是键值对,直接用了就懂了,上代码:

HashMap<String,Integer> map = new HashMap<String,Integer>();
map.put("startIndex",0);
map.put("pageSize",3);

创建一个Map的实例, HashMap<String,Integer> 是定义键值对的“结构”,String就是key(键)的类型,Integer就是这个key的value(值)的类型,当然这个可以自己设置。然后就可调用Map实例的方法 put() 来存放一个键值对了,当然一个Map实例可存放多个键值对。利用Map传参较为方便。

3、mybatis中实现分页查询

这跟之前的查询也没啥区别,只是在sql语句上使用了limit。上代码:
编写接口中的方法

    //分页测试
    List<User> getUserByLimit(Map<String,Integer> map);

在配置中“实现”这个方法(注意这里取map中的参数是#{键的名字})

    <!--使用map来传参-->
    <select id="getUserByLimit" parameterType="map" resultType="User">
        <!--limit后面跟两个参数,第一个参数是显示分页的起始下标,第二个是页面的大小-->
        select * from mybatis.user limit #{startIndex},#{pageSize};
    </select>

测试

    @Test
    public void limitTest00(){
    
    
        SqlSession sqlSession = MybatisUtils.getSqlSession();

        UserDao mapper = sqlSession.getMapper(UserDao.class);

        //创建map来存放参数,map就是键值对,定义时HashMap<String,Integer>转下一行
        //String就是key的类型,Integer就是这个健的值的类型,当然这两个类型可自行设置
        HashMap<String,Integer> map = new HashMap<String,Integer>();
        map.put("startIndex",0);
        map.put("pageSize",3);

        List<User> usersByPage = mapper.getUserByLimit(map);

        for(User user:usersByPage){
    
    
            System.out.println(user.getId());
        }

    }

猜你喜欢

转载自blog.csdn.net/kitahiragawa/article/details/113055538