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

网站建设备案要哪些wordpress 迁移 工具

网站建设备案要哪些,wordpress 迁移 工具,wordpress中国优化,wordpress 获取分类列表背景 在用spring bootmybatis plus实现增删改查的时候#xff0c;总是免不了各种模糊查询和分页的查询。每个数据表设计一个模糊分页#xff0c;这样代码就造成了冗余#xff0c;且对自身的技能提升没有帮助。那么有没有办法实现一个通用的增删改查的方法呢#xff1f;今天…背景 在用spring bootmybatis plus实现增删改查的时候总是免不了各种模糊查询和分页的查询。每个数据表设计一个模糊分页这样代码就造成了冗余且对自身的技能提升没有帮助。那么有没有办法实现一个通用的增删改查的方法呢今天的shigen闲不住参照gitee大神蜗牛的项目实现了通用的查询分页的封装。 在此之前希望你对于mybatis plus的基本API有一定的了解。 那么我先列举一下我之前写的代码实现的模糊查询和分页吧。 PageSlowLogData page new Page(queryVo.getPageNum(), queryVo.getPageSize());if (StrUtil.isAllNotBlank(sortColumn, isAsc)) {OrderItem orderItem new OrderItem(sortColumn, Boolean.parseBoolean(isAsc));page.addOrder(orderItem);}LambdaQueryWrapperSlowLogData queryWrapper new LambdaQueryWrapperSlowLogData().like(keywordIsNotEmpty, SlowLogData::getInstanceId, keyword).or().like(keywordIsNotEmpty, SlowLogData::getInstanceName, keyword).or().like(keywordIsNotEmpty, SlowLogData::getDatabase, keyword).or().like(keywordIsNotEmpty, SlowLogData::getSqlText, keyword).or().like(keywordIsNotEmpty, SlowLogData::getUserName, keyword).gt(startTime ! null, SlowLogData::getTimestamp, startTime).lt(endTime ! null, SlowLogData::getTimestamp, endTime);return getBaseMapper().selectPage(page, queryWrapper); 怎么样我只能先肯定的说这个肯定比mybatis更好一些至少我的Java字段名变了我这边就可以在编译的时候报错提示去修改。那么shigen是个喜欢把代码写优雅的人这样的代码是活不久的。 改造 先分析一下我需要的效果或者说是功能 根据某些字段的值精确匹配根据某些字段的值进行模糊匹配根据某些字段排序可以升序降序还要进行数据的分页展示 所以如果停留在第一阶段代码能实现那我以上的代码就可以实现。但是有更高的要求和代码的复用性上我推荐我一下的实现。 查询条件封装 我写了一个工具类AggregateQueriesUtil实现动态查询条件的封装。 public class AggregateQueriesUtil {/*** 聚合查询对象拼接** param queries 查询对象* param aggregate 聚合查询对象* return {link QueryWrapper}{link Q}*/public static Q, T, R QueryWrapperQ splicingAggregateQueries(QueryWrapperQ queries, AggregateQueriesT, R aggregate) {if (aggregate.hasEqualsQueries()) {equalsQueries(queries, aggregate.getEqualsQueries());}if (aggregate.hasFuzzyQueries()) {fuzzyQueries(queries, aggregate.getFuzzyQueries());}if (aggregate.hasSortField()) {aggregate.setSortType(aggregate.hasSortType() ? aggregate.getSortType() : 0);applySort(queries, aggregate.getSortField(), aggregate.getSortType());}return queries;}/*** equals查询对象拼接** param queries 查询对象* param obj 聚合查询属性对象*/public static Q void equalsQueries(QueryWrapperQ queries, Object obj) {Field[] declaredFields obj.getClass().getDeclaredFields();for (Field field : declaredFields) {field.setAccessible(true);String underlineCase StrUtil.toUnderlineCase(field.getName());try {if (field.get(obj) ! null) {queries.eq(underlineCase, field.get(obj));}} catch (IllegalAccessException e) {e.printStackTrace();}}}/*** 模糊查询对象拼接** param queries 查询对象* param obj 模糊查询属性对象*/public static Q void fuzzyQueries(QueryWrapperQ queries, Object obj) {Field[] declaredFields obj.getClass().getDeclaredFields();for (Field field : declaredFields) {field.setAccessible(true);String underlineCase StrUtil.toUnderlineCase(field.getName());try {if (field.get(obj) ! null) {queries.like(underlineCase, field.get(obj));}} catch (IllegalAccessException e) {e.printStackTrace();}}}/*** 排序** param wrapper 查询对象* param sortField 排序字段* param sortType 排序类型*/private static Q void applySort(QueryWrapperQ wrapper, String sortField, int sortType) {String field StrUtil.toUnderlineCase(sortField);if (sortType 1) {wrapper.orderByDesc(field);} else {wrapper.orderByAsc(field);}} }第一个方法就是核心的方法实现聚合查询对象的拼接分别处理equals查询、like查询和排序。也可以看到这里用到了反射实现对象属性名的获取然后通过属性名获得传进来的对象的值。 那这里涉及到AggregateQueries它到底是什么呢这个就是我们查询条件的聚合类。 查询条件聚合类 文章篇幅限制这里仅做一个截图展示。 这里边其实是对查询条件的聚合。T表示的是等于查询条件的对象它的属性是对应的实体属性的子集即可R表示的是模糊查询条件对象(R是一个Bean可以根据对象的属性作为模糊查询的条件)和T差不多。剩下的三个属性分别是排序字段、排序方式和最后的分页。 那么shigen写了这么多了我该怎么调用呢 controller层的使用 先给看下代码吧。 RestControllerpublic class CommonQueryController {Resourceprivate UserMapper userMapper;PostMapping(value index/query)public ResultListUser get(RequestBody AggregateQueriesUserQueries, UserFuzzyQueries aggregate) {PaginationDTO pagination aggregate.getPagination();QueryWrapperUser wrapper AggregateQueriesUtil.splicingAggregateQueries(new QueryWrapper(), aggregate);PageUser page new Page(pagination.getPageNum(), pagination.getPageSize());PageUser userPage userMapper.selectPage(page, wrapper);ListUser records userPage.getRecords();return Result.ok(records);}}这是spring boot接口的写法可以看到关键点就在于调用我的工具类AggregateQueriesUtil.splicingAggregateQueries(new QueryWrapper(), aggregate);拼装成一个动态的QueryWrapper之后就是page的获得最后用mapper进行分页查询。 我的AggregateQueries的范型类也很简单 Data public class UserQueries {private Integer isDeleted;}只要保证自己定义的queries的属性集合是对应的实体类集合的子集即可。 验证 忙活了这么久来验证一下吧。我的实体类的属性我先列举出来 现在调用我的接口查询我的参数是 {equalsQueries: {isDeleted: 0},pagination: {pageNum: 0,pageSize: 1},fuzzyQueries: {phone: 132,introduction: 知道},sortField: id,sortType: 1 }用原生的sql写出来就是 select * from user where is_deleted0 and phone like concat(%, 132, %) and introduction like concat(%,知道, %) order by id desc limit 0,1;查出来的结果正好是一条我的分页容量也是1这是正常的。那我的接口调用呢 数据是没问题的查验一下sql确定一下 Preparing: SELECT id,username,password,introduction,is_deleted,create_time,update_time FROM user WHERE (is_deleted ? AND phone LIKE ? AND introduction like ?) ORDER BY id DESC LIMIT ?Parameters: 0(Integer), %132%(String), %知道%(String), 1(Long)可以看到这也是没问题的了。好的shigen大功告成一个简易版的模糊查询分页的通用工具封装实现了。 总结 以上使用了Java的反射和mybatis plus的queryWrapper实现了动态的模糊查询分页很好的减少了查询的代码冗余量可以用在实际的项目中减少代码的重复率提升开发效率。代码我放在了shigen的gitee上。上边也有很多shigen别的学习笔记欢迎大家的学习和参考。 但是我也必须得承认美中不足的地方 反射的效率如何保证 其实反射有它的优势但是也会影响程序的效率我的代码也并没有做实际的效率测试。 Field[] declaredFields obj.getClass().getDeclaredFields();for (Field field : declaredFields) {field.setAccessible(true);String underlineCase StrUtil.toUnderlineCase(field.getName());try {if (field.get(obj) ! null) {queries.eq(underlineCase, field.get(obj));}} catch (IllegalAccessException e) {e.printStackTrace();}} }异常的处理 我该如何保证不管是等于查询和模糊查询的对象属性和我对应的实体类属性是包含的关系呢我觉得可以做进一步的改进。 多种排序条件的组合 如我需要根据id升序再根据introduction降序我该咋办我觉得可以列一个TODO了。 以上就是我本篇的全部内容了如果觉得很不错的话也希望伙伴们点赞、评论、在看和关注哈这样就不活错过很多的干货了。 与shigen一起每天不一样
http://www.zqtcl.cn/news/881063/

相关文章:

  • 网站设计深圳企业为什么做网站素材
  • 网站顶部地图代码怎么做的家居装修
  • 网站后台不能修改网站哪家公司做的
  • 360网站建设官网致远oa办公系统官网
  • 南宁 做网站网站建立计划书
  • 兰亭集势网站模板宿迁房产
  • 网站建设开源苏州做网站优化哪家好
  • 自己的电脑做网站空间视屏互联网站备案管理工作方案 工信部
  • 移动网站设计尺寸在什么网站做外贸
  • 中外网站建设区别绵阳市城市建设档案馆网站
  • php电子商务网站源码凉山彝族自治州网站建站
  • 网站建设当前位置图标移动网站登录入口
  • 个人网站备案 淘宝客wordpress 面包屑导航修改
  • 网站建设 总体思路企业网站建设费是无形资产吗
  • 专业外贸网站开发上海外包公司网站建设
  • iis网站伪静态为什么要网站备案
  • 什么是网站东莞常平律师事务所
  • 网站落地页制作最简单的网站
  • 长兴县建设管理网站抖音小程序注册
  • 做网站容易挣钱吗厦门网页制作厦门小程序app
  • 大型网站开发前端准备北京网站建设V芯ee8888e
  • 关于做营销型网站的建议网页小游戏无需登录
  • 网站短期培训能学什么高校网站建设评比标准
  • 做外贸什么网站比较好做dede鲜花网站模板下载
  • 网站广告推广怎么做网站怎么优化关键词排名
  • 怎样做易支付网站数字化校园建设网站
  • 东莞做网站哪里好公司网站维护怎么维护
  • 微信网站界面设计江阴网站开发公司电话
  • 手机制作网站的软件离石做网站的网络公司
  • 贺州住房和城乡建设部网站广州商城网站建设地址