分页
作用很明显,数据库不可能每次把所有数据给查出来。
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
使用注解开发
十分简单的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语句
注解和反射还没有学,后面探究原理。