2020-11-02 分页、使用注解开发

分页

作用很明显,数据库不可能每次把所有数据给查出来。

1.编写接口

//手动limit分页
List<UserInfo> getUserListByInfoLimit(Map<String,Integer> map);

使用万能的HashMap来输入信息。

2.在.xml中注册接口

<select id="getUserListByInfoLimit" parameterType="map" resultMap="UserMap">
    select * from  Mybatis.user limit #{startIndex},#{pageSize};
</select>

注意这里的键值对值要和自己写的Test类中的HashMap的值相对应。

3.写@Test

public void SelectAllLimit(){
    SqlSession sqlsession = MybatisUtil.getSqlsession();
    UserMapper mapper = sqlsession.getMapper(UserMapper.class);
    HashMap<String,Integer> map = new HashMap<String, Integer>();
    map.put("startIndex",2);
    map.put("pageSize",2);
    List<UserInfo>userInfos = mapper.getUserListByInfoLimit(map);
    for (UserInfo user :userInfos
            ) {
        System.out.println(user);
    }
    sqlsession.close();
    }

本质上给sql传递了参数,这种方式我们仍然手动写了sql。

  • RowBounds

只需要写最简单的sql

这种方式用到了Mybatis不推荐的sql执行方法。没有通过mapper调用接口。

1.编写接口

//RowBounds分页  不需要设定参数
List<UserInfo> getUserListByInfoRowBounds();

2.在BlogMapper.xml中注册

 <select id="getUserListByInfoRowBounds" resultMap="UserMap">
        select * from Mybatis.user;
    </select>

3.编写@Test

@Test//RowBounds分页
    public void SelectAllRowBounds(){
    SqlSession sqlsession = MybatisUtil.getSqlsession();
    //RowBounds实现
    RowBounds rowBounds = new RowBounds(2, 2);
    //通过java代码层面实现分页
    List<UserInfo> userInfos =        sqlsession.selectList("com.kyz.dao.UserMapper.getUserListByInfoRowBounds",null,rowBounds);
    for (UserInfo user:userInfos
         ) {
        System.out.println(user);
    }
    sqlsession.close();
}

需要创建RowBounds对象,默认的RowBounds无参构造方法提供了一个最大值的查询方法。

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by Fernflower decompiler)
//
​
package org.apache.ibatis.session;
​
public class RowBounds {
    public static final int NO_ROW_OFFSET = 0;
    public static final int NO_ROW_LIMIT = 2147483647;
    public static final RowBounds DEFAULT = new RowBounds();
    private final int offset;
    private final int limit;
​
    public RowBounds() {
        this.offset = 0;
        this.limit = 2147483647;
    }
​
    public RowBounds(int offset, int limit) {
        this.offset = offset;
        this.limit = limit;
    }
​
    public int getOffset() {
        return this.offset;
    }
​
    public int getLimit() {
        return this.limit;
    }
}
  • 分页插件

    学完Spring再配置这个插件。

MyBatis 分页插件 PageHelper

https://pagehelper.github.io/

使用注解开发

十分简单的sql语句可以使用注解查询

1.编写接口、添加注释

@Select("select * from Mybatis.user")
List<UserInfo> getUser();

2.在Mapper注册中心中注册过即可,这里我发现通过resources和class注册的方法是相同的,重复写了这两个会报错

<mappers>
        <mapper resource="com/kyz/dao/UserMapper.xml"></mapper>
        <!--<mapper class="com.kyz.dao.UserMapper"></mapper>-->
    </mappers>

 3.mapper.调用接口完成sql语句

注解和反射还没有学,后面探究原理。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值