Mybatis-分页与动态字符

目录

一.Mybatis动态分页

   什么是动态分页:

 导入pom依赖

配置拦截器

编写Bookmapper文件

配置pageBean文件

 配置BookBiz接口类

配置BookBizImpl实现接口类

 编写实现类demo

测试结果

​编辑 

不走插件,不会分页

 二.Mybatis的特殊字符

编写一个BookDto

 编写BookMapper.xml

 编写BookMapper

 编写接口类

编写接口实现类

​编辑 

编写测试类

测试结果


一.Mybatis动态分页

   什么是动态分页:

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的动态分页可以根据用户的需求动态生成查询语句,实现灵活的数据分页操作。

 导入pom依赖




  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
        
      
  

配置拦截器




    
    

    
        
    

    
    
        
    

    
    
        
    

    
    
        
            
            

            
            
            
            
            
                
                
                
                
            
        
    

    
        
    

编写Bookmapper文件

 

Mybatis-分页与动态字符_第1张图片

配置pageBean文件

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
				+ "]";
	}


}

 配置BookBiz接口类

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 list04(Map map);

    List bname1 (Integer bid);
    List bname2( String bname);

    List like4(String bname, PageBean pageBean);
}

配置BookBizImpl实现接口类

Mybatis-分页与动态字符_第2张图片

 编写实现类demo

Mybatis-分页与动态字符_第3张图片

测试结果

Mybatis-分页与动态字符_第4张图片 

不走插件,不会分页

Mybatis-分页与动态字符_第5张图片

 二.Mybatis的特殊字符

pojo/entity/model:描述数据库表对应的实体类

vo:view object 视图对象:专门用来展示的 Java.util.Map vo.OrderItemVo Order order

dto:接受参数的 

编写一个BookDto

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;
    }
}

 编写BookMapper.xml

大于最小值小于最大值 ,一般都用第二种,输出结果都相同

Mybatis-分页与动态字符_第6张图片

 编写BookMapper

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 list04(Map map);

    List bname1(@Param("bid") Integer bid);
    List bname2(@Param("bname") String bname);

    List like4(@Param("bname") String bname);

    List querByMinMax(BookDto bookDto);
}

 编写接口类

编写接口实现类

Mybatis-分页与动态字符_第7张图片 

编写测试类

Mybatis-分页与动态字符_第8张图片

测试结果

Mybatis-分页与动态字符_第9张图片 

 

 

你可能感兴趣的:(mybatis,java,开发语言)