GVKun编程网logo

mybatis-plus和pageHelper 设置关闭分页(mybatis plus page分页)

21

这篇文章主要围绕mybatis-plus和pageHelper设置关闭分页和mybatispluspage分页展开,旨在为您提供一份详细的参考资料。我们将全面介绍mybatis-plus和pageHe

这篇文章主要围绕mybatis-plus和pageHelper 设置关闭分页mybatis plus page分页展开,旨在为您提供一份详细的参考资料。我们将全面介绍mybatis-plus和pageHelper 设置关闭分页的优缺点,解答mybatis plus page分页的相关问题,同时也会为您带来Mabatis三剑客分别是:mybatis-generator、mybatis-plugin、mybatis-pagehelper、maven下mybatis-plus和pagehelp冲突问题的解决方法、Mybatis (八) Mybatis整合PageHelper实现分页、Mybatis PageHelper 分页不起作用的实用方法。

本文目录一览:

mybatis-plus和pageHelper 设置关闭分页(mybatis plus page分页)

mybatis-plus和pageHelper 设置关闭分页(mybatis plus page分页)

需求

  1. 已有分页条件搜索接口,现在需要将符合条件的所有结果导出到excel中,此时就不能将查询结果分页。
  2. mybastis-plus的搜索vo继承了Page,但是想复用但又不需要分页

为了复用分页查询的sql,可以使用分页插件的不同配置来实现关闭分页功能。
现在主流的分页插件有pageHelperMybatisPlus的IPage,

pageHelper配置

pageSize = 0


MybatisPlus的IPage

current=-1, size=-1
eg:

@Override
public ServiceResponse getList(TeamGridleaderSearchVo searchVo) {
    searchVo.setCurrent(-1);
    searchVo.setSize(-1);
    IPage<TeamGridleaderListVo> page = gridleaderMapper.selectPage(searchVo);
    return ServiceResponse.createSuccessByData(page);
}

或者前端直接传入

{
    "current": -1,
    "size": -1,
    "searchCount": false
}

Mabatis三剑客分别是:mybatis-generator、mybatis-plugin、mybatis-pagehelper

Mabatis三剑客分别是:mybatis-generator、mybatis-plugin、mybatis-pagehelper

<divid="content_views">

<h3 id="本文用的是mavenidea15"><a name="t0"></a> 本文用的是maven,idea15</h3> <p> Mabatis三剑客分别是:mybatis-generator、mybatis-<a href="https://www.baidu.com/s?wd=plugin&amp;tn=24004469_oem_dg&amp;rsv_dl=gh_pl_sl_csd" target="_blank">plugin</a>、mybatis-pagehelper</p> <h2 id="一mybatis-generator"><a name="t1"></a> <a name="t1"target="_blank"></a>一、mybatis-generator</h2> <p> 根据我们的数据库自动生成pojo、dao和xml文件&nbsp;<br> pojo里面放的是跟数据库字段一一对应的对象、dao层是接口,供service使用,xml是这个dao层接口的实现,sql语句都写在xml里</p> <h4 id="1引入mabatis-generator"> <a name="t2"target="_blank"></a>1.引入mabatis-generator</h4> <p> pom.xml里引入配置</p> <prename="code" onclick="hljs.copyCode(event)"><code><ol><li><div><divdata-line-number="1"></div></div><div><div><span><span>&lt;</span><span><span><span>plugin</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="2"></div></div><div><div> <span><span>&lt;</span><span><span><span>groupId</span></span></span><span>&gt;</span></span>org.apache.maven.plugins<span><span>&lt;/</span><span><span><span>groupId</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="3"></div></div><div><div> <span><span>&lt;</span><span><span><span>artifactId</span></span></span><span>&gt;</span></span>maven-compiler-plugin<span><span>&lt;/</span><span><span><span>artifactId</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="4"></div></div><div><div> <span><span>&lt;</span><span><span><span>configuration</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="5"></div></div><div><div> <span><span>&lt;</span><span><span><span>source</span></span></span><span>&gt;</span></span>1.7<span><span>&lt;/</span><span><span><span>source</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="6"></div></div><div><div> <span><span>&lt;</span><span><span><span>target</span></span></span><span>&gt;</span></span>1.7<span><span>&lt;/</span><span><span><span>target</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="7"></div></div><div><div> <span><span>&lt;</span><span><span><span>encoding</span></span></span><span>&gt;</span></span>UTF-8<span><span>&lt;/</span><span><span><span>encoding</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="8"></div></div><div><div> <span><span>&lt;</span><span><span><span>compilerArguments</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="9"></div></div><div><div> <span><span>&lt;</span><span><span><span>extdirs</span></span></span><span>&gt;</span></span>${project.basedir}/src/main/webapp/WEB-INF/lib/<span><span>&lt;/</span><span><span><span>extdirs</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="10"></div></div><div><div> <span><span>&lt;/</span><span><span><span>compilerArguments</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="11"></div></div><div><div> <span><span>&lt;/</span><span><span><span>configuration</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="12"></div></div><div><div><span><span>&lt;/</span><span><span><span>plugin</span></span></span><span>&gt;</span></span></div></div></li></ol></code><divdata-title="复制"></div></pre><p> 引入generatorConfig.xml&nbsp;<br> generatorConfig.xml</p> <prename="code" onclick="hljs.copyCode(event)"><code><ol><li><div><divdata-line-number="1"></div></div><div><div><span><span><span>&lt;?</span>xml version=<span>"1.0"</span> encoding=<span>"UTF-8"</span><span>?&gt;</span></span></span></div></div></li><li><div><divdata-line-number="2"></div></div><div><div><span><span><span>&lt;!DOCTYPE generatorConfiguration</span></span></span></div></div></li><li><div><divdata-line-number="3"></div></div><div><div><span> PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"</span></div></div></li><li><div><divdata-line-number="4"></div></div><div><div><span> "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd"&gt;</span></div></div></li><li><div><divdata-line-number="5"></div></div><div><div> </div></div></li><li><div><divdata-line-number="6"></div></div><div><div><span><span>&lt;</span><span><span><span>generatorConfiguration</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="7"></div></div><div><div> <span><span>&lt;!--导入属性配置--&gt;</span></span></div></div></li><li><div><divdata-line-number="8"></div></div><div><div> <span><span>&lt;</span><span><span><span>properties</span></span></span><span> </span><span><span><span>resource</span></span></span><span>=</span><span><span><span>"datasource.properties"</span></span></span><span>&gt;</span></span><span><span>&lt;/</span><span><span><span>properties</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="9"></div></div><div><div> </div></div></li><li><div><divdata-line-number="10"></div></div><div><div> <span><span>&lt;!--指定特定数据库的jdbc驱动jar包的位置--&gt;</span></span></div></div></li><li><div><divdata-line-number="11"></div></div><div><div> <span><span>&lt;</span><span><span><span>classPathEntry</span></span></span><span> </span><span><span><span>location</span></span></span><span>=</span><span><span><span>"${db.driverLocation}"</span></span></span><span>/&gt;</span></span></div></div></li><li><div><divdata-line-number="12"></div></div><div><div> </div></div></li><li><div><divdata-line-number="13"></div></div><div><div> <span><span>&lt;</span><span><span><span>context</span></span></span><span> </span><span><span><span>id</span></span></span><span>=</span><span><span><span>"default"</span></span></span><span> </span><span><span><span>targetRuntime</span></span></span><span>=</span><span><span><span>"MyBatis3"</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="14"></div></div><div><div> </div></div></li><li><div><divdata-line-number="15"></div></div><div><div> <span><span>&lt;!-- optional,旨在创建class时,对注释进行控制 --&gt;</span></span></div></div></li><li><div><divdata-line-number="16"></div></div><div><div> <span><span>&lt;</span><span><span><span>commentGenerator</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="17"></div></div><div><div> <span><span>&lt;</span><span><span><span>property</span></span></span><span> </span><span><span><span>name</span></span></span><span>=</span><span><span><span>"suppressDate"</span></span></span><span> </span><span><span><span>value</span></span></span><span>=</span><span><span><span>"true"</span></span></span><span>/&gt;</span></span></div></div></li><li><div><divdata-line-number="18"></div></div><div><div> <span><span>&lt;</span><span><span><span>property</span></span></span><span> </span><span><span><span>name</span></span></span><span>=</span><span><span><span>"suppressAllComments"</span></span></span><span> </span><span><span><span>value</span></span></span><span>=</span><span><span><span>"true"</span></span></span><span>/&gt;</span></span></div></div></li><li><div><divdata-line-number="19"></div></div><div><div> <span><span>&lt;/</span><span><span><span>commentGenerator</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="20"></div></div><div><div> </div></div></li><li><div><divdata-line-number="21"></div></div><div><div> <span><span>&lt;!--jdbc的数据库连接 --&gt;</span></span></div></div></li><li><div><divdata-line-number="22"></div></div><div><div> <span><span>&lt;</span><span><span><span>jdbcConnection</span></span></span></span></div></div></li><li><div><divdata-line-number="23"></div></div><div><div><span> </span><span><span><span>driverClass</span></span></span><span>=</span><span><span><span>"${db.driverClassName}"</span></span></span><span></span></div></div></li><li><div><divdata-line-number="24"></div></div><div><div> <span><span><span>connectionURL</span></span></span><span>=</span><span><span><span>"${db.url}"</span></span></span><span></span></div></div></li><li><div><divdata-line-number="25"></div></div><div><div> <span><span><span>userId</span></span></span><span>=</span><span><span><span>"${db.username}"</span></span></span><span></span></div></div></li><li><div><divdata-line-number="26"></div></div><div><div> <span><span><span>password</span></span></span><span>=</span><span><span><span>"${db.password}"</span></span></span><span>&gt;</span></div></div></li><li><div><divdata-line-number="27"></div></div><div><div> <span><span>&lt;/</span><span><span><span>jdbcConnection</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="28"></div></div><div><div> </div></div></li><li><div><divdata-line-number="29"></div></div><div><div> </div></div></li><li><div><divdata-line-number="30"></div></div><div><div> <span><span>&lt;!-- 非必需,类型处理器,在数据库类型和java类型之间的转换控制--&gt;</span></span></div></div></li><li><div><divdata-line-number="31"></div></div><div><div> <span><span>&lt;</span><span><span><span>javaTypeResolver</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="32"></div></div><div><div> <span><span>&lt;</span><span><span><span>property</span></span></span><span> </span><span><span><span>name</span></span></span><span>=</span><span><span><span>"forceBigDecimals"</span></span></span><span> </span><span><span><span>value</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span>/&gt;</span></span></div></div></li><li><div><divdata-line-number="33"></div></div><div><div> <span><span>&lt;/</span><span><span><span>javaTypeResolver</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="34"></div></div><div><div> </div></div></li><li><div><divdata-line-number="35"></div></div><div><div> </div></div></li><li><div><divdata-line-number="36"></div></div><div><div> <span><span><span>&lt;!-- Model模型生成器,用来生成含有主键key的类,记录类 以及查询Example类</span></span></span></div></div></li><li><div><divdata-line-number="37"></div></div><div><div><span> targetPackage 指定生成的model生成所在的包名</span></div></div></li><li><div><divdata-line-number="38"></div></div><div><div><span> targetProject 指定在该项目下所在的路径</span></div></div></li><li><div><divdata-line-number="39"></div></div><div><div><span> --&gt;</span></div></div></li><li><div><divdata-line-number="40"></div></div><div><div> <span><span>&lt;!--&lt;javaModelGenerator targetPackage="com.mmall.pojo" targetProject=".\src\main\java"&gt;--&gt;</span></span></div></div></li><li><div><divdata-line-number="41"></div></div><div><div> <span><span>&lt;</span><span><span><span>javaModelGenerator</span></span></span><span> </span><span><span><span>targetPackage</span></span></span><span>=</span><span><span><span>"com.mmall.pojo"</span></span></span><span> </span><span><span><span>targetProject</span></span></span><span>=</span><span><span><span>"./src/main/java"</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="42"></div></div><div><div> <span><span>&lt;!-- 是否允许子包,即targetPackage.schemaName.tableName --&gt;</span></span></div></div></li><li><div><divdata-line-number="43"></div></div><div><div> <span><span>&lt;</span><span><span><span>property</span></span></span><span> </span><span><span><span>name</span></span></span><span>=</span><span><span><span>"enableSubPackages"</span></span></span><span> </span><span><span><span>value</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span>/&gt;</span></span></div></div></li><li><div><divdata-line-number="44"></div></div><div><div> <span><span>&lt;!-- 是否对model添加 构造函数 --&gt;</span></span></div></div></li><li><div><divdata-line-number="45"></div></div><div><div> <span><span>&lt;</span><span><span><span>property</span></span></span><span> </span><span><span><span>name</span></span></span><span>=</span><span><span><span>"constructorBased"</span></span></span><span> </span><span><span><span>value</span></span></span><span>=</span><span><span><span>"true"</span></span></span><span>/&gt;</span></span></div></div></li><li><div><divdata-line-number="46"></div></div><div><div> <span><span>&lt;!-- 是否对类CHAR类型的列的数据进行trim操作 --&gt;</span></span></div></div></li><li><div><divdata-line-number="47"></div></div><div><div> <span><span>&lt;</span><span><span><span>property</span></span></span><span> </span><span><span><span>name</span></span></span><span>=</span><span><span><span>"trimStrings"</span></span></span><span> </span><span><span><span>value</span></span></span><span>=</span><span><span><span>"true"</span></span></span><span>/&gt;</span></span></div></div></li><li><div><divdata-line-number="48"></div></div><div><div> <span><span>&lt;!-- 建立的Model对象是否 不可改变 即生成的Model对象不会有 setter方法,只有构造方法 --&gt;</span></span></div></div></li><li><div><divdata-line-number="49"></div></div><div><div> <span><span>&lt;</span><span><span><span>property</span></span></span><span> </span><span><span><span>name</span></span></span><span>=</span><span><span><span>"immutable"</span></span></span><span> </span><span><span><span>value</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span>/&gt;</span></span></div></div></li><li><div><divdata-line-number="50"></div></div><div><div> <span><span>&lt;/</span><span><span><span>javaModelGenerator</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="51"></div></div><div><div> </div></div></li><li><div><divdata-line-number="52"></div></div><div><div> <span><span>&lt;!--mapper映射文件生成所在的目录 为每一个数据库的表生成对应的SqlMap文件 --&gt;</span></span></div></div></li><li><div><divdata-line-number="53"></div></div><div><div> <span><span>&lt;!--&lt;sqlMapGenerator targetPackage="mappers" targetProject=".\src\main\resources"&gt;--&gt;</span></span></div></div></li><li><div><divdata-line-number="54"></div></div><div><div> <span><span>&lt;</span><span><span><span>sqlMapGenerator</span></span></span><span> </span><span><span><span>targetPackage</span></span></span><span>=</span><span><span><span>"mappers"</span></span></span><span> </span><span><span><span>targetProject</span></span></span><span>=</span><span><span><span>"./src/main/resources"</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="55"></div></div><div><div> <span><span>&lt;</span><span><span><span>property</span></span></span><span> </span><span><span><span>name</span></span></span><span>=</span><span><span><span>"enableSubPackages"</span></span></span><span> </span><span><span><span>value</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span>/&gt;</span></span></div></div></li><li><div><divdata-line-number="56"></div></div><div><div> <span><span>&lt;/</span><span><span><span>sqlMapGenerator</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="57"></div></div><div><div> </div></div></li><li><div><divdata-line-number="58"></div></div><div><div> <span><span><span>&lt;!-- 客户端代码,生成易于使用的针对Model对象和XML配置文件 的代码</span></span></span></div></div></li><li><div><divdata-line-number="59"></div></div><div><div><span> type="ANNOTATEDMAPPER",生成Java Model 和基于注解的Mapper对象</span></div></div></li><li><div><divdata-line-number="60"></div></div><div><div><span> type="MIXEDMAPPER",生成基于注解的Java Model 和相应的Mapper对象</span></div></div></li><li><div><divdata-line-number="61"></div></div><div><div><span> type="XMLMAPPER",生成SQLMap XML文件和独立的Mapper接口</span></div></div></li><li><div><divdata-line-number="62"></div></div><div><div><span> --&gt;</span></div></div></li><li><div><divdata-line-number="63"></div></div><div><div> </div></div></li><li><div><divdata-line-number="64"></div></div><div><div> <span><span>&lt;!-- targetPackage:mapper接口dao生成的位置 --&gt;</span></span></div></div></li><li><div><divdata-line-number="65"></div></div><div><div> <span><span>&lt;!--&lt;javaClientGenerator type="XMLMAPPER" targetPackage="com.mmall.dao" targetProject=".\src\main\java"&gt;--&gt;</span></span></div></div></li><li><div><divdata-line-number="66"></div></div><div><div> <span><span>&lt;</span><span><span><span>javaClientGenerator</span></span></span><span> </span><span><span><span>type</span></span></span><span>=</span><span><span><span>"XMLMAPPER"</span></span></span><span> </span><span><span><span>targetPackage</span></span></span><span>=</span><span><span><span>"com.mmall.dao"</span></span></span><span> </span><span><span><span>targetProject</span></span></span><span>=</span><span><span><span>"./src/main/java"</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="67"></div></div><div><div> <span><span>&lt;!-- enableSubPackages:是否让schema作为包的后缀 --&gt;</span></span></div></div></li><li><div><divdata-line-number="68"></div></div><div><div> <span><span>&lt;</span><span><span><span>property</span></span></span><span> </span><span><span><span>name</span></span></span><span>=</span><span><span><span>"enableSubPackages"</span></span></span><span> </span><span><span><span>value</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> /&gt;</span></span></div></div></li><li><div><divdata-line-number="69"></div></div><div><div> <span><span>&lt;/</span><span><span><span>javaClientGenerator</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="70"></div></div><div><div> </div></div></li><li><div><divdata-line-number="71"></div></div><div><div> </div></div></li><li><div><divdata-line-number="72"></div></div><div><div> <span><span>&lt;</span><span><span><span>table</span></span></span><span> </span><span><span><span>tableName</span></span></span><span>=</span><span><span><span>"mmall_shipping"</span></span></span><span> </span><span><span><span>domainObjectName</span></span></span><span>=</span><span><span><span>"Shipping"</span></span></span><span> </span><span><span><span>enableCountByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableUpdateByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableDeleteByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableSelectByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>selectByExampleQueryId</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span>&gt;</span></span><span><span>&lt;/</span><span><span><span>table</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="73"></div></div><div><div> <span><span>&lt;</span><span><span><span>table</span></span></span><span> </span><span><span><span>tableName</span></span></span><span>=</span><span><span><span>"mmall_cart"</span></span></span><span> </span><span><span><span>domainObjectName</span></span></span><span>=</span><span><span><span>"Cart"</span></span></span><span> </span><span><span><span>enableCountByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableUpdateByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableDeleteByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableSelectByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>selectByExampleQueryId</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span>&gt;</span></span><span><span>&lt;/</span><span><span><span>table</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="74"></div></div><div><div> <span><span>&lt;</span><span><span><span>table</span></span></span><span> </span><span><span><span>tableName</span></span></span><span>=</span><span><span><span>"mmall_cart_item"</span></span></span><span> </span><span><span><span>domainObjectName</span></span></span><span>=</span><span><span><span>"CartItem"</span></span></span><span> </span><span><span><span>enableCountByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableUpdateByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableDeleteByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableSelectByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>selectByExampleQueryId</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span>&gt;</span></span><span><span>&lt;/</span><span><span><span>table</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="75"></div></div><div><div> <span><span>&lt;</span><span><span><span>table</span></span></span><span> </span><span><span><span>tableName</span></span></span><span>=</span><span><span><span>"mmall_category"</span></span></span><span> </span><span><span><span>domainObjectName</span></span></span><span>=</span><span><span><span>"Category"</span></span></span><span> </span><span><span><span>enableCountByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableUpdateByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableDeleteByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableSelectByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>selectByExampleQueryId</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span>&gt;</span></span><span><span>&lt;/</span><span><span><span>table</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="76"></div></div><div><div> <span><span>&lt;</span><span><span><span>table</span></span></span><span> </span><span><span><span>tableName</span></span></span><span>=</span><span><span><span>"mmall_order"</span></span></span><span> </span><span><span><span>domainObjectName</span></span></span><span>=</span><span><span><span>"Order"</span></span></span><span> </span><span><span><span>enableCountByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableUpdateByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableDeleteByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableSelectByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>selectByExampleQueryId</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span>&gt;</span></span><span><span>&lt;/</span><span><span><span>table</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="77"></div></div><div><div> <span><span>&lt;</span><span><span><span>table</span></span></span><span> </span><span><span><span>tableName</span></span></span><span>=</span><span><span><span>"mmall_order_item"</span></span></span><span> </span><span><span><span>domainObjectName</span></span></span><span>=</span><span><span><span>"OrderItem"</span></span></span><span> </span><span><span><span>enableCountByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableUpdateByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableDeleteByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableSelectByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>selectByExampleQueryId</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span>&gt;</span></span><span><span>&lt;/</span><span><span><span>table</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="78"></div></div><div><div> <span><span>&lt;</span><span><span><span>table</span></span></span><span> </span><span><span><span>tableName</span></span></span><span>=</span><span><span><span>"mmall_pay_info"</span></span></span><span> </span><span><span><span>domainObjectName</span></span></span><span>=</span><span><span><span>"PayInfo"</span></span></span><span> </span><span><span><span>enableCountByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableUpdateByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableDeleteByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableSelectByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>selectByExampleQueryId</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span>&gt;</span></span><span><span>&lt;/</span><span><span><span>table</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="79"></div></div><div><div> <span><span>&lt;</span><span><span><span>table</span></span></span><span> </span><span><span><span>tableName</span></span></span><span>=</span><span><span><span>"mmall_product"</span></span></span><span> </span><span><span><span>domainObjectName</span></span></span><span>=</span><span><span><span>"Product"</span></span></span><span> </span><span><span><span>enableCountByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableUpdateByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableDeleteByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableSelectByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>selectByExampleQueryId</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="80"></div></div><div><div> <span><span>&lt;</span><span><span><span>columnOverride</span></span></span><span> </span><span><span><span>column</span></span></span><span>=</span><span><span><span>"detail"</span></span></span><span> </span><span><span><span>jdbcType</span></span></span><span>=</span><span><span><span>"VARCHAR"</span></span></span><span> /&gt;</span></span></div></div></li><li><div><divdata-line-number="81"></div></div><div><div> <span><span>&lt;</span><span><span><span>columnOverride</span></span></span><span> </span><span><span><span>column</span></span></span><span>=</span><span><span><span>"sub_images"</span></span></span><span> </span><span><span><span>jdbcType</span></span></span><span>=</span><span><span><span>"VARCHAR"</span></span></span><span> /&gt;</span></span></div></div></li><li><div><divdata-line-number="82"></div></div><div><div> <span><span>&lt;/</span><span><span><span>table</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="83"></div></div><div><div> <span><span>&lt;</span><span><span><span>table</span></span></span><span> </span><span><span><span>tableName</span></span></span><span>=</span><span><span><span>"mmall_user"</span></span></span><span> </span><span><span><span>domainObjectName</span></span></span><span>=</span><span><span><span>"User"</span></span></span><span> </span><span><span><span>enableCountByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableUpdateByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableDeleteByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>enableSelectByExample</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span> </span><span><span><span>selectByExampleQueryId</span></span></span><span>=</span><span><span><span>"false"</span></span></span><span>&gt;</span></span><span><span>&lt;/</span><span><span><span>table</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="84"></div></div><div><div> </div></div></li><li><div><divdata-line-number="85"></div></div><div><div> </div></div></li><li><div><divdata-line-number="86"></div></div><div><div> <span><span>&lt;!-- mybatis插件的搭建 --&gt;</span></span></div></div></li><li><div><divdata-line-number="87"></div></div><div><div> <span><span>&lt;/</span><span><span><span>context</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="88"></div></div><div><div><span><span>&lt;/</span><span><span><span>generatorConfiguration</span></span></span><span>&gt;</span></span></div></div></li></ol></code><divdata-title="复制"></div></pre><h4 id="2新建datasourceproperties文件配置数据库连接信息这里配置本地数据库"> <a name="t3"target="_blank"></a>2.新建datasource.properties文件,配置数据库连接信息(这里配置本地数据库)</h4> <p> <img src="https://img-blog.csdn.net/20170501211807876?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjg0MTIwOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="这里写图片描述" title=""></p> <prename="code" onclick="hljs.copyCode(event)"><code><ol><li><div><divdata-line-number="1"></div></div><div><div>db.driverLocation=<span><span>F</span></span><span><span>:</span>/IdeaProjects/mmall/src/main/tool/mysql-connector-java-</span><span><span>5.1</span></span>.<span><span>6</span></span>-bin.jar</div></div></li><li><div><divdata-line-number="2"></div></div><div><div>db.driverClassName=com.mysql.jdbc.<span>Driver</span></div></div></li><li><div><divdata-line-number="3"></div></div><div><div>db.url=<span><span>jdbc:</span></span><span><span>mysql:</span></span>/<span><span>/localhost:3306/mmall</span></span>?useUnicode=<span><span>true</span></span>&amp;characterEncoding=<span>UTF</span>-<span><span>8</span></span></div></div></li><li><div><divdata-line-number="4"></div></div><div><div>db.username=root</div></div></li><li><div><divdata-line-number="5"></div></div><div><div>db.password=<span><span>940724</span></span></div></div></li></ol></code><divdata-title="复制"></div></pre><p> 配置完之后,就点击idea的左下角有个小按钮,把右侧的maven project按钮调出来(右侧已有的请忽略)&nbsp;<br><img src="https://img-blog.csdn.net/20170501212050752?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjg0MTIwOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="这里写图片描述" title="">&nbsp;<br> 点击maven project,并选定插件加载(双击就行)&nbsp;<br><img src="https://img-blog.csdn.net/20170501212307103?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjg0MTIwOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="这里写图片描述" title="">&nbsp;<br> 下方的控制台,出现build success就是成功了,就会发现dao的包和pojo包会生成好了接口和数据对象实体类,以及生成一个mapper文件夹,里面存储着数据库里各个实体的xml文件</p> <p> 注意mapper里生成的文件夹,我在创建的时候把时间戳给加里了,如果要完美的用的话,需要把时间戳优化一下</p> <h4 id="把insert标签下的createtimejdbctypetimestamp和updatetimejdbctypetimestamp改成now"> <a name="t4"target="_blank"></a>把insert标签下的#{createTime,jdbcType=TIMESTAMP}和#{updateTime,jdbcType=TIMESTAMP}改成now()</h4> <h4 id="把update标签下的updatetimejdbctypetimestamp改成now"> <a name="t5"target="_blank"></a>把update标签下的#{updateTime,jdbcType=TIMESTAMP}改成now()</h4> <p> 这个now()方法是数据库自带的函数,表示现在的时间</p> <hr><h2 id="二mybatis-plugin"><a name="t2"></a> <a name="t6"target="_blank"></a>二、mybatis-plugin</h2> <p> 我用的是idea15,如果其他版本不好用的,可以换成idea 15&nbsp;<br> 这是一个能够追踪dao接口和mapper文件里xml的一个插件</p> <ul><li> <p> 提供Mapper接口与配置文件中对应SQL的导航</p> </li><li> <p> 提供Mapper接口与配置文件中对应SQL的导航</p> </li><li> <p> 编辑XML文件时自动补全</p> </li><li> <p> 根据Mapper接口, 使用快捷键生成xml文件及SQL标签</p> </li><li> <p> ResultMap中的property支持自动补全,支持级联(属性A.属性B.属性C)</p> </li><li> <p> 快捷键生成@Param注解</p> </li><li> <p> XML中编辑SQL时, 括号自动补全</p> </li><li> <p> XML中编辑SQL时, 支持参数自动补全(基于@Param注解识别参数)</p> </li><li> <p> 自动检查Mapper XML文件中ID冲突</p> </li><li> <p> 自动检查Mapper XML文件中错误的属性值</p> </li><li> <p> 支持<a href="https://www.baidu.com/s?wd=Find&amp;tn=24004469_oem_dg&amp;rsv_dl=gh_pl_sl_csd" target="_blank">Find</a> Usage</p> </li><li> <p> 支持重构从命名</p> </li><li> <p> 支持别名</p> </li><li> <p> 自动生成ResultMap属性</p> </li><li> <p> 快捷键: Option + Enter(<a href="https://www.baidu.com/s?wd=Mac&amp;tn=24004469_oem_dg&amp;rsv_dl=gh_pl_sl_csd" target="_blank">Mac</a>) | Alt + Enter(Windows)(直接跳转到mapper中的sql语句的快捷键是:“Ctrl+ALT+B”)</p> </li></ul><h4 id="效果点击dao可以追踪到xml同理点击xml的sql右边小箭头可以追踪到dao方法"> <a name="t7"target="_blank"></a>效果:点击dao可以追踪到xml,,同理点击xml的sql右边小箭头,可以追踪到dao方法</h4> <p> <img src="https://img-blog.csdn.net/20170501230749182?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjg0MTIwOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="这里写图片描述" title=""></p> <h4 id="1安装插件"> <a name="t8"target="_blank"></a>1、安装插件:</h4> <p> <img src="https://img-blog.csdn.net/20170501214736063?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjg0MTIwOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="这里写图片描述" title="">&nbsp;<br> 然后重启下idea</p> <h4 id="2mybatis-plugin插件破解"> <a name="t9"target="_blank"></a>2.mybatis-plugin插件破解</h4> <p> 到这个网址去&nbsp;<br><a href="https://github.com/myoss/profile/tree/master/idea/plugin/MybatisPlugin" rel="nofollow"target="_blank">https://github.com/myoss/profile/tree/master/idea/plugin/MybatisPlugin</a>&nbsp;<br> 你看到了一个Git仓库,先clone下来,不会clone的down下来,记住路径&nbsp;<br> 接下来,你看到一堆版本,选择你安装的mybatis_plugin版本号,比如我的是IDEA15版本的,我安装版本就是v2.64,进入v2.64你会看到一个com文件夹,牢牢记住这个文件夹有大作用</p> <p> <img src="https://img-blog.csdn.net/20170501222135388?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjg0MTIwOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEa" alt="这里写图片描述" title=""></p> <p> 点击如图所示的右上角的fork,登录自己的github,登录之后,会发现右边有个绿色的Dowload图标,点击那个就可以下载别人的项目了&nbsp;<br><img src="https://img-blog.csdn.net/20170501224229186?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjg0MTIwOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="这里写图片描述" title=""></p> <h3 id="1-windows破解"><a name="t3"></a> <a name="t10"target="_blank"></a>(1) windows破解</h3> <p> 首先你要找到mybatis_plus.jar的位置,位置一般在这里&nbsp;<br> C:\Users\youname(你自己的文档).IntelliJIdea\config\plugins\mybatis_plus\lib&nbsp;<br> 用winRAR打开&nbsp;<br><img src="https://img-blog.csdn.net/20170501225736536?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjg0MTIwOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="这里写图片描述" title="">&nbsp;<br> 将下载好的破解,与plugin插件压缩包中的文件更换,拖入压缩包,更换就行&nbsp;<br><img src="https://img-blog.csdn.net/20170501225438518?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjg0MTIwOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="这里写图片描述" title=""></p> <h3 id="重启你的idea完毕破解搞定"><a name="t4"></a> <a name="t11"target="_blank"></a>重启你的IDEA,完毕,破解搞定</h3> <h3 id="2mac破解"><a name="t5"></a> <a name="t12"target="_blank"></a>(2)mac破解</h3> <p> 使用find命令在你的用户目录下查找mybatis_plus.jar这个文件</p> <prename="code" onclick="hljs.copyCode(event)"><code><span>find</span> <span>~ -name</span> <span>"mybatis_plus.jar"</span></code><divdata-title="复制"></div></pre><p> OK,拿到一个地址,然后进去</p> <prename="code" onclick="hljs.copyCode(event)"><code><span>cd</span> /Users/XXXXX/Library/Application Support/IntelliJIdea15/mybatis_plus/lib</code><divdata-title="复制"></div></pre><p> 看到了2个文件</p> <prename="code" onclick="hljs.copyCode(event)"><code><ol><li><div><divdata-line-number="1"></div></div><div><div><span>#创建一个文件夹</span></div></div></li><li><div><divdata-line-number="2"></div></div><div><div>mkdir m</div></div></li><li><div><divdata-line-number="3"></div></div><div><div><span>#进去 </span></div></div></li><li><div><divdata-line-number="4"></div></div><div><div>cd m</div></div></li><li><div><divdata-line-number="5"></div></div><div><div><span>#拷贝到m文件夹中 </span></div></div></li><li><div><divdata-line-number="6"></div></div><div><div><span>cp</span> ../mybatis_plus<span>.jar</span> .</div></div></li><li><div><divdata-line-number="7"></div></div><div><div><span>#解压jar包</span></div></div></li><li><div><divdata-line-number="8"></div></div><div><div>jar xf mybatis_plus<span>.jar</span> </div></div></li><li><div><divdata-line-number="9"></div></div><div><div><span>#复制com文件夹到这里 路径根据你情况而定,版本号也根据你情况而定</span></div></div></li><li><div><divdata-line-number="10"></div></div><div><div><span>cp</span> -r ~/Workspace/github/mybatis_plus/idea/plugin/MybatisPlugin/v2<span>.7</span>\~v2<span>.83</span>/<span>com</span> .</div></div></li><li><div><divdata-line-number="11"></div></div><div><div><span>#重新打为jar包</span></div></div></li><li><div><divdata-line-number="12"></div></div><div><div>jar cf mybatis_plus<span>.jar</span> *</div></div></li><li><div><divdata-line-number="13"></div></div><div><div><span>#复制到m的上层目录</span></div></div></li><li><div><divdata-line-number="14"></div></div><div><div><span>cp</span> mybatis_plus<span>.jar</span> ../</div></div></li></ol></code><divdata-title="复制"></div></pre><h3 id="重启你的idea完毕破解搞定-1"><a name="t6"></a> <a name="t13"target="_blank"></a>重启你的IDEA,完毕,破解搞定</h3> <hr><h2 id="三mybatis-pagehelper"><a name="t7"></a> <a name="t14"target="_blank"></a>三、Mybatis-pageHelper</h2> <p> 是一个开源的分页插件(如下网址有插件的全介绍)&nbsp;<br><a href="https://github.com/pagehelper/Mybatis-PageHelper" rel="nofollow"target="_blank">https://github.com/pagehelper/Mybatis-PageHelper</a>&nbsp;<br> 它的原理,是通过spring的AOP来实现的,这个插件能在执行sql的时候,把相关的数据再执行一次</p> <h4 id="1pomxml里添加依赖"> <a name="t15"target="_blank"></a>1.pom.xml里添加依赖</h4> <prename="code" onclick="hljs.copyCode(event)"><code><ol><li><div><divdata-line-number="1"></div></div><div><div><span><span>&lt;</span><span><span><span>dependency</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="2"></div></div><div><div> <span><span>&lt;</span><span><span><span>groupId</span></span></span><span>&gt;</span></span>com.github.pagehelper<span><span>&lt;/</span><span><span><span>groupId</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="3"></div></div><div><div> <span><span>&lt;</span><span><span><span>artifactId</span></span></span><span>&gt;</span></span>pagehelper<span><span>&lt;/</span><span><span><span>artifactId</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="4"></div></div><div><div> <span><span>&lt;</span><span><span><span>version</span></span></span><span>&gt;</span></span>4.1.0<span><span>&lt;/</span><span><span><span>version</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="5"></div></div><div><div> <span><span>&lt;/</span><span><span><span>dependency</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="6"></div></div><div><div> </div></div></li><li><div><divdata-line-number="7"></div></div><div><div> <span><span>&lt;</span><span><span><span>dependency</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="8"></div></div><div><div> <span><span>&lt;</span><span><span><span>groupId</span></span></span><span>&gt;</span></span>com.github.miemiedev<span><span>&lt;/</span><span><span><span>groupId</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="9"></div></div><div><div> <span><span>&lt;</span><span><span><span>artifactId</span></span></span><span>&gt;</span></span>mybatis-paginator<span><span>&lt;/</span><span><span><span>artifactId</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="10"></div></div><div><div> <span><span>&lt;</span><span><span><span>version</span></span></span><span>&gt;</span></span>1.2.17<span><span>&lt;/</span><span><span><span>version</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="11"></div></div><div><div> <span><span>&lt;/</span><span><span><span>dependency</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="12"></div></div><div><div> </div></div></li><li><div><divdata-line-number="13"></div></div><div><div> <span><span>&lt;</span><span><span><span>dependency</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="14"></div></div><div><div> <span><span>&lt;</span><span><span><span>groupId</span></span></span><span>&gt;</span></span>com.github.jsqlparser<span><span>&lt;/</span><span><span><span>groupId</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="15"></div></div><div><div> <span><span>&lt;</span><span><span><span>artifactId</span></span></span><span>&gt;</span></span>jsqlparser<span><span>&lt;/</span><span><span><span>artifactId</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="16"></div></div><div><div> <span><span>&lt;</span><span><span><span>version</span></span></span><span>&gt;</span></span>0.9.4<span><span>&lt;/</span><span><span><span>version</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="17"></div></div><div><div> <span><span>&lt;/</span><span><span><span>dependency</span></span></span><span>&gt;</span></span></div></div></li></ol></code><divdata-title="复制"></div></pre><h4 id="2在spring配置文件里添加配置"> <a name="t16"target="_blank"></a>2.在spring配置文件里添加配置</h4> <prename="code" onclick="hljs.copyCode(event)"><code><ol><li><div><divdata-line-number="1"></div></div><div><div> <span><span>&lt;</span><span><span><span>bean</span></span></span><span> </span><span><span><span>id</span></span></span><span>=</span><span><span><span>"sqlSessionFactory"</span></span></span><span> </span><span><span><span>class</span></span></span><span>=</span><span><span><span>"org.mybatis.spring.SqlSessionFactoryBean"</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="2"></div></div><div><div> <span><span>&lt;</span><span><span><span>property</span></span></span><span> </span><span><span><span>name</span></span></span><span>=</span><span><span><span>"dataSource"</span></span></span><span> </span><span><span><span>ref</span></span></span><span>=</span><span><span><span>"dataSource"</span></span></span><span>/&gt;</span></span></div></div></li><li><div><divdata-line-number="3"></div></div><div><div> <span><span>&lt;</span><span><span><span>property</span></span></span><span> </span><span><span><span>name</span></span></span><span>=</span><span><span><span>"mapperLocations"</span></span></span><span> </span><span><span><span>value</span></span></span><span>=</span><span><span><span>"classpath*:mappers/*Mapper.xml"</span></span></span><span>/&gt;</span></span></div></div></li><li><div><divdata-line-number="4"></div></div><div><div> </div></div></li><li><div><divdata-line-number="5"></div></div><div><div> <span><span>&lt;!-- 分页插件 --&gt;</span></span></div></div></li><li><div><divdata-line-number="6"></div></div><div><div> <span><span>&lt;</span><span><span><span>property</span></span></span><span> </span><span><span><span>name</span></span></span><span>=</span><span><span><span>"plugins"</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="7"></div></div><div><div> <span><span>&lt;</span><span><span><span>array</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="8"></div></div><div><div> <span><span>&lt;</span><span><span><span>bean</span></span></span><span> </span><span><span><span>class</span></span></span><span>=</span><span><span><span>"com.github.pagehelper.PageHelper"</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="9"></div></div><div><div> <span><span>&lt;</span><span><span><span>property</span></span></span><span> </span><span><span><span>name</span></span></span><span>=</span><span><span><span>"properties"</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="10"></div></div><div><div> <span><span>&lt;</span><span><span><span>value</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="11"></div></div><div><div> dialect=mysql</div></div></li><li><div><divdata-line-number="12"></div></div><div><div> <span><span>&lt;/</span><span><span><span>value</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="13"></div></div><div><div> <span><span>&lt;/</span><span><span><span>property</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="14"></div></div><div><div> <span><span>&lt;/</span><span><span><span>bean</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="15"></div></div><div><div> <span><span>&lt;/</span><span><span><span>array</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="16"></div></div><div><div> <span><span>&lt;/</span><span><span><span>property</span></span></span><span>&gt;</span></span></div></div></li><li><div><divdata-line-number="17"></div></div><div><div> </div></div></li><li><div><divdata-line-number="18"></div></div><div><div> <span><span>&lt;/</span><span><span><span>bean</span></span></span><span>&gt;</span></span></div></div></li></ol></code><divdata-title="复制"></div></pre><p> 注意不同数据库的方言的使用</p> <h2 id="这样三剑客就都配置ok了"><a name="t8"></a> <a name="t17"target="_blank"></a>这样三剑客就都配置OK了</h2> </div>

maven下mybatis-plus和pagehelp冲突问题的解决方法

maven下mybatis-plus和pagehelp冲突问题的解决方法

这篇文章主要介绍了maven下mybatis-plus和pagehelp冲突的解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

Maven库:

http://repo2.maven.org/maven2/

Maven依赖查询:

http://mvnrepository.com/

解决办法:

修改pom.xml文件

排除 pagehelp 包的mybatis和mybatis-spring依赖

com.github.pageHelperpageHelper-spring-boot-starter1.2.5org.mybatismybatisorg.mybatismybatis-spring

内是要排除的依赖

注:mybatis-plus:3.2.0    pagehelp:1.2.5 。 这个版本组合下,只排除mybatis不够,得两个都排除。

到此这篇关于maven下mybatis-plus和pagehelp冲突问题的解决方法的文章就介绍到这了,更多相关mybatis-plus和pagehelp冲突内容请搜索小编以前的文章或继续浏览下面的相关文章希望大家以后多多支持小编!

Mybatis (八) Mybatis整合PageHelper实现分页

Mybatis (八) Mybatis整合PageHelper实现分页

整合PageHelper实现分页

[TOC]

由于为了后续使用SpringBoot,本人还是推荐使用Java配置类来操作,但是这里还是提一下XML配置。(本文项目基于第六节Mybatis集成Spring操作)

XML配置方式

使用XML文件来配置Mybatis的PageHelper分页插件:

mybatis-configuration:(mybatis的全局配置文件)

<?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="mapUnderscoreToCamelCase" value="true"/>
    </settings>
	<!--配置PageHelper分页插件拦截器-->
    <plugins>
        <plugin interceptor="com.github.pagehelper.PageInterceptor">
            <property name="offsetAsPageNum" value="true"/>
            <property name="helperDialect" value="mysql"/>
            <property name="rowBoundsWithCount" value="true"/>
            <property name="reasonable" value="true"/>
        </plugin>
    </plugins>
</configuration>

Java配置类方式

完整的配置类:

@Configuration //标注为一个配置类
@PropertySource(value = "classpath:application.properties") //加载属性文件
@ComponentScan(basePackages = "com.ooyhao.mybatis")  //组件扫描
@MapperScan(basePackages = {"com.ooyhao.mybatis.mapper"})  //mapper文件的扫描
@EnableTransactionManagement //开启事务管理
public class AppConfig {

    @Value("${jdbc.url}")
    private String url;

    @Value("${jdbc.driver}")
    private String driverClassName;

    @Value("${jdbc.username}")
    private String username;

    @Value("${jdbc.password}")
    private String password;

    @Value("${mybatis.configuration}")
    private String mybatisConfiguration;

    @Value("${mybatis.mapperLocations}")
    private String mybatisMapperLocations;

    @Value("${mybatis.typeAliasesPackage}")
    private String mybatisTypeAliasesPackage;

    /*配置数据源*/
    @Bean
    public DataSource dataSource(){
        DruidDataSource druidDataSource = new DruidDataSource();
        druidDataSource.setUrl(url);
        druidDataSource.setDriverClassName(driverClassName);
        druidDataSource.setUsername(username);
        druidDataSource.setPassword(password);
        return druidDataSource;
    }

    @Bean
    public PageInterceptor pageInterceptor(){
        PageInterceptor pageInterceptor = new PageInterceptor();
        Properties properties = new Properties();
        /*4.0.0版本之后可以不用配置*/
        properties.setProperty("helperDialect","mysql");
        /*默认为false,会将RowBounds第一个参数offset当成pageNum页面使用
        * 和startPage中的pageNum效果一样*/
        properties.setProperty("offsetAsPageNum","true");
        /*RowBounds方式是否做count查询 默认false*/
        properties.setProperty("rowBoundsWithCount","true");
        /*分页合理化,true开启,如果分页参数不合理会自动修正。默认false不启用*/
        properties.setProperty("reasonable","true");
        /*是否允许接口方法参数来传递分页参数 默认false*/
        properties.setProperty("supportMethodsArguments","true");
        pageInterceptor.setProperties(properties);
        /*当设置为true的时候,如果pageSize设置为0(或RowBounds的limit=0),就不执行分页*/
        properties.setProperty("pageSizeZero","true");
        return pageInterceptor;
    }

    /*Mybatis的全局配置*/
    @Bean
    public SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource) throws Exception {
        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
        /*配置Mybatis的全局配置文件*/
        ClassPathResource resource = new ClassPathResource(mybatisConfiguration);
        sqlSessionFactoryBean.setConfigLocation(resource);
        /*配置Mapper.xml文件的路径*/
        PathMatchingResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
        Resource[] resources = resolver.getResources(mybatisMapperLocations);
        sqlSessionFactoryBean.setMapperLocations(resources);
        /*配置别名包*/
        sqlSessionFactoryBean.setTypeAliasesPackage(mybatisTypeAliasesPackage);
        /*设置数据源,位置有要求,需要在下面几项之前*/
        sqlSessionFactoryBean.setDataSource(dataSource);
        /*将PageHelper分页插件以拦截器的形式配置*/
        sqlSessionFactoryBean.setPlugins(new Interceptor[]{pageInterceptor()});
        /*配置驼峰命名*/
        sqlSessionFactoryBean.getObject().getConfiguration().setMapUnderscoreToCamelCase(true);
        /*配置日志类*/
        sqlSessionFactoryBean.getObject().getConfiguration().setLogImpl(StdOutImpl.class);
        /*设置开启缓存*/
        sqlSessionFactoryBean.getObject().getConfiguration().setCacheEnabled(true);
        return sqlSessionFactoryBean;
    }

    /*配置数据源事务管理器,需要将数据源注入*/
    @Bean
    public DataSourceTransactionManager transactionManager(DataSource dataSource){
        DataSourceTransactionManager transactionManager =
                new DataSourceTransactionManager();
        transactionManager.setDataSource(dataSource);
        return transactionManager;
    }
}

提示

  • 添加了PageInterceptor 组件
  • 通过 sqlSessionFactoryBean.setPlugins(new Interceptor[]{pageInterceptor()});设置到SqlSessionFactoryBean中

开启了这个properties.setProperty("supportMethodsArguments","true");则表示可以通过Mapper来进行参数传递,实现分页,如下:

List<Role> findByPage(@Param("pageNum") int pageNum,@Param("pageSize") int pageSize);

xml文件不需要修改,只需要在参数上添加形参即可。

PageHelper的PageInterceptor的参数说明:一下是PageParams类中的setProperties方法的源码:

public void setProperties(Properties properties) {
    //offset作为PageNum使用
    String offsetAsPageNum = properties.getProperty("offsetAsPageNum");
    this.offsetAsPageNum = Boolean.parseBoolean(offsetAsPageNum);
    //RowBounds方式是否做count查询
    String rowBoundsWithCount = properties.getProperty("rowBoundsWithCount");
    this.rowBoundsWithCount = Boolean.parseBoolean(rowBoundsWithCount);
    //当设置为true的时候,如果pagesize设置为0(或RowBounds的limit=0),就不执行分页
    String pageSizeZero = properties.getProperty("pageSizeZero");
    this.pageSizeZero = Boolean.parseBoolean(pageSizeZero);
    //分页合理化,true开启,如果分页参数不合理会自动修正。默认false不启用
    String reasonable = properties.getProperty("reasonable");
    this.reasonable = Boolean.parseBoolean(reasonable);
    //是否支持接口参数来传递分页参数,默认false
    String supportMethodsArguments = properties.getProperty("supportMethodsArguments");
    this.supportMethodsArguments = Boolean.parseBoolean(supportMethodsArguments);
    //默认count列
    String countColumn = properties.getProperty("countColumn");
    if(StringUtil.isNotEmpty(countColumn)){
      this.countColumn = countColumn;
    }
    //当offsetAsPageNum=false的时候,不能
    //参数映射
    PageObjectUtil.setParams(properties.getProperty("params"));
}

测试:

下面是测试结果,以及获取PageInfo中的各个参数。

public class AppTest {
    AnnotationConfigApplicationContext context = null;
    @Before
    public void init(){
        context = new AnnotationConfigApplicationContext(AppConfig.class);
    }

    @Test
    public void testFindByPage(){

        RoleService bean = context.getBean(RoleService.class);
        /*是否需要计算总条数*/
        List<Role> page = bean.findByPage(2, 2, true);
        PageInfo<Role> pageInfo = new PageInfo<>(page);
        //返回的是Page对象,Page是ArrayList的子类。由于Page重写了toString方法
        List<Role> list = pageInfo.getList();
        System.out.println(JSONObject.toJSONString(list));
        System.out.println(JSONObject.toJSON(list));
        //SQL查询的数据总条数
        System.out.println("total:"+pageInfo.getTotal());//22
        //总分页数
        System.out.println("pages:"+pageInfo.getPages());//8
        //自动生成一个分页导航,大小为8(如果满足)[1, 2, 3, 4, 5, 6, 7, 8]
        System.out.println("navigatepageNums:"+Arrays.toString(pageInfo.getNavigatepageNums()));
        //分页导航的第一页
        System.out.println("navigateFirstPage:"+pageInfo.getNavigateFirstPage());//1
        //分页导航的最后一页
        System.out.println("navigateLastPage:"+pageInfo.getNavigateLastPage());//8
        //分页导航的总页数
        System.out.println("navigatePages:"+pageInfo.getNavigatePages());//8
        //当前页
        System.out.println("pageNum:"+pageInfo.getPageNum());//2
        //当前页的上一页
        System.out.println("prePage:"+pageInfo.getPrePage());//1
        //当前页的下一页
        System.out.println("nextPage:"+pageInfo.getNextPage());//3
        //每页的数据条数
        System.out.println("pageSize:"+pageInfo.getPageSize());//3
        //当前页的开始行号
        System.out.println("startRow:"+pageInfo.getStartRow());//4
        //当前页的结束行号
        System.out.println("endRow:"+pageInfo.getEndRow());//6
    }
}

提示:

List<Role> list = pageInfo.getList();我们通过打印这个list对象是无法正常打印出Role对象的数据,是因为Page对象继承自ArrayList,并且重写了toString方法。我们可以通过迭代循环打印出来。如下图:

​ 这里由于循环打印才能看到Role对象的真实面部,个人觉得麻烦,所以使用了fastJson格式化为Json,但是发现一个之前没有留意的问题:

​ 通过上面打印出的结果可以发现,list既然是Page对象,但是我们可以看到Page类中有诸多属性,为何通过JSON格式化工具之后,就没有了呢?通过查询fastJson的toJson源码就可以发现奥秘了,如下:

public static Object toJSON(Object javaObject, SerializeConfig config) {
        ......
        if (javaObject instanceof Collection) {
            Collection<Object> collection = (Collection<Object>) javaObject;
            JSONArray array = new JSONArray(collection.size());
            for (Object item : collection) {
                Object jsonValue = toJSON(item, config);
                array.add(jsonValue);
            }
            return array;
        }
      	......
        String text = JSON.toJSONString(javaObject);
        return JSON.parse(text);
}

​ 里面有这样一个判断,如果对象是Collection或其子类,则强转为Collection,所以我们会发现,在使用JSONObject.toJson或是toJsonString的时候,不管是ArrayList还是Page中的属性都没有了,这是因为取的是Collection。对于数据存储,需要进一步研究Collection系列集合,暂不涉及。

Page对象源码

下面我们看一下Page对象源码:

public class Page<E> extends ArrayList<E> implements Closeable {
    private static final long serialVersionUID = 1L;

    /**
     * 页码,从1开始
     */
    private int pageNum;
    /**
     * 页面大小
     */
    private int pageSize;
    /**
     * 起始行
     */
    private int startRow;
    /**
     * 末行
     */
    private int endRow;
    /**
     * 总数
     */
    private long total;
    /**
     * 总页数
     */
    private int pages;
    /**
     * 包含count查询
     */
    private boolean count = true;
    /**
     * 分页合理化
     */
    private Boolean reasonable;
    /**
     * 当设置为true的时候,如果pagesize设置为0(或RowBounds的limit=0),就不执行分页,返回全部结果
     */
    private Boolean pageSizeZero;
    /**
     * 进行count查询的列名
     */
    private String countColumn;
    /**
     * 排序
     */
    private String orderBy;
    /**
     * 只增加排序
     */
    private boolean orderByOnly;

    public Page() {
        super();
    }

    public Page(int pageNum, int pageSize) {
        this(pageNum, pageSize, true, null);
    }

    public Page(int pageNum, int pageSize, boolean count) {
        this(pageNum, pageSize, count, null);
    }

    private Page(int pageNum, int pageSize, boolean count, Boolean reasonable) {
        super(0);
        if (pageNum == 1 && pageSize == Integer.MAX_VALUE) {
            pageSizeZero = true;
            pageSize = 0;
        }
        this.pageNum = pageNum;
        this.pageSize = pageSize;
        this.count = count;
        calculateStartAndEndRow();
        setReasonable(reasonable);
    }

    /**
     * int[] rowBounds
     * 0 : offset
     * 1 : limit
     */
    public Page(int[] rowBounds, boolean count) {
        super(0);
        if (rowBounds[0] == 0 && rowBounds[1] == Integer.MAX_VALUE) {
            pageSizeZero = true;
            this.pageSize = 0;
        } else {
            this.pageSize = rowBounds[1];
            this.pageNum = rowBounds[1] != 0 
              ? (int) (Math.ceil(((double) rowBounds[0] + rowBounds[1]) / rowBounds[1])) : 0;
        }
        this.startRow = rowBounds[0];
        this.count = count;
        this.endRow = this.startRow + rowBounds[1];
    }

    public List<E> getResult() {
        return this;
    }

    public int getPages() {
        return pages;
    }

    public Page<E> setPages(int pages) {
        this.pages = pages;
        return this;
    }

    public int getEndRow() {
        return endRow;
    }

    public Page<E> setEndRow(int endRow) {
        this.endRow = endRow;
        return this;
    }

    public int getPageNum() {
        return pageNum;
    }

    public Page<E> setPageNum(int pageNum) {
        //分页合理化,针对不合理的页码自动处理
        this.pageNum = ((reasonable != null && reasonable) && pageNum <= 0) ? 1 : pageNum;
        return this;
    }

    public int getPageSize() {
        return pageSize;
    }

    public Page<E> setPageSize(int pageSize) {
        this.pageSize = pageSize;
        return this;
    }

    public int getStartRow() {
        return startRow;
    }

    public Page<E> setStartRow(int startRow) {
        this.startRow = startRow;
        return this;
    }

    public long getTotal() {
        return total;
    }

    public void setTotal(long total) {
        this.total = total;
        if (total == -1) {
            pages = 1;
            return;
        }
        if (pageSize > 0) {
            pages = (int) (total / pageSize + ((total % pageSize == 0) ? 0 : 1));
        } else {
            pages = 0;
        }
        //分页合理化,针对不合理的页码自动处理
        if ((reasonable != null && reasonable) && pageNum > pages) {
            pageNum = pages;
            calculateStartAndEndRow();
        }
    }

    public Boolean getReasonable() {
        return reasonable;
    }

    public Page<E> setReasonable(Boolean reasonable) {
        if (reasonable == null) {
            return this;
        }
        this.reasonable = reasonable;
        //分页合理化,针对不合理的页码自动处理
        if (this.reasonable && this.pageNum <= 0) {
            this.pageNum = 1;
            calculateStartAndEndRow();
        }
        return this;
    }

    public Boolean getPageSizeZero() {
        return pageSizeZero;
    }

    public Page<E> setPageSizeZero(Boolean pageSizeZero) {
        if (pageSizeZero != null) {
            this.pageSizeZero = pageSizeZero;
        }
        return this;
    }
    public String getOrderBy() {
        return orderBy;
    }

    public <E> Page<E> setOrderBy(String orderBy) {
        this.orderBy = orderBy;
        return (Page<E>) this;
    }

    public boolean isOrderByOnly() {
        return orderByOnly;
    }

    public void setOrderByOnly(boolean orderByOnly) {
        this.orderByOnly = orderByOnly;
    }

    /**
     * 计算起止行号
     */
    private void calculateStartAndEndRow() {
        this.startRow = this.pageNum > 0 ? (this.pageNum - 1) * this.pageSize : 0;
        this.endRow = this.startRow + this.pageSize * (this.pageNum > 0 ? 1 : 0);
    }

    public boolean isCount() {
        return this.count;
    }

    public Page<E> setCount(boolean count) {
        this.count = count;
        return this;
    }

    /**
     * 设置页码
     *
     * @param pageNum
     * @return
     */
    public Page<E> pageNum(int pageNum) {
        //分页合理化,针对不合理的页码自动处理
        this.pageNum = ((reasonable != null && reasonable) && pageNum <= 0) ? 1 : pageNum;
        return this;
    }

    /**
     * 设置页面大小
     *
     * @param pageSize
     * @return
     */
    public Page<E> pageSize(int pageSize) {
        this.pageSize = pageSize;
        calculateStartAndEndRow();
        return this;
    }

    /**
     * 是否执行count查询
     *
     * @param count
     * @return
     */
    public Page<E> count(Boolean count) {
        this.count = count;
        return this;
    }

    /**
     * 设置合理化
     *
     * @param reasonable
     * @return
     */
    public Page<E> reasonable(Boolean reasonable) {
        setReasonable(reasonable);
        return this;
    }

    /**
     * 当设置为true的时候,如果pagesize设置为0(或RowBounds的limit=0),就不执行分页,返回全部结果
     *
     * @param pageSizeZero
     * @return
     */
    public Page<E> pageSizeZero(Boolean pageSizeZero) {
        setPageSizeZero(pageSizeZero);
        return this;
    }

    /**
     * 指定 count 查询列
     *
     * @param columnName
     * @return
     */
    public Page<E> countColumn(String columnName) {
        this.countColumn = columnName;
        return this;
    }


    /**
     * 转换为PageInfo
     *
     * @return
     */
    public PageInfo<E> toPageInfo() {
        PageInfo<E> pageInfo = new PageInfo<E>(this);
        return pageInfo;
    }

    public <E> Page<E> doSelectPage(ISelect select) {
        select.doSelect();
        return (Page<E>) this;
    }

    public <E> PageInfo<E> doSelectPageInfo(ISelect select) {
        select.doSelect();
        return (PageInfo<E>) this.toPageInfo();
    }

    public long doCount(ISelect select) {
        this.pageSizeZero = true;
        this.pageSize = 0;
        select.doSelect();
        return this.total;
    }

    public String getCountColumn() {
        return countColumn;
    }

    public void setCountColumn(String countColumn) {
        this.countColumn = countColumn;
    }

    @Override
    public String toString() {
        return "Page{" +
                "count=" + count +
                ", pageNum=" + pageNum +
                ", pageSize=" + pageSize +
                ", startRow=" + startRow +
                ", endRow=" + endRow +
                ", total=" + total +
                ", pages=" + pages +
                ", reasonable=" + reasonable +
                ", pageSizeZero=" + pageSizeZero +
                ''}'';
    }

    @Override
    public void close() {
        PageHelper.clearPage();
    }
}

最后

如果觉得不错的话,那就关注一下小编哦!一起交流,一起学习

Mybatis PageHelper 分页不起作用

Mybatis PageHelper 分页不起作用

修改中pageHelper引用

之前:

<dependency>
	<groupId>com.github.pageHelper</groupId>
	<artifactId>pageHelper</artifactId>
	<version>5.1.6</version>
</dependency>

  

之后:

<dependency>
	<groupId>com.github.pageHelper</groupId>
	<artifactId>pageHelper-spring-boot-starter</artifactId>
	<version>1.2.5</version>
</dependency>

  

我们今天的关于mybatis-plus和pageHelper 设置关闭分页mybatis plus page分页的分享就到这里,谢谢您的阅读,如果想了解更多关于Mabatis三剑客分别是:mybatis-generator、mybatis-plugin、mybatis-pagehelper、maven下mybatis-plus和pagehelp冲突问题的解决方法、Mybatis (八) Mybatis整合PageHelper实现分页、Mybatis PageHelper 分页不起作用的相关信息,可以在本站进行搜索。

本文标签: