mysql的pagehelper排序_Mybatis-PageHelper分页/动态排序/对List遍历/where语句动态拼装

news/2025/2/24 18:33:44

一、Mybatis-PageHelper实现分页

public ServerResponse manageGetProductList(int pageNum, intpageSize){//startPage--start//填充自己的sql查询逻辑//pageHelper-收尾

PageHelper.startPage(pageNum, pageSize);

List productList =productMapper.selectProductList();

List productListVoList =Lists.newArrayList();for(Product product : productList){

ProductListVo productListVo=assembleProductListVo(product);

productListVoList.add(productListVo);

}//给前端的是productListVO,但是需要productList进行分页

PageInfo pageInfo = newPageInfo(productList);

pageInfo.setList(productListVoList);returnServerResponse.createBySuccess(pageInfo);

}

主要代码:

//startPage--start//填充自己的sql查询逻辑//pageHelper-收尾//传入参数

PageHelper.startPage(pageNum, pageSize);//对结果进行封装

PageInfo pageInfo = newPageInfo(productList);//返回

return pageInfo ;

二、Mybatis-PageHelper实现动态排序

//排序处理 PageHelper的排序参数格式:price asc; price desc;

if(StringUtils.isNotBlank(orderBy)){if(Const.ProductListOrderBy.PRICE_ASC_DESC.contains(orderBy)){

String[] orderByArray= orderBy.split("_");

PageHelper.orderBy(orderByArray[0] + " " + orderByArray[1]);

}

}

传入的参数orderBy形式:price_asc或price_desc,传入到PageHelper中为price asc。

可以进行封装成枚举类或内部接口

public interfaceProductListOrderBy{//Set查询效率为O(1), List为O(n)

Set PRICE_ASC_DESC = Sets.newHashSet("price_desc","price_asc");

}

三、Mybatis中对List遍历

当Mybatis中参数为List的时候,需要遍历List中参数。

如:

List selectByNameAndCategoryIds(@Param("keyword") String productName, @Param("categoryList") List categoryList);

底层实现:

使用

进行遍历。

SELECTFROM

mmall_product

WHERE status= 1

AND name LIKE #{productName}

and category_id in

#{item}

四、Mybatis中where语句动态拼装

方法:

List selectByNameAndId(@Param("productName") String productName,

@Param("productId") Integer productId);

当传入的参数productName和productId都有可能为null的时候,需要在底层实现进行判断。

wherename LIKE #{productName}

AND id=#{productId}

这样当productName为null的时候,整个语句变为

where and id = #{productId}

而使用标签可以避免这个问题。

AND name LIKE #{productName}

AND id=#{productId}

当productName为null 的时候,会自动忽略productId前的AND。

完整实现:

SELECTFROM mmall_product

AND name LIKE #{productName}

AND id=#{productId}


http://www.niftyadmin.cn/n/605987.html

相关文章

无法在SQL 2005系统数据库中执行的T-SQL语句(XML处理)

表现:下面的代码, 在兼容性级别90的所有用户数据库和tempdb库中都能执行, 但无法在系统数据库中执行, 执行会收到如下错误:Msg 4121, Level 16, State 1, Line 2Cannot find either column "dbo" or the user-defined function or aggregate "dbo.f_test",…

[转贴]C#中调用Windows API的要点

在.Net Framework SDK文档中,关于调用Windows API的指示比较零散,并且其中稍全面一点的是针对Visual Basic .net讲述的。本文将C#中调用API的要点汇集如下,希望给未在C#中使用过API的朋友一点帮助。另外如果安装了Visual Studio .net的话&…

陶哲轩实分析 命题7.2.9 绝对收敛判别法

设$\displaystyle\sum_{nm}^{\infty}a_n$是实数的形式级数,如果这个级数是绝对收敛的,那么它是条件收敛的. 证明:该级数绝对收敛,说明对于任意给定的正实数$\varepsilon$,都存在整数$N$,使得对于一切$p,q\geq N$,有$$\…

Python初识(三)

Python初识(三) 内置排序 a [9,5,6,4,7,8,4] print(id(a)) a.sort() print(id(a)) print(a)a [9,5,6,4,7,8,4] b sorted(a) print(id(a)) print(id(b)) print(b)冒泡 简单冒泡排序 a [5,8,9,3,2] for i in range(len(a)-1):for j in range(i1,len…

c++计算1到100以内的质数

自考c实践的时候,有个求计算1-100的质数的问题,没搞出来 由于考试使用的是Dev-C开发工具,为了下次考试做准备,改用该工具,直接下载安装即可,不会涉及到什么破解等 下载地址:https://sourceforge…

触动精灵mysql用法教程_触动精灵如何使用 触动精灵脚本编写教程攻略大全

触动精灵是一款模拟手机触摸、按键操作的软件,通过制作脚本,可以让触动精灵代替双手,自动执行一系列触摸、按键操作。触动精灵简单、易用,不需要掌握任何编程知识就可以录制出功能强大的脚本;还可以使用编程知识&#…

多线程之旅六——异步编程模式,自己实现IAsyncResult

作为模式,只是一种大家认可的经验,模式可以作为大家交流的词汇而存在。下面我们就要介绍几种异步编程模式,AMP、EAP和TAP。当然,法无定法,在我们理解的基础上,我们可以根据具体情况适度修改。下面介绍的只是…

用Visual C#打造个性化的IE浏览器IE

是现在Windows平台下用的最多的浏览器,但微软提供的IE是那么朴实,以至于毫无特色,那么如何用程序来修改IE,打造有自己的特色的IE呢?我经过思索,通过注册表找到了修改IE的方法,下面我向大家介绍一下这种方法…