运用IDEA进行Mybatis分页查询
可以作为熟悉IDEA开发软件,熟悉Mybatis的一个案例.
数据库(Mysql)设计:
增加了测试数据
create table people(
id int(10) primary key auto_increment COMMENT '编号',
name varchar(20) COMMENT '姓名',
age int(3) COMMENT '年龄'
)comment '人员信息表';
select * from people
insert into people values(default,'张三',21);
insert into people values(default,'李四',22)
insert into people values(default,'李四1',22);
insert into people values(default,'李四2',22);
insert into people values(default,'李四3',22);
insert into people values(default,'李四4',22);
insert into people values(default,'李四5',22);
insert into people values(default,'李四6',22);
insert into people values(default,'李四7',22);
insert into people values(default,'李四8',22);
1.需要导入的jar包:
2.Mybatis.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--全局环境配置-->
<settings>
<setting name="logImpl" value="LOG4J"/>
</settings>
<!--别名-->
<typeAliases>
<!--<typeAlias type="com.wj.pojo.People" alias="People"/>-->
<package name="com.wj.pojo"/>
</typeAliases>
<!--default引用environment的id,表示当前使用的环境-->
<environments default="default">
<!--声明可能使用的环境-->
<environment id="default">
<!--使用原生JDBC事务-->
<transactionManager type="JDBC"></transactionManager>
<!--数据库连接池-->
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql://localhost:3306/ssm"/>
<property name="username" value="root"/>
<property name="password" value="123456"/>
</dataSource>
</environment>
</environments>
<mappers>
<mapper resource="com/wj/mapper/PeopleMapper.xml"/>
</mappers>
</configuration>
3.peopleMapper.xml
<?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="com.wj.mapper.PeopleMapper">
<select id="selByPage" resultType="People" parameterType="map">
select * from people limit #{pageStart},#{pageSize};
</select>
<select id="selCount" resultType="long">
select count(*) from people
</select>
</mapper>
4.PeopleService.java (interface)
package com.wj.com.wj.service;
import com.wj.pojo.PageInfo;
/**
* @Auther: wj
* @Date: 2019/9/10
* @Description: com.wj.com.wj.service
* @version: 1.0
*/
public interface PeopleService {
/**
* 分页显示
* @param pageSize 每页显示个数
* @param pageNumber 显示页数
* @return
*/
PageInfo showPage(int pageSize,int pageNumber);
}
5.PeopleServiceImpl.java
package com.wj.com.wj.service.Impl;
import com.wj.com.wj.service.PeopleService;
import com.wj.pojo.PageInfo;
import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
/**
* @Auther: wj
* @Date: 2019/9/10
* @Description: com.wj.com.wj.service.Impl
* @version: 1.0
*/
public class PeopleServiceIml implements PeopleService {
InputStream is=null;
SqlSessionFactory factory=null;
SqlSession session=null;
@Override
public PageInfo showPage(int pageSize, int pageNumber) {
try {
is = Resources.getResourceAsStream("mybatis.xml");
factory = new SqlSessionFactoryBuilder().build(is);
session = factory.openSession();
} catch (IOException e) {
e.printStackTrace();
}
PageInfo pi=new PageInfo();
pi.setPageNumber(pageNumber);
pi.setPageSize(pageSize);
Map<String,Integer>map=new HashMap();
map.put("pageSize",pageSize);
map.put("pageStart",pageSize*(pageNumber-1));
pi.setList(session.selectList("com.wj.mapper.PeopleMapper.selByPage",map));
//总条数
long count = session.selectOne("com.wj.mapper.PeopleMapper.selCount");
pi.setTotal(count%pageSize==0?count/pageSize:count/pageSize+1);
return pi;
}
}
6.ShowPageController.java
package com.wj.controller;
import com.wj.com.wj.service.Impl.PeopleServiceIml;
import com.wj.com.wj.service.PeopleService;
import com.wj.pojo.PageInfo;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* @Auther: wj
* @Date: 2019/9/10
* @Description: com.wj.controller
* @version: 1.0
*/
@WebServlet("/page")
public class ShowPageController extends HttpServlet{
private PeopleService peopleServiceImpl=new PeopleServiceIml();
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
//第一次访问验证,如果没有传递参数,设置默认值
String pageSizeStr=req.getParameter("pageSize");
int pageSize=2;
if(pageSizeStr!=null&&!pageSizeStr.equals("")){
pageSize=Integer.parseInt(pageSizeStr);
}
String pageNumberStr=req.getParameter("pageNumber");
int pageNumber=1;
if(pageNumberStr!=null&&!pageNumberStr.equals("")){
pageNumber=Integer.parseInt(pageNumberStr);
}
PageInfo pi = peopleServiceImpl.showPage(pageSize, pageNumber);
req.setAttribute("PageInfo",pi);
req.getRequestDispatcher("/index.jsp").forward(req,resp);
}
}
实体类1:People.java
package com.wj.pojo;
/**
* @Auther: wj
* @Date: 2019/9/8
* @Description: com.wj.pojo
* @version: 1.0
*/
public class People {
private int id;
private String name;
private int age;
public People(){
}
public People(int id, String name, int age) {
this.id = id;
this.name = name;
this.age = age;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "People{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
}
}
实体类2:PageInfo.java
package com.wj.pojo;
import java.util.List;
/**
* @Auther: wj
* @Date: 2019/9/10
* @Description: com.wj.pojo
* @version: 1.0
*/
public class PageInfo {
private int pageSize;
private int pageNumber;
private long total;//总页数
private List<?> list;//当前页显示数据
public int getPageSize() {
return pageSize;
}
public void setPageSize(int pageSize) {
this.pageSize = pageSize;
}
public int getPageNumber() {
return pageNumber;
}
public void setPageNumber(int pageNumber) {
this.pageNumber = pageNumber;
}
public long getTotal() {
return total;
}
public void setTotal(long total) {
this.total = total;
}
public List<?> getList() {
return list;
}
public void setList(List<?> list) {
this.list = list;
}
public PageInfo() {
}
public PageInfo(int pageSize, int pageNumber, long total, List<?> list) {
this.pageSize = pageSize;
this.pageNumber = pageNumber;
this.total = total;
this.list = list;
}
@Override
public String toString() {
return "PageInfo{" +
"pageSize=" + pageSize +
", pageNumber=" + pageNumber +
", total=" + total +
", list=" + list +
'}';
}
}
index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<table border="1px">
<tr>
<th>编号</th>
<th>姓名</th>
<th>年龄</th>
</tr>
<c:forEach items="${PageInfo.list}" var="pi">
<tr>
<td>${pi.id}</td>
<td>${pi.name}</td>
<td>${pi.age}</td>
</tr>
</c:forEach>
</table>
<a href="page?pageNumber=${PageInfo.pageNumber-1}&pageSize=${PageInfo.pageSize}"
<c:if test="${PageInfo.pageNumber<=1}">
οnclick="javaScript:return false;"
</c:if>
>上一页</a>
<a href="page?pageNumber=${PageInfo.pageNumber+1}&pageSize=${PageInfo.pageSize}"
<c:if test="${PageInfo.pageNumber>=PageInfo.total}">
οnclick="javaScript:return false;"
</c:if>
>下一页</a>
</body>
</html>
以上就是 Mybatis 完成分页查询的全部代码了,如果有什么问题可以一起讨论哦