mysql 数据库用sql语句实现分页效果

分页一共需要用到2条sql语句

select count(*) form user;

select * from user limit 1.3//1--->从第几条开始,3表示一共显示条数

1.创建user实体类

public class User {
    private String uid;

    private String uname;

    private Integer unumber;

    private String upwd;

    private String uemail;

    private Date createtime;

    private Date lastupdatetime;

    private String description;
//getter/setter---省略
}

2.创建mapper层接口及mapper.xml文件

public interface UserMapper {
    
    /**查询用户总记录数**/
    int selectCount();
    
    /**分页操作,调用findByPage limit分页方法**/
    List<User> findBypage(HashMap<String,Object> map);
}
<?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">
<mapper namespace="top.lolcl.myblog.dao.UserMapper">
  <resultMap id="BaseResultMap" type="top.lolcl.myblog.entity.User">
    <id column="uid" jdbcType="VARCHAR" property="uid" />
    <result column="uname" jdbcType="VARCHAR" property="uname" />
    <result column="unumber" jdbcType="INTEGER" property="unumber" />
    <result column="upwd" jdbcType="VARCHAR" property="upwd" />
    <result column="uemail" jdbcType="VARCHAR" property="uemail" />
    <result column="createtime" jdbcType="DATE" property="createtime" />
    <result column="lastupdatetime" jdbcType="DATE" property="lastupdatetime" />
    <result column="description" jdbcType="VARCHAR" property="description" />
  </resultMap>
  <sql id="Base_Column_List">
    uid, uname, unumber, upwd, uemail, createtime, lastupdatetime, description
  </sql>
  <!-- 查询用户记录总数 -->

	<select id="selectCount" resultType="int">
		select count(*) from user
	</select>
  <!-- 根据分页数据start 和size查询数据 -->
  <select id="findBypage" parameterType="Map" resultMap="BaseResultMap">
  	select
	<include refid="Base_Column_List" />
	from user ORDER BY unumber ASC
	<if test="start!=null and size!=null">
	limit #{start},#{size}
	</if>
  </select>

</mapper>

3.创建page工具类封装分页需要用到数据

/**
 * 分页工具类
 * @author sanch
 *
 */
public class Page<T> {
	private int currPage;//当前页
	private int pageSize;//每页显示记录数
	private int totalCount;//总记录数
	private int totalPage;//总页数
	private List<T> lists;//每页显示的数据
//getter/setter---省略
}

4.创建service 业务逻辑层接口及实现类

IuserService.java

/**
 * 逻辑处理层
 * @author sanch
 *
 */
public interface IUserService {
	
    /**查询用户总记录数**/
    int selectCount()throws Exception;
    
    /**分页操作,调用findByPage limit分页方法**/
    Page<User> findByPage(int currentPage)throws Exception;
}
/**分页操作,调用findByPage limit分页方法**/
	@Override
	public Page<User> findByPage(int currentPage) throws Exception {
		HashMap<String,Object> map = new HashMap<String,Object>();
		Page<User> page = new Page<User>();
		//封装当前页数
		page.setCurrPage(currentPage);
		//每页显示的页数
		int pageSize = 2;
		page.setPageSize(pageSize);
		//封装总记录数
		int totalCount = usermapper.selectCount();
		page.setTotalCount(totalCount);
		//封装总页数
		double tc = totalCount;
		Double num = Math.ceil(tc/pageSize);//向上取整
		page.setTotalPage(num.intValue());
		map.put("start", (currentPage-1)*pageSize);
		map.put("size",page.getPageSize());
		//封装每页显示数据
		List<User> lists = usermapper.findBypage(map);
		page.setLists(lists);
		return page;
	}

5.创建controller 控制层,掉i有方法实现分页功能


	@PermissionsAnn(value="user") //用户权限
	@RequestMapping("userlist")
	public String userlist(@RequestParam(value="currentPage",defaultValue="1",required=false)int currentPage,Model model) throws Exception {
		
		model.addAttribute("pagemsg", userservice.findByPage(currentPage));//回显分页数据
		return "user/userlist";
	}

猜你喜欢

转载自blog.csdn.net/weixin_39209728/article/details/83991743