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

建设网站找什么慈溪建设银行支行网站

建设网站找什么,慈溪建设银行支行网站,如何防护恶意网站,平台推广引流怎么做PaginationInnerInterceptor 此插件是核心插件,目前代理了 Executor#query 和 Executor#update 和 StatementHandler#prepare 方法。 在SpringBoot环境中配置方式如下#xff1a; /*** author giserDev* description 配置分页插件、方言、mapper包扫描等* date 2023-12-13 …PaginationInnerInterceptor 此插件是核心插件,目前代理了 Executor#query 和 Executor#update 和 StatementHandler#prepare 方法。 在SpringBoot环境中配置方式如下 /*** author giserDev* description 配置分页插件、方言、mapper包扫描等* date 2023-12-13 23:23:35*/ Configuration MapperScan(com.giser.mybatisplus.mapper) public class MyBatisPlusConfig {Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor(){MybatisPlusInterceptor mybatisPlusInterceptor new MybatisPlusInterceptor();mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));return mybatisPlusInterceptor;}}测试分页功能 import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.giser.mybatisplus.mapper.UserMapper; import com.giser.mybatisplus.pojo.User; import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest;/*** author giserDev* description* date 2023-12-13 23:28:43*/ Slf4j SpringBootTest public class MyBatisPlusPluginsTest {Autowiredprivate UserMapper userMapper;Testpublic void testMyBatisPlusPage(){PageUser page new Page(1,3);userMapper.selectPage(page, null);log.info(分页查询结果为{}, page);}}如何自定义分页 # mybatis-plus配置 mybatis-plus:configuration:# 引入日志log-impl: org.apache.ibatis.logging.stdout.StdOutImplglobal-config:db-config:# 配置MybatisPlus操作的表的前缀table-prefix: t_# 配置MybatisPlus的主键生成策略id-type: assign_id# 指定类型别名type-aliases-package: com.giser.mybatisplus.pojo在Mapper接口中定义分页方法 Repository public interface UserMapper extends BaseMapperUser {/*** 利用MybatisPlus的分页功能* param page 分页对象必须在第一个参数位置传递参数 Page 即自动分页* param userName 查询条件* return 结果*/PageUser selectPageByName(Param(page) PageUser page, Param(userName) String userName);}在Mapper.xml文件中实现分页语句 ?xml version1.0 encodingUTF-8 ? !DOCTYPE mapperPUBLIC -//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.giser.mybatisplus.mapper.UserMapperselect idselectPageByName resultTypeUserselect * from user where user_name #{userName}/select/mapper分页测试 import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.giser.mybatisplus.mapper.UserMapper; import com.giser.mybatisplus.pojo.User; import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest;Slf4j SpringBootTest public class MyBatisPlusPluginsTest {Autowiredprivate UserMapper userMapper;/*** Preparing: SELECT COUNT(*) AS total FROM user WHERE is_deleted 0* Parameters:* Columns: total* Row: 25* Total: 1* Preparing: SELECT id,user_name AS name,age,email,is_deleted FROM user WHERE is_deleted0 LIMIT ?* Parameters: 3(Long)* Columns: id, name, age, email, is_deleted* Row: 1, Jone, 18, test1baomidou.com, 0* Row: 2, 窃听风云, 23, giserDev163.com, 0* Row: 3, Tom, 28, test3baomidou.com, 0* Total: 3* Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession3a109ff7]* 分页查询结果为com.baomidou.mybatisplus.extension.plugins.pagination.Page5ee77baf* 分页查询记录结果为[User(id1, nameJone, age18, emailtest1baomidou.com, isDeleted0), User(id2, name窃听风云, age23, emailgiserDev163.com, isDeleted0), User(id3, nameTom, age28, emailtest3baomidou.com, isDeleted0)]* 分页查询记录条数为25* 分页查询当前页码为1* 分页查询每页大小为3*/Testpublic void testMyBatisPlusPage(){PageUser page new Page(1,3);userMapper.selectPage(page, null);log.info(分页查询结果为{}, page);log.info(分页查询记录结果为{}, page.getRecords());log.info(分页查询记录条数为{}, page.getTotal());log.info(分页查询当前页码为{}, page.getCurrent());log.info(分页查询每页大小为{}, page.getSize());}/*** Preparing: SELECT COUNT(*) AS total FROM user WHERE user_name ?* Parameters: 李雷(String)* Columns: total* Row: 1* Total: 1* Preparing: select * from user where user_name ? LIMIT ?* Parameters: 李雷(String), 3(Long)* Columns: id, user_name, age, email, is_deleted* Row: 1734579107187970050, 李雷, 12, null, 1* Total: 1* Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSessiona316f6b]* 分页查询结果为com.baomidou.mybatisplus.extension.plugins.pagination.Page48368a08* 分页查询记录结果为[User(id1734579107187970050, namenull, age12, emailnull, isDeleted1)]* 分页查询记录条数为1* 分页查询当前页码为1* 分页查询每页大小为3*/Testvoid testAutoPage(){PageUser page new Page(1,3);userMapper.selectPageByName(page, 李雷);log.info(分页查询结果为{}, page);log.info(分页查询记录结果为{}, page.getRecords());log.info(分页查询记录条数为{}, page.getTotal());log.info(分页查询当前页码为{}, page.getCurrent());log.info(分页查询每页大小为{}, page.getSize());}}问题分页参数处理原理 拦截执行的语句 org.apache.ibatis.plugin.Plugin#invoke if (methods ! null methods.contains(method)) { return interceptor.intercept(new Invocation(target, method, args)); }com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor#intercept Overridepublic Object intercept(Invocation invocation) throws Throwable {// ...for (InnerInterceptor query : interceptors) {// com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor#willDoQuery// willDoQuery()先判断总条数决定是否执行sql语句if (!query.willDoQuery(executor, ms, parameter, rowBounds, resultHandler, boundSql)) {return Collections.emptyList();}// beforeQuery()处理排序、分页方言query.beforeQuery(executor, ms, parameter, rowBounds, resultHandler, boundSql); }// ...Overridepublic boolean willDoQuery(Executor executor, MappedStatement ms, Object parameter, RowBounds rowBounds, ResultHandler resultHandler, BoundSql boundSql) throws SQLException {// 查找分页参数IPage? page ParameterUtils.findPage(parameter).orElse(null);if (page null || page.getSize() 0 || !page.searchCount()) {return true;}// ...// 组装统计语句判断总条数long total 0;if (CollectionUtils.isNotEmpty(result)) {// 个别数据库 count 没数据不会返回 0Object o result.get(0);if (o ! null) {total Long.parseLong(o.toString());}}page.setTotal(total);// protected boolean continuePage(IPage? page)// 返回是否继续执行后面的查询语句执行则返回true,否则返回falsereturn continuePage(page);}willDoQuery()方法中包含查询分页参数的逻辑如下 /*** 查找分页参数** param parameterObject 参数对象* return 分页参数*/ public static OptionalIPage findPage(Object parameterObject) {if (parameterObject ! null) {// 若参数类型为Map则从map中查找类型为IPage的参数作为分页参数if (parameterObject instanceof Map) {Map?, ? parameterMap (Map?, ?) parameterObject;for (Map.Entry entry : parameterMap.entrySet()) {if (entry.getValue() ! null entry.getValue() instanceof IPage) {return Optional.of((IPage) entry.getValue());}}} else if (parameterObject instanceof IPage) {// 若参数类型为IPage则直接返回作为分页参数return Optional.of((IPage) parameterObject);}}return Optional.empty(); }com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor#beforeQuery Overridepublic void beforeQuery(Executor executor, MappedStatement ms, Object parameter, RowBounds rowBounds, ResultHandler resultHandler, BoundSql boundSql) throws SQLException {IPage? page ParameterUtils.findPage(parameter).orElse(null);if (null page) {return;}// 处理 orderBy 拼接boolean addOrdered false;String buildSql boundSql.getSql();ListOrderItem orders page.orders();if (CollectionUtils.isNotEmpty(orders)) {addOrdered true;buildSql this.concatOrderBy(buildSql, orders);}// size 小于 0 且不限制返回值则不构造分页sqlLong _limit page.maxLimit() ! null ? page.maxLimit() : maxLimit;if (page.getSize() 0 null _limit) {if (addOrdered) {PluginUtils.mpBoundSql(boundSql).sql(buildSql);}return;}handlerLimit(page, _limit);// 查找方言在配置分页插件时设置了DbType此时可确定方言如此时返回的是com.baomidou.mybatisplus.extension.plugins.pagination.dialects.MySqlDialectIDialect dialect findIDialect(executor);final Configuration configuration ms.getConfiguration();// 构造分页语句com.baomidou.mybatisplus.extension.plugins.pagination.dialects.IDialect#buildPaginationSql// 此时dialect为MySqlDialect会调用com.baomidou.mybatisplus.extension.plugins.pagination.dialects.MySqlDialect#buildPaginationSql来构造sqlDialectModel model dialect.buildPaginationSql(buildSql, page.offset(), page.getSize());// ...// 此处绑定执行的sql语句model.getDialectSql()mpBoundSql.sql(model.getDialectSql());mpBoundSql.parameterMappings(mappings);}com.baomidou.mybatisplus.extension.plugins.pagination.dialects.MySqlDialect#buildPaginationSql public class MySqlDialect implements IDialect {Overridepublic DialectModel buildPaginationSql(String originalSql, long offset, long limit) {StringBuilder sql new StringBuilder(originalSql).append( LIMIT ).append(FIRST_MARK);if (offset ! 0L) {sql.append(StringPool.COMMA).append(SECOND_MARK);return new DialectModel(sql.toString(), offset, limit).setConsumerChain();} else {return new DialectModel(sql.toString(), limit).setConsumer(true);}} }
http://www.zqtcl.cn/news/367054/

相关文章:

  • 深圳做网站什么公司好广州电商小程序开发
  • 郑州高新区做网站的公司如何欣赏网站
  • 网站做维恩图做网站的公司杭州
  • 柳州公司网站制作公司wordpress 网店
  • 网站增加栏目费用在网站开发中如何设置登录
  • 怎样用php做网站百度推广联系人
  • 怎么建立手机网站如何申请公司域名
  • 营销型网站怎么收费邓州企业网站
  • 北京建设官方网站邢台网站维护
  • 新余网站制作网站开发工资咋样
  • 襄阳网站建设外包自己做一个网站
  • 网站域名的后缀wordpress文章归类
  • 查询企业信息的官方网站大连建设网站公司
  • 网站建设 全包专业建设规划方案模板
  • 做网站好还是做微信小程序好浙江建设工程造价信息网站
  • 网站开发怎么报价推广普通话手抄报模板可打印
  • 好的平面网站模板企业网站建设浩森宇特
  • 做网站通过什么赚钱吗公司建设网站的费用
  • 如何做建筑一体化的网站视频网站开发应用到哪些技术
  • 巴中微信网站建设竞价托管一般多少钱
  • 彩票网站开发 违法股票网站排名哪个好
  • 宝格丽网站建设哈尔滨网站建设王道下拉強
  • 烟台网站建设的公司世界500强企业排名2021
  • 网络营销做得比较成功的案例吴中seo网站优化软件
  • 怎么设立网站美区下载的app怎么更新
  • 建立网站ppt做酒店网站所用到的算法
  • 上海网站建设的价格低太仓做网站的公司
  • 怎样登录建设互联网站怎么做中英文网站
  • 云网站7china中小企业网站建设好么
  • 美丽南方官网网站建设国际新闻最新消息今天摘抄