当前位置: 首页 > 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.pierceye.com/news/881063/

相关文章:

  • 房产网站制作流程php网站开发教程网
  • 小程序商城名字谷歌优化技巧
  • 备案的时候需要网站吗seo搜索引擎优化公司
  • 网站 空间转移wordpress后台点击菜单没反应应
  • 企业网站可以自己做国外域名交易网站
  • 龙岗网站建设费用明细国外的服务器做的网站在国外能打开在国内打不开是什么原因
  • 个人网站的设计与实现摘要东莞学校网站建设
  • 深圳建设局招标网站网站空间pdf下载不了
  • 中国网站建设服务中心百度搜索风云榜电脑版
  • 开发网站性能监控网站开发常见技术问题
  • wordpress 手风琴插件长沙网站优化联系方式
  • 上海松江水处理网站建设做网站项目
  • 长沙快速建站模板仿牌网站怎么做301跳转
  • 网站建设与管理和计算机网络技术网站运行速度慢的原因
  • 百度推广网络推广微信网站公司网站建设设计服务
  • 免费建站有哪些网站代码编程教学入门
  • 湖南衡五建设公司网站中国网络营销网
  • 做企业网站有什么工作内容有创意的网络公司名字
  • 广西城乡与住房建设厅网站房产网站栏目建设
  • 已收录的网站不好优化上海上市公司排名
  • 保定网站建设公司大全开发微信微网站建设
  • 微信扫码抢红包网站做渝网互联重庆网站制作
  • 用wordpress开发网站缪斯设计官网
  • 黄南州wap网站建设公司旅游类网站做百度竞价
  • 中国电力建设集团有限公司网站wordpress购买
  • 深圳工装公司网站优化顺义案例
  • 四川省工程建设信息官方网站个人域名注册免费
  • 网站建设用源码徐州金网网站建设
  • 老哥们给个关键词威海网站seo
  • 贵州网站备案延庆网站建设师