使用Limit分页
select * from user limit startIndex,pageSize;
select * from user limit 3; #相当于[0,n]
使用Mybatis实现分页,核心SQL
1、接口
2、mapper.xml
3、测试
1、
package com.xie.dao;
import com.xie.pojo.User;
import java.util.List;
import java.util.Map;
//Dao就等于以后学的Mapper
public interface UserMapper {
User getUserById(int id);
//分页
List<User> getUserByLimit(Map<String,Integer> map);
}
2、
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace绑定一个对应的Dao接口(也可以叫Mapper接口)-->
<mapper namespace="com.xie.dao.UserMapper">
<resultMap id="UserMap" type="user">
<!-- column是数据库中的字段,property是实体类中的属性-->
<!-- <result column="id" property="id"></result>-->
<!-- <result column="name" property="name"></result>-->
<result column="pwd" property="password"></result>
</resultMap>
<select id="getUserById" resultMap="UserMap">
select * from mybatis.user where id = #{id}
</select>
<!-- 分页,这里的resultType和resultMap一定要小心,别混-->
<select id="getUserByLimit" parameterType="map" resultType="user">
select * from mybatis.user limit #{startIndex},#{pageSize};
</select>
</mapper>
3、
package com.xie.dao;
import com.xie.pojo.User;
import com.xie.utils.MybatisUtils;
import org.apache.ibatis.session.SqlSession;
import org.apache.log4j.Logger;
import org.junit.Test;
import java.util.HashMap;
import java.util.List;
public class UserMapperTest {
static Logger logger = Logger.getLogger(UserMapperTest.class);
//根据id查找用户
@Test
public void getUserById(){
//这里打入MybatisUtils.getSqlSession再根据提示引入局部变量就显示出来了
SqlSession sqlSession = MybatisUtils.getSqlSession();
logger.info("getUserById现在开始");
//这里打入sqlSession.getMapper(UserMapper.class);再根据提示引入局部变量就显示出来了
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
User user = mapper.getUserById(5);
System.out.println(user);
sqlSession.close();
}
//实现日志
@Test
public void testLog4j(){
logger.info("info:进入了testLog4j");
logger.debug("debug:进入了testLog4j");
logger.error("error:进入了testLog4j");
}
//分页
@Test
public void getUserByLimit(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
UserMapper mapper = sqlSession.getMapper(UserMapper.class);
HashMap<String, Integer> map = new HashMap<String, Integer>();
map.put("startIndex",0);
map.put("pageSize",2);
List<User> userList = mapper.getUserByLimit(map);
for (User user:userList){
System.out.println(user);
}
sqlSession.close();
}
}
结果:
password不匹配显示 null
解决方法(用resultMap)
在UserMapper.xml中修改
<!-- 分页,这里的resultType和resultMap一定要小心,别混-->
<select id="getUserByLimit" parameterType="map" resultMap="UserMap">
select * from mybatis.user limit #{startIndex},#{pageSize};
</select>
结果:
RowBounds分页
不再使用SQL实现分页
1、接口
//RowBounds分页
List<User> getUserByRowBounds();
2、mapper.xml
<!-- RowBounds分页,这里的resultType和resultMap一定要小心,别混-->
<select id="getUserByRowBounds" resultMap="UserMap">
select * from mybatis.user
</select>
3、测试
@Test
public void getUserByRowBounds(){
SqlSession sqlSession = MybatisUtils.getSqlSession();
RowBounds rowBounds = new RowBounds(1, 2);
List<User> userList = sqlSession.selectList("com.xie.dao.UserMapper.getUserByRowBounds");
for (User user : userList) {
System.out.println(user);
}
sqlSession.close();
}
分页插件(Mybatis PageHelper)
要了解