当前位置: 首页 > news >正文

发布软文网站佛山网站开发公司有哪些

发布软文网站,佛山网站开发公司有哪些,订单展示 wordpress,高端的家居行业网站开发前言 工作中写的一段代码#xff0c;备个份#xff0c;以后兴许能直接用 功能描述#xff1a;如果前端传入了排序规则#xff0c;则优先按传入的字段进行排序#xff0c;SQL原有的排序规则追加到末尾 正文 定义拦截器 import cn.hutool.core.bean.BeanUtil; import cn.h…前言 工作中写的一段代码备个份以后兴许能直接用 功能描述如果前端传入了排序规则则优先按传入的字段进行排序SQL原有的排序规则追加到末尾 正文 定义拦截器 import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.toolkit.PluginUtils; import com.baomidou.mybatisplus.extension.parser.JsqlParserSupport; import com.baomidou.mybatisplus.extension.plugins.inner.InnerInterceptor; import lombok.extern.slf4j.Slf4j; import net.sf.jsqlparser.schema.Column; import net.sf.jsqlparser.statement.select.OrderByElement; import net.sf.jsqlparser.statement.select.PlainSelect; import net.sf.jsqlparser.statement.select.Select; import org.apache.ibatis.binding.MapperMethod; import org.apache.ibatis.executor.statement.StatementHandler; import org.jetbrains.annotations.Nullable;import java.sql.Connection; import java.util.List;/*** 添加自定义排序规则* 如果前端传入了排序规则则优先按传入的字段进行排序SQL原有的排序规则追加到末尾* 这个SQL的处理方式【不是基于】字符串拼接底层的SQL执行是基于 com.mysql.cj.jdbc.ClientPreparedStatement.execute,* PreparedStatement 是防SQL注入的强行做SQL注入会抛语法错误的异常 - syntax exception* author weiheng* date 2024-01-23**/ Slf4j public class MybatisPageOrderSqlInterceptor extends JsqlParserSupport implements InnerInterceptor {/** 排序方式 - 升序 */private static final String SORT_ASC asc;Overridepublic void beforePrepare(StatementHandler sh, Connection connection, Integer transactionTimeout) {if (log.isDebugEnabled()) {log.info( 自定义排序拦截 StatementHandler[{}], sh);log.info( 自定义排序拦截 connection[{}], connection);log.info( 自定义排序拦截 transactionTimeout[{}], transactionTimeout);}PluginUtils.MPStatementHandler mpSh PluginUtils.mpStatementHandler(sh);PluginUtils.MPBoundSql mpBs mpSh.mPBoundSql();// 取分页查询的入参 PageDTOPageDTO pageDto getPageDTO(mpSh);if (pageDto null || CollUtil.isEmpty(pageDto.getOrderColumns())) {// 不是自定义分页查询不做处理return;}mpBs.sql(parserMulti(mpBs.sql(), pageDto));}Overrideprotected void processSelect(Select select, int index, String sql, Object obj) {PageDTO dto;if (obj instanceof PageDTO) {dto (PageDTO) obj;} else {// 如果不是分页查询则不做处理return;}// 1. 解析SQLPlainSelect plainSelect (PlainSelect) select.getSelectBody();ListOrderByElement originOrderList plainSelect.getOrderByElements();ListOrderByElement clonedOriginOrder null;if (CollUtil.isNotEmpty(originOrderList)) {// 创建副本然后删除原有排序规则clonedOriginOrder BeanUtil.copyToList(originOrderList, OrderByElement.class);originOrderList.clear();}// 2. 向 plainSelect 中添加自定义排序规则addCustomizeSortColumns(dto, plainSelect);// 3. 添加SQL的原始排序规则 - 追加到末尾if (CollUtil.isNotEmpty(clonedOriginOrder)) {plainSelect.addOrderByElements(clonedOriginOrder);}if (log.isDebugEnabled()) {log.info( 自定义排序拦截 plainSelect[{}], plainSelect);}}/*** 添加自定义排序规则** param dto SQL查询入参* param plainSelect 明文* author weiheng**/private void addCustomizeSortColumns(PageDTO dto, PlainSelect plainSelect) {ListOrderColumnDTO orderColumns dto.getOrderColumns();for (OrderColumnDTO c : orderColumns) {// 构建新的排序规则OrderByElement orderByElement new OrderByElement();// 设置排序 - 不传值则默认asc升序orderByElement.setAsc(SORT_ASC.equalsIgnoreCase(c.getSort()));// 设置排序字段orderByElement.setExpression(new Column(c.getOrderColumn()));// 重新封装条件 - 优先按自定义进行排序plainSelect.addOrderByElements(orderByElement);}}/*** 分页查询入参获取* 大概搜了下没有到3个入参的如果有请将 PageDTO 放到第1或第2的位置* param mpSh 处理对象* return 分页查询入参* author weiheng**/Nullableprivate PageDTO getPageDTO(PluginUtils.MPStatementHandler mpSh) {PageDTO pageDto null;Object obj mpSh.parameterHandler().getParameterObject();try {Object param ((MapperMethod.ParamMap?) obj).get(param1);if (param instanceof PageDTO) {pageDto (PageDTO) param;} else {param ((MapperMethod.ParamMap?) obj).get(param2);if (param instanceof PageDTO) {pageDto (PageDTO) param;}}} catch (Exception e) {// 没有从SQL中获取到对应的参数没有param1或param2不走自定义分页逻辑}return pageDto;}}添加插件 - 添加自定义的拦截器 import com.baomidou.mybatisplus.annotation.DbType; import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.BlockAttackInnerInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.OptimisticLockerInnerInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration;/*** mybatis配置* author Heng.Wei* date 2022-05-11**/ Configuration public class MybatisPlusConfig {Beanpublic MybatisPlusInterceptor paginationInterceptor() {MybatisPlusInterceptor interceptor new MybatisPlusInterceptor();// 乐观锁插件interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());// 分页插件interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));// 添加防止全表更新与删除插件interceptor.addInnerInterceptor(new BlockAttackInnerInterceptor());// 深度分页插件interceptor.addInnerInterceptor(new MybatisHighPageInterceptor());// 添加自定义排序interceptor.addInnerInterceptor(new MybatisPageOrderSqlInterceptor());return interceptor;} }代码很简单不多做废话了自测OK
http://www.zqtcl.cn/news/191410/

相关文章:

  • 麻涌做网站个人证书查询网全国联网
  • 做毕业设计网站的步骤那家做网站比较好
  • 网站开发学习网wordpress 数据库 插件
  • 企业公司官网网站做网站怎样做
  • 网站建设 今网科技电商网站建设布局
  • 最优惠的网站优化管理培训机构
  • p2p网站建设广州深圳网站设计公司哪家好
  • 福州网站设计哪里好泰安网站建设入门推荐
  • 北京网站软件制作外卖网站开发
  • 个人网站建设与实现建立个公司网站
  • 南昌招商网站建设临沂兰山建设局网站
  • 母婴网站建设怎么样可以做网站
  • 二手车 网站开发wordpress 定时 检查
  • 淮南官网济南seo优化外包
  • 沈阳网站建设莫道网络网站建设常用六大布局
  • 网站建设外文版要求网站关键字优化销售
  • 马来西亚做公路投标网站设计网页多少钱
  • 织梦网站多少钱广告多的网站
  • 济南网站建站模板深圳南园网站建设
  • 国家免费技能培训官网白杨seo博客
  • 福州seo网站建设微服务网站
  • 网站宽度 像素长沙电商运营培训
  • 备案上个人网站和企业网站的区别app开发多少钱一个
  • 有限公司网站建设 中企动力佛山培训机构招生方案
  • 扫黄打非网站建设专业的高端网站制作公司
  • 做自媒体发视频用哪些网站江西网站建设哪家好
  • wordpress用户列表南宁百度seo排名优化
  • 做网站时如何写接口文档上海网站设计建设公司
  • 网站小图标怎么制作平面设计素材网站推荐
  • 多元网络兰州网站建设惠州网页建站模板