171 lines
78 KiB
JavaScript
171 lines
78 KiB
JavaScript
import{_ as l}from"./chunks/ArticleMetadata.Sb1DYAHo.js";import{_ as t,D as e,o as n,c as r,I as d,w as g,k as h,a as A,R as y,b as C,e as D}from"./chunks/framework.FVQzxbLi.js";import"./chunks/md5.RtphNWHi.js";const F="/assets/202101231220866.P2KumaQs.jpg",B="/assets/202101231220888.NKegrLe1.png",c="/assets/202101231221195.EMfhfVi_.gif",q=JSON.parse('{"title":"简单查询操作","description":"","frontmatter":{"title":"简单查询操作","author":"查尔斯","date":"2021/01/23 19:38","categories":["MyBatis-Plus快速入门"],"tags":["MyBatis Plus","MyBatis","ORM框架"]},"headers":[],"relativePath":"courses/mybatis/02-MyBatis-Plus基础/03-简单查询操作.md","filePath":"courses/mybatis/02-MyBatis-Plus基础/03-简单查询操作.md","lastUpdated":1665050985000}'),o={name:"courses/mybatis/02-MyBatis-Plus基础/03-简单查询操作.md"},E=h("h1",{id:"简单查询操作",tabindex:"-1"},[A("简单查询操作 "),h("a",{class:"header-anchor",href:"#简单查询操作","aria-label":'Permalink to "简单查询操作"'},"")],-1),u=y('<h2 id="前言" tabindex="-1">前言 <a class="header-anchor" href="#前言" aria-label="Permalink to "前言""></a></h2><p><strong>C:</strong> 在 CRUD 中,哪一个操作是最复杂的,毫无疑问是 R(查询)操作。在大多数业务中,查询也是涉及最广泛的部分。很多初级程序员有个毛病:简单的查询不想写,难一点的查询不会写。</p><p>上一篇,我们体验了 MP 的增删改操作,本篇,笔者将带你看看你想写或不想写的查询究竟被 MP 封装优化成什么样了。</p><p><img src="'+F+'" alt="202101231220866"></p><h2 id="数据准备" tabindex="-1">数据准备 <a class="header-anchor" href="#数据准备" aria-label="Permalink to "数据准备""></a></h2><p>在介绍查询操作前,我们需要重置一次数据表,因为上一篇,数据表的数据已经被我们玩的不能看了。</p><div class="language-sql vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sql</span><pre class="shiki shiki-themes github-light github-dark-dimmed vp-code"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#768390;">-- 清空用户表数据</span></span>\n<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">TRUNCATE</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"> TABLE</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> user;</span></span>\n<span class="line"></span>\n<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#768390;">-- 向用户表插入测试数据</span></span>\n<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">INSERT INTO</span><span style="--shiki-light:#032F62;--shiki-dark:#96D0FF;"> `user`</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"> VALUES</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> (</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">1</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#96D0FF;">'Jone'</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">18</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#96D0FF;">'Jone@126.com'</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">, </span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">NOW</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">(), </span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">NOW</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">(), </span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">0</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">);</span></span>\n<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">INSERT INTO</span><span style="--shiki-light:#032F62;--shiki-dark:#96D0FF;"> `user`</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"> VALUES</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> (</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">2</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#96D0FF;">'Jack'</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">20</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#96D0FF;">'Jack@126.com'</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">, </span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">NOW</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">(), </span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">NOW</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">(), </span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">0</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">);</span></span>\n<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">INSERT INTO</span><span style="--shiki-light:#032F62;--shiki-dark:#96D0FF;"> `user`</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"> VALUES</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> (</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">3</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#96D0FF;">'Tom'</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">28</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#96D0FF;">'Tom@126.com'</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">, </span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">NOW</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">(), </span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">NOW</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">(), </span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">0</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">);</span></span>\n<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">INSERT INTO</span><span style="--shiki-light:#032F62;--shiki-dark:#96D0FF;"> `user`</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"> VALUES</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> (</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">4</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#96D0FF;">'Sandy'</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">21</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#96D0FF;">'Sandy@126.com'</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">, </span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">NOW</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">(), </span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">NOW</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">(), </span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">0</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">);</span></span>\n<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">INSERT INTO</span><span style="--shiki-light:#032F62;--shiki-dark:#96D0FF;"> `user`</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"> VALUES</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> (</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">5</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#96D0FF;">'Billie'</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">24</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#96D0FF;">'Billie@126.com'</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">, </span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">NOW</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">(), </span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">NOW</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">(), </span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">0</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">);</span></span></code></pre></div><p><img src="'+B+`" alt="202101231220888"></p><h2 id="根据id查询记录" tabindex="-1">根据ID查询记录 <a class="header-anchor" href="#根据id查询记录" aria-label="Permalink to "根据ID查询记录""></a></h2><p>在MP 的 BaseMapper 中,为我们提供了 10 来个查询操作,我们还是先介绍一些简单的 API,至于需要使用条件构造器的 API 等等再说。</p><p>那第1个要介绍的查询操作是:根据 ID 查询单个实体数据,日常开发中将会频繁使用的一个 API。</p><div class="language-java vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">java</span><pre class="shiki shiki-themes github-light github-dark-dimmed vp-code"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#768390;">// 其他 API 略</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">public</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"> interface</span><span style="--shiki-light:#6F42C1;--shiki-dark:#F69D50;"> BaseMapper</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"><</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">T</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">> </span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">extends</span><span style="--shiki-light:#6F42C1;--shiki-dark:#6CB6FF;"> Mapper</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"><</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">T</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">> {</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> </span></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#768390;"> /**</span></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#768390;"> * 根据 ID 查询</span></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#768390;"> *</span></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#768390;"> * </span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">@param</span><span style="--shiki-light:#E36209;--shiki-dark:#F69D50;"> id</span><span style="--shiki-light:#6A737D;--shiki-dark:#768390;"> 主键ID</span></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#768390;"> * </span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">@return</span><span style="--shiki-light:#6A737D;--shiki-dark:#768390;"> 单个实体数据</span></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#768390;"> */</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> T </span><span style="--shiki-light:#6F42C1;--shiki-dark:#DCBDFB;">selectById</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">(Serializable </span><span style="--shiki-light:#E36209;--shiki-dark:#F69D50;">id</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">);</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> </span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">}</span></span></code></pre></div><p>接下来,我们准备测试一下它,我们还是先在上一篇 Demo 项目的基础上,复制粘贴一个专门用于测试 R 操作的单元测试类。</p><p><img src="`+c+`" alt="202101231221195"></p><p><strong>测试代码:</strong></p><div class="language-java vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">java</span><pre class="shiki shiki-themes github-light github-dark-dimmed vp-code"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">@</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">SpringBootTest</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">class</span><span style="--shiki-light:#6F42C1;--shiki-dark:#F69D50;"> MybatisPlusRTests</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> {</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> </span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> @</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">Autowired</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"> private</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> UserMapper</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> userMapper;</span></span>
|
||
<span class="line"></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> @</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">Test</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"> void</span><span style="--shiki-light:#6F42C1;--shiki-dark:#DCBDFB;"> testSelectById</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">() {</span></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#768390;"> // 查询ID为1的用户数据</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> User</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> user</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"> =</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> userMapper.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#DCBDFB;">selectById</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">(</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">5L</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">);</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> System.out.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#DCBDFB;">println</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">(user);</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> }</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> </span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">}</span></span></code></pre></div><p><strong>控制台输出:</strong></p><div class="language-sql vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sql</span><pre class="shiki shiki-themes github-light github-dark-dimmed vp-code"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">==></span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> Preparing: </span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">SELECT</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> id,</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">name</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">,age,email,create_time,update_time,is_delete </span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">FROM</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> user </span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">WHERE</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> id</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">? </span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">AND</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> is_delete</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">0</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">==></span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> Parameters: </span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">1</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">(Long)</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"><==</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> Columns: id, </span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">name</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">, age, email, create_time, update_time, is_delete</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"><==</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"> Row</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">1</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">, Jone, </span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">18</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">, Jone@126.com, </span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">2021</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">-</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">01</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">-</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">23</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;"> 17</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">47</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">52</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">2021</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">-</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">01</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">-</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">23</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;"> 17</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">47</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">52</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">0</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"><==</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> Total: </span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">1</span></span></code></pre></div><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark-dimmed vp-code"><code><span class="line"><span>User(id=1, name=Jone, age=18, email=Jone@126.com, createTime=2021-01-23T17:47:52, updateTime=2021-01-23T17:47:52, isDelete=0)</span></span></code></pre></div><div class="tip custom-block"><p class="custom-block-title">笔者说</p><p>在控制台上显示的执行 SQL 中,我们可以看到它结尾有一个 <code>is_delete = 0</code> 条件,别害怕,这是我们上一篇配置逻辑删除后的正常现象。</p></div><h2 id="批量id查询" tabindex="-1">批量ID查询 <a class="header-anchor" href="#批量id查询" aria-label="Permalink to "批量ID查询""></a></h2><p>第2个要介绍的查询操作是:根据多个 ID 来批量查询实体数据。</p><div class="language-java vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">java</span><pre class="shiki shiki-themes github-light github-dark-dimmed vp-code"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#768390;">// 其他 API 略</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">public</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"> interface</span><span style="--shiki-light:#6F42C1;--shiki-dark:#F69D50;"> BaseMapper</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"><</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">T</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">> </span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">extends</span><span style="--shiki-light:#6F42C1;--shiki-dark:#6CB6FF;"> Mapper</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"><</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">T</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">> {</span></span>
|
||
<span class="line"></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#768390;"> /**</span></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#768390;"> * 查询(根据ID 批量查询)</span></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#768390;"> *</span></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#768390;"> * </span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">@param</span><span style="--shiki-light:#E36209;--shiki-dark:#F69D50;"> idList</span><span style="--shiki-light:#6A737D;--shiki-dark:#768390;"> 主键ID列表(不能为 null 以及 empty)</span></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#768390;"> * </span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">@return</span><span style="--shiki-light:#6A737D;--shiki-dark:#768390;"> 实体列表</span></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#768390;"> */</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> List<</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">T</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">> </span><span style="--shiki-light:#6F42C1;--shiki-dark:#DCBDFB;">selectBatchIds</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">(@</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">Param</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">(Constants.COLLECTION) Collection<</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">?</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"> extends</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"> Serializable</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">> </span><span style="--shiki-light:#E36209;--shiki-dark:#F69D50;">idList</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">);</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> </span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">}</span></span></code></pre></div><p><strong>测试代码:</strong></p><div class="language-java vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">java</span><pre class="shiki shiki-themes github-light github-dark-dimmed vp-code"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">@</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">SpringBootTest</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">class</span><span style="--shiki-light:#6F42C1;--shiki-dark:#F69D50;"> MybatisPlusRTests</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> {</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> </span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> @</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">Autowired</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"> private</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> UserMapper</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> userMapper;</span></span>
|
||
<span class="line"></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> @</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">Test</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"> public</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"> void</span><span style="--shiki-light:#6F42C1;--shiki-dark:#DCBDFB;"> selectBatchIds</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">() {</span></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#768390;"> // 查询ID为1、2的用户数据</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> List</span><span style="--shiki-light:#24292E;--shiki-dark:#F69D50;"><</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">User</span><span style="--shiki-light:#24292E;--shiki-dark:#F69D50;">> </span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">users</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"> =</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> userMapper.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#DCBDFB;">selectBatchIds</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">(Arrays.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#DCBDFB;">asList</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">(</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">1</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">2</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">));</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> users.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#DCBDFB;">forEach</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">(System.out</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">::</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">println);</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> }</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> </span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">}</span></span></code></pre></div><p><strong>控制台输出:</strong></p><div class="language-sql vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sql</span><pre class="shiki shiki-themes github-light github-dark-dimmed vp-code"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">==></span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> Preparing: </span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">SELECT</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> id,</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">name</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">,age,email,create_time,update_time,is_delete </span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">FROM</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> user </span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">WHERE</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> id </span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">IN</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> ( ? , ? ) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">AND</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> is_delete</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">0</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">==></span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> Parameters: </span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">1</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">Integer</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">), </span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">2</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">Integer</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"><==</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> Columns: id, </span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">name</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">, age, email, create_time, update_time, is_delete</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"><==</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"> Row</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">1</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">, Jone, </span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">18</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">, Jone@126.com, </span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">2021</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">-</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">01</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">-</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">23</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;"> 17</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">47</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">52</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">2021</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">-</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">01</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">-</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">23</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;"> 17</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">47</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">52</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">0</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"><==</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"> Row</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">2</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">, Jack, </span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">20</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">, Jack@126.com, </span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">2021</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">-</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">01</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">-</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">23</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;"> 17</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">47</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">52</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">2021</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">-</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">01</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">-</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">23</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;"> 17</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">47</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">52</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">0</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"><==</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> Total: </span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">2</span></span></code></pre></div><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark-dimmed vp-code"><code><span class="line"><span>User(id=1, name=Jone, age=18, email=Jone@126.com, createTime=2021-01-23T17:47:52, updateTime=2021-01-23T17:47:52, isDelete=0)</span></span>
|
||
<span class="line"><span>User(id=2, name=Jack, age=20, email=Jack@126.com, createTime=2021-01-23T17:47:52, updateTime=2021-01-23T17:47:52, isDelete=0)</span></span></code></pre></div><h2 id="简单的带条件查询" tabindex="-1">简单的带条件查询 <a class="header-anchor" href="#简单的带条件查询" aria-label="Permalink to "简单的带条件查询""></a></h2><p>第3个要介绍的查询操作是:根据 Map 集合封装好的条件来查询实体列表。</p><div class="language-java vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">java</span><pre class="shiki shiki-themes github-light github-dark-dimmed vp-code"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#768390;">// 其他 API 略</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">public</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"> interface</span><span style="--shiki-light:#6F42C1;--shiki-dark:#F69D50;"> BaseMapper</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"><</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">T</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">> </span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">extends</span><span style="--shiki-light:#6F42C1;--shiki-dark:#6CB6FF;"> Mapper</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"><</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">T</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">> {</span></span>
|
||
<span class="line"></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#768390;"> /**</span></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#768390;"> * 查询(根据 columnMap 条件)</span></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#768390;"> *</span></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#768390;"> * </span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">@param</span><span style="--shiki-light:#E36209;--shiki-dark:#F69D50;"> columnMap</span><span style="--shiki-light:#6A737D;--shiki-dark:#768390;"> 表字段 map 对象</span></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#768390;"> * </span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">@return</span><span style="--shiki-light:#6A737D;--shiki-dark:#768390;"> 实体列表</span></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#768390;"> */</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> List<</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">T</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">> </span><span style="--shiki-light:#6F42C1;--shiki-dark:#DCBDFB;">selectByMap</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">(@</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">Param</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">(Constants.COLUMN_MAP) Map<</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">String</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">, </span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">Object</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">> </span><span style="--shiki-light:#E36209;--shiki-dark:#F69D50;">columnMap</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">);</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> </span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">}</span></span></code></pre></div><p><strong>测试代码:</strong></p><div class="language-java vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">java</span><pre class="shiki shiki-themes github-light github-dark-dimmed vp-code"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">@</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">SpringBootTest</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">class</span><span style="--shiki-light:#6F42C1;--shiki-dark:#F69D50;"> MybatisPlusRTests</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> {</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> </span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> @</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">Autowired</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"> private</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> UserMapper</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> userMapper;</span></span>
|
||
<span class="line"></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> @</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">Test</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"> void</span><span style="--shiki-light:#6F42C1;--shiki-dark:#DCBDFB;"> selectByMap</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">() {</span></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#768390;"> // 通过 Map 封装条件</span></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#768390;"> // Map集合的键表示的是数据库列名</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> HashMap</span><span style="--shiki-light:#24292E;--shiki-dark:#F69D50;"><</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">String</span><span style="--shiki-light:#24292E;--shiki-dark:#F69D50;">, </span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">Object</span><span style="--shiki-light:#24292E;--shiki-dark:#F69D50;">> </span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">columnMap</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"> =</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"> new</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> HashMap<>();</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> columnMap.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#DCBDFB;">put</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#96D0FF;">"name"</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#96D0FF;">"Jack"</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">);</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> columnMap.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#DCBDFB;">put</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#96D0FF;">"age"</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">, </span><span style="--shiki-light:#032F62;--shiki-dark:#96D0FF;">"20"</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">);</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> </span></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#768390;"> // 根据条件查询用户列表</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> List</span><span style="--shiki-light:#24292E;--shiki-dark:#F69D50;"><</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">User</span><span style="--shiki-light:#24292E;--shiki-dark:#F69D50;">> </span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">users</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"> =</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> userMapper.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#DCBDFB;">selectByMap</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">(columnMap);</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> users.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#DCBDFB;">forEach</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">(System.out</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">::</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">println);</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> }</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> </span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">}</span></span></code></pre></div><p><strong>控制台输出:</strong></p><div class="language-sql vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sql</span><pre class="shiki shiki-themes github-light github-dark-dimmed vp-code"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">==></span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> Preparing: </span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">SELECT</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> id,</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">name</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">,age,email,create_time,update_time,is_delete </span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">FROM</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> user </span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">WHERE</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"> name</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"> =</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> ? </span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">AND</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> age </span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">=</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> ? </span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">AND</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> is_delete</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">0</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">==></span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> Parameters: Jack(String), </span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">20</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">(String)</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"><==</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> Columns: id, </span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">name</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">, age, email, create_time, update_time, is_delete</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"><==</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"> Row</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">2</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">, Jack, </span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">20</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">, Jack@126.com, </span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">2021</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">-</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">01</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">-</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">23</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;"> 17</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">47</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">52</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">2021</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">-</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">01</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">-</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">23</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;"> 17</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">47</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">52</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">0</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"><==</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> Total: </span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">1</span></span></code></pre></div><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark-dimmed vp-code"><code><span class="line"><span>User(id=2, name=Jack, age=20, email=Jack@126.com, createTime=2021-01-23T17:47:52, updateTime=2021-01-23T17:47:52, isDelete=0)</span></span></code></pre></div><h2 id="分页" tabindex="-1">分页 <a class="header-anchor" href="#分页" aria-label="Permalink to "分页""></a></h2><p>在大多数批量查询操作的时候,我们都会采用分页技术来限制查询的条数,以优化效率及体验。</p><p>所以第4个要介绍的查询操作就是分页查询,原来在使用 MyBatis 时,接入 <a href="https://pagehelper.github.io/" target="_blank" rel="noreferrer">page-helper</a> 就可以快速实现分页功能,而 MP 则自带分页插件,只要简单的配置就可以实现分页功能。</p><p><strong>在项目中创建一个 MP 配置类,添加一个分页插件类的 Bean 配置。</strong></p><div class="language-java vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">java</span><pre class="shiki shiki-themes github-light github-dark-dimmed vp-code"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#768390;">/**</span></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#768390;"> * MyBatis Plus配置类</span></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#768390;"> */</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">@</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">Configuration</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">public</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"> class</span><span style="--shiki-light:#6F42C1;--shiki-dark:#F69D50;"> MyBatisPlusConfig</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> {</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> </span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> @</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">Bean</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"> public</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> PaginationInterceptor </span><span style="--shiki-light:#6F42C1;--shiki-dark:#DCBDFB;">paginationInterceptor</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">() {</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> PaginationInterceptor</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> paginationInterceptor</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"> =</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"> new</span><span style="--shiki-light:#6F42C1;--shiki-dark:#DCBDFB;"> PaginationInterceptor</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">();</span></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#768390;"> // 设置请求的页面大于最大页后操作, true调回到首页,false 继续请求 默认false</span></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#768390;"> // paginationInterceptor.setOverflow(false);</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> </span></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#768390;"> // 设置最大单页限制数量,默认 500 条,-1 不受限制</span></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#768390;"> // paginationInterceptor.setLimit(500);</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> </span></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#768390;"> // 开启 count 的 join 优化,只针对部分 left join</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> paginationInterceptor.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#DCBDFB;">setCountSqlParser</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">(</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">new</span><span style="--shiki-light:#6F42C1;--shiki-dark:#DCBDFB;"> JsqlParserCountOptimize</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">(</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">true</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">));</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"> return</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> paginationInterceptor;</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> }</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> </span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">}</span></span></code></pre></div><p>好了,接下来我们就可以测试分页查询 API 了。</p><p>在 BaseMapper 中,一共提供了两种分页查询,它们都可以实现分页数据的查询,<strong>唯一的区别在于查到的每页数据,究竟是要存储为实体数据集合,还是直接以键值对形式存到Map集合。</strong></p><div class="language-java vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">java</span><pre class="shiki shiki-themes github-light github-dark-dimmed vp-code"><code><span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#768390;">// 其他 API 略</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">public</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"> interface</span><span style="--shiki-light:#6F42C1;--shiki-dark:#F69D50;"> BaseMapper</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"><</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">T</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">> </span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">extends</span><span style="--shiki-light:#6F42C1;--shiki-dark:#6CB6FF;"> Mapper</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"><</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">T</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">> {</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> </span></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#768390;"> /**</span></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#768390;"> * 根据 entity 条件,查询全部记录(并翻页)</span></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#768390;"> *</span></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#768390;"> * </span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">@param</span><span style="--shiki-light:#E36209;--shiki-dark:#F69D50;"> page</span><span style="--shiki-light:#6A737D;--shiki-dark:#768390;"> 分页查询条件(可以为 RowBounds.DEFAULT)</span></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#768390;"> * </span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">@param</span><span style="--shiki-light:#E36209;--shiki-dark:#F69D50;"> queryWrapper</span><span style="--shiki-light:#6A737D;--shiki-dark:#768390;"> 实体对象封装操作类(可以为 null)</span></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#768390;"> * </span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">@return</span><span style="--shiki-light:#6A737D;--shiki-dark:#768390;"> 分页数据(查询到的每页数据会映射为实体数据集合)</span></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#768390;"> */</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> <</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">E</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"> extends</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> IPage<</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">T</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">>> E </span><span style="--shiki-light:#6F42C1;--shiki-dark:#DCBDFB;">selectPage</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">(E </span><span style="--shiki-light:#E36209;--shiki-dark:#F69D50;">page</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">, @</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">Param</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">(Constants.WRAPPER) Wrapper<</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">T</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">> </span><span style="--shiki-light:#E36209;--shiki-dark:#F69D50;">queryWrapper</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">);</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> </span></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#768390;"> /**</span></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#768390;"> * 根据 Wrapper 条件,查询全部记录(并翻页)</span></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#768390;"> *</span></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#768390;"> * </span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">@param</span><span style="--shiki-light:#E36209;--shiki-dark:#F69D50;"> page</span><span style="--shiki-light:#6A737D;--shiki-dark:#768390;"> 分页查询条件</span></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#768390;"> * </span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">@param</span><span style="--shiki-light:#E36209;--shiki-dark:#F69D50;"> queryWrapper</span><span style="--shiki-light:#6A737D;--shiki-dark:#768390;"> 实体对象封装操作类</span></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#768390;"> * </span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">@return</span><span style="--shiki-light:#6A737D;--shiki-dark:#768390;"> 分页数据(查询到的每页数据会以键值对形式存入Map集合)</span></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#768390;"> */</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> <</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">E</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"> extends</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> IPage<Map<</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">String</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">, </span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">Object</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">>>> E </span><span style="--shiki-light:#6F42C1;--shiki-dark:#DCBDFB;">selectMapsPage</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">(E </span><span style="--shiki-light:#E36209;--shiki-dark:#F69D50;">page</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">, @</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">Param</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">(Constants.WRAPPER) Wrapper<</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">T</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">> </span><span style="--shiki-light:#E36209;--shiki-dark:#F69D50;">queryWrapper</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">);</span></span>
|
||
<span class="line"></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">}</span></span></code></pre></div><p>笔者只带大家测试第一种分页查询 API,另一种你可以自行选择测试一下。</p><p><strong>测试代码:</strong></p><div class="language-java vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">java</span><pre class="shiki shiki-themes github-light github-dark-dimmed vp-code"><code><span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">@</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">SpringBootTest</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">class</span><span style="--shiki-light:#6F42C1;--shiki-dark:#F69D50;"> MybatisPlusDemoApplication</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> {</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> </span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> @</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">Autowired</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"> private</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> UserMapper</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> userMapper;</span></span>
|
||
<span class="line"></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> @</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">Test</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"> void</span><span style="--shiki-light:#6F42C1;--shiki-dark:#DCBDFB;"> testSelectPage</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">() {</span></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#768390;"> // 创建分页对象,通过构造传入 当前页 和 每页显示条数</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> Page</span><span style="--shiki-light:#24292E;--shiki-dark:#F69D50;"><</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">User</span><span style="--shiki-light:#24292E;--shiki-dark:#F69D50;">> </span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">page</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"> =</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"> new</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> Page<>(</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">1</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">2</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">);</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> </span></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#768390;"> // 查询分页数据,条件构造器部分我们还是先传null</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> userMapper.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#DCBDFB;">selectPage</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">(page, </span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">null</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">);</span></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#768390;"> // 分页数据输出</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> System.out.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#DCBDFB;">println</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#96D0FF;">"数据总数:"</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"> +</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> page.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#DCBDFB;">getTotal</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">());</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> System.out.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#DCBDFB;">println</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#96D0FF;">"总页数:"</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"> +</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> page.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#DCBDFB;">getPages</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">());</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> System.out.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#DCBDFB;">println</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#96D0FF;">"当前页:"</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"> +</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> page.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#DCBDFB;">getCurrent</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">());</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> System.out.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#DCBDFB;">println</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">(</span><span style="--shiki-light:#032F62;--shiki-dark:#96D0FF;">"页大小:"</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"> +</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> page.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#DCBDFB;">getSize</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">());</span></span>
|
||
<span class="line"><span style="--shiki-light:#6A737D;--shiki-dark:#768390;"> // 每页的数据列表</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> page.</span><span style="--shiki-light:#6F42C1;--shiki-dark:#DCBDFB;">getRecords</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">().</span><span style="--shiki-light:#6F42C1;--shiki-dark:#DCBDFB;">forEach</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">(System.out</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">::</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">println);</span></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> }</span></span>
|
||
<span class="line"></span>
|
||
<span class="line"><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">}</span></span></code></pre></div><p><strong>控制台输出:</strong></p><div class="language-sql vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang">sql</span><pre class="shiki shiki-themes github-light github-dark-dimmed vp-code"><code><span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">==></span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> Preparing: </span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">SELECT</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;"> COUNT</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">(</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">1</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">) </span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">FROM</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> user </span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">WHERE</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> is_delete </span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;"> 0</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">==></span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> Parameters: </span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"><==</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> Columns: </span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">COUNT</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">(</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">1</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">)</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"><==</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"> Row</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">5</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">==></span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> Preparing: </span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">SELECT</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> id,</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">name</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">,age,email,create_time,update_time,is_delete </span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">FROM</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> user </span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">WHERE</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> is_delete</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">=</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">0</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"> LIMIT</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> ?</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">==></span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> Parameters: </span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">2</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">(Long)</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"><==</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> Columns: id, </span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">name</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">, age, email, create_time, update_time, is_delete</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"><==</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"> Row</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">1</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">, Jone, </span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">18</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">, Jone@126.com, </span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">2021</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">-</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">01</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">-</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">23</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;"> 17</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">47</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">52</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">2021</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">-</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">01</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">-</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">23</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;"> 17</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">47</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">52</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">0</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"><==</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"> Row</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">: </span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">2</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">, Jack, </span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">20</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">, Jack@126.com, </span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">2021</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">-</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">01</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">-</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">23</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;"> 17</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">47</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">52</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">2021</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">-</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">01</span><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;">-</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">23</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;"> 17</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">47</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">:</span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">52</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;">, </span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">0</span></span>
|
||
<span class="line"><span style="--shiki-light:#D73A49;--shiki-dark:#F47067;"><==</span><span style="--shiki-light:#24292E;--shiki-dark:#ADBAC7;"> Total: </span><span style="--shiki-light:#005CC5;--shiki-dark:#6CB6FF;">2</span></span></code></pre></div><div class="language- vp-adaptive-theme"><button title="Copy Code" class="copy"></button><span class="lang"></span><pre class="shiki shiki-themes github-light github-dark-dimmed vp-code"><code><span class="line"><span>数据总数:5</span></span>
|
||
<span class="line"><span>总页数:3</span></span>
|
||
<span class="line"><span>当前页:1</span></span>
|
||
<span class="line"><span>页大小:2</span></span>
|
||
<span class="line"><span>User(id=1, name=Jone, age=18, email=Jone@126.com, createTime=2021-01-23T17:47:52, updateTime=2021-01-23T17:47:52, isDelete=0)</span></span>
|
||
<span class="line"><span>User(id=2, name=Jack, age=20, email=Jack@126.com, createTime=2021-01-23T17:47:52, updateTime=2021-01-23T17:47:52, isDelete=0)</span></span></code></pre></div><div class="tip custom-block"><p class="custom-block-title">笔者说</p><p>测试完后,笔者再告诉你一件事儿,MP 的这款分页插件,支持的数据库也很多: MySQL 、MariaDB 、Oracle 、DB2 、H2 、HSQL 、SQL Lite 、PostgreSQL 、SQL Server 、Presto 、Gauss 、Firebird、Phoenix 、ClickHouse 、Sybase ASE 、 OceanBase 、达梦数据库 、虚谷数据库 、人大金仓数据库 、南大通用数据库。</p><p>这么多种类的数据库支持,从我们日常使用上来讲绝对够用了!</p></div><h2 id="参考文献" tabindex="-1">参考文献 <a class="header-anchor" href="#参考文献" aria-label="Permalink to "参考文献""></a></h2><p>[1]MyBatis Plus 官网. 指南[EB/OL]. <a href="https://baomidou.com/guide/" target="_blank" rel="noreferrer">https://baomidou.com/guide/</a>. 2021-01-18</p><h2 id="后记" tabindex="-1">后记 <a class="header-anchor" href="#后记" aria-label="Permalink to "后记""></a></h2><p><strong>C:</strong> 好了,简单的查询操作就介绍到这儿了,这些基础查询是不是还挺简单的?下一篇,我们将介绍预热了两篇已久的条件构造器,肯定有很多同学等急了。别着急,好饭不怕晚,下一篇笔者就带你好好认识认识它。</p><div class="info custom-block"><p class="custom-block-title">笔者说</p><p>对于技术的学习,笔者一贯遵循的步骤是:先用最最简单的 demo 让它跑起来,然后学学它的最最常用 API 和 配置让自己能用起来,最后熟练使用的基础上,在空闲时尝试阅读它的源码让自己能够洞彻它的运行机制,部分问题出现的原因,同时借鉴这些技术实现来提升自己的代码高度。</p><p>所以在笔者的文章中,前期基本都是小白文,仅仅穿插很少量的源码研究。当然等小白文更新多了,你们还依然喜欢,后期会不定时专门对部分技术的源码进行解析。</p></div>`,56);function m(s,v,b,T,_,P){const k=l,p=e("ClientOnly");return n(),r("div",null,[E,d(p,null,{default:g(()=>{var i,a;return[(((i=s.$frontmatter)==null?void 0:i.aside)??!0)&&(((a=s.$frontmatter)==null?void 0:a.showArticleMetadata)??!0)?(n(),C(k,{key:0,article:s.$frontmatter},null,8,["article"])):D("",!0)]}),_:1}),u])}const f=t(o,[["render",m]]);export{q as __pageData,f as default};
|