目录
一.Mybatis动态分页
什么是动态分页:
导入pom依赖
配置拦截器
编写Bookmapper文件
配置pageBean文件
配置BookBiz接口类
配置BookBizImpl实现接口类
编写实现类demo
测试结果
编辑
不走插件,不会分页
二.Mybatis的特殊字符
编写一个BookDto
编写BookMapper.xml
编写BookMapper
编写接口类
编写接口实现类
编辑
编写测试类
测试结果
MyBatis是Java中一种持久层框架,它提供了许多数据库操作的便利性。在使用MyBatis进行数据查询时,动态分页是一种常见的需求。
动态分页是指根据用户的请求动态生成数据库查询语句,以满足不同的分页需求。具体来说,动态分页通过在查询语句中添加limit和offset来实现。limit表示每页查询的记录数,offset表示查询结果的偏移量。
在MyBatis中,可以使用动态SQL语句来实现动态分页。动态SQL语句是一种可以根据条件决定是否包含某一段SQL语句的技术。MyBatis提供了一些标签和函数来支持动态SQL语句的编写,比如if、choose、when、otherwise等。
使用MyBatis实现动态分页的步骤如下:
在SQL映射文件中定义查询语句,根据需要使用动态SQL语句。
在查询语句中使用limit和offset来实现分页。
在Java代码中调用MyBatis的分页方法,传入分页参数。
MyBatis会根据传入的分页参数动态生成查询语句,返回分页结果。
总结来说,MyBatis的动态分页可以根据用户的需求动态生成查询语句,实现灵活的数据分页操作。
4.0.0
com.zking
mybatis1
1.0-SNAPSHOT
war
mybatis1 Maven Webapp
http://www.example.com
1.8
1.8
junit
junit
4.12
javax.servlet
javax.servlet-api
4.0.0
provided
org.mybatis
mybatis
3.4.5
mysql
mysql-connector-java
5.1.44
org.apache.logging.log4j
log4j-core
2.9.1
org.apache.logging.log4j
log4j-api
2.9.1
org.apache.logging.log4j
log4j-web
2.9.1
com.github.pagehelper
pagehelper
5.1.2
org.junit.jupiter
junit-jupiter
RELEASE
compile
mybatis1
src/main/java
**/*.xml
src/main/resources
jdbc.properties
*.xml
org.mybatis.generator
mybatis-generator-maven-plugin
1.3.2
mysql
mysql-connector-java
5.1.44
true
maven-clean-plugin
3.1.0
maven-resources-plugin
3.0.2
maven-compiler-plugin
3.8.0
maven-surefire-plugin
2.22.1
maven-war-plugin
3.2.2
maven-install-plugin
2.5.2
maven-deploy-plugin
2.8.2
package com.zking.utils;
import java.io.Serializable;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
public class PageBean implements Serializable {
private static final long serialVersionUID = 2422581023658455731L;
//页码
private int page=1;
//每页显示记录数
private int rows=10;
//总记录数
private int total=0;
//是否分页
private boolean isPagination=true;
//上一次的请求路径
private String url;
//获取所有的请求参数
private Map map;
public PageBean() {
super();
}
//设置请求参数
public void setRequest(HttpServletRequest req) {
String page=req.getParameter("page");
String rows=req.getParameter("rows");
String pagination=req.getParameter("pagination");
this.setPage(page);
this.setRows(rows);
this.setPagination(pagination);
this.url=req.getContextPath()+req.getServletPath();
this.map=req.getParameterMap();
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public Map getMap() {
return map;
}
public void setMap(Map map) {
this.map = map;
}
public int getPage() {
return page;
}
public void setPage(int page) {
this.page = page;
}
public void setPage(String page) {
if(null!=page&&!"".equals(page.trim()))
this.page = Integer.parseInt(page);
}
public int getRows() {
return rows;
}
public void setRows(int rows) {
this.rows = rows;
}
public void setRows(String rows) {
if(null!=rows&&!"".equals(rows.trim()))
this.rows = Integer.parseInt(rows);
}
public int getTotal() {
return total;
}
public void setTotal(int total) {
this.total = total;
}
public void setTotal(String total) {
this.total = Integer.parseInt(total);
}
public boolean isPagination() {
return isPagination;
}
public void setPagination(boolean isPagination) {
this.isPagination = isPagination;
}
public void setPagination(String isPagination) {
if(null!=isPagination&&!"".equals(isPagination.trim()))
this.isPagination = Boolean.parseBoolean(isPagination);
}
/**
* 获取分页起始标记位置
* @return
*/
public int getStartIndex() {
//(当前页码-1)*显示记录数
return (this.getPage()-1)*this.rows;
}
/**
* 末页
* @return
*/
public int getMaxPage() {
int totalpage=this.total/this.rows;
if(this.total%this.rows!=0)
totalpage++;
return totalpage;
}
/**
* 下一页
* @return
*/
public int getNextPage() {
int nextPage=this.page+1;
if(this.page>=this.getMaxPage())
nextPage=this.getMaxPage();
return nextPage;
}
/**
* 上一页
* @return
*/
public int getPreivousPage() {
int previousPage=this.page-1;
if(previousPage<1)
previousPage=1;
return previousPage;
}
@Override
public String toString() {
return "PageBean [page=" + page + ", rows=" + rows + ", total=" + total + ", isPagination=" + isPagination
+ "]";
}
}
package com.zking.biz;
import com.zking.model.Book;
import com.zking.utils.PageBean;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
public interface BookBiz {
int deleteByPrimaryKey(Integer bid);
int insert(Book record);
int insertSelective(Book record);
Book selectByPrimaryKey(Integer bid);
int updateByPrimaryKeySelective(Book record);
int updateByPrimaryKey(Book record);
List selectByBids(List bids);
List like1( String bname);
List like2( String bname);
List like3( String bname);
List list01();
List list02();
Map list03(Map map);
List
pojo/entity/model:描述数据库表对应的实体类
vo:view object 视图对象:专门用来展示的 Java.util.Map vo.OrderItemVo Order order
dto:接受参数的
package com.zking.dto;
import com.zking.model.Book;
/**
* @author bing人
* @site
* @company xy集团
* @create 2023-08-24 16:13
*/
public class BookDto extends Book {
private float min;
private float max;
public float getMin() {
return min;
}
public void setMin(float min) {
this.min = min;
}
public float getMax() {
return max;
}
public void setMax(float max) {
this.max = max;
}
}
大于最小值小于最大值 ,一般都用第二种,输出结果都相同
package com.zking.mapper;
import com.zking.dto.BookDto;
import com.zking.model.Book;
import org.apache.ibatis.annotations.Param;
import java.util.List;
import java.util.Map;
public interface BookMapper {
int deleteByPrimaryKey(Integer bid);
int insert(Book record);
int insertSelective(Book record);
Book selectByPrimaryKey(Integer bid);
int updateByPrimaryKeySelective(Book record);
int updateByPrimaryKey(Book record);
List selectByBids(@Param("bids") List bids);
List like1(@Param("bname") String bname);
List like2(@Param("bname") String bname);
List like3(@Param("bname") String bname);
List list01();
List list02();
Map list03(Map map);
List