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

手机网站建设基本流程图3seo

手机网站建设基本流程图,3seo,网站开发方案设计,站长号需求背景需要一个像mybatis plus 一样的基于lambda, 且面向对象的查询mongo数据的插件。在网上找了很久,没有发现有类似功能的插件。于是自己手写了一个,借助mongoTemplate屏蔽了底层查询语句的实现细节。在此基础上,实现了查询的统一封装。技…

需求背景

需要一个像mybatis plus 一样的基于lambda, 且面向对象的查询mongo数据的插件。在网上找了很久,没有发现有类似功能的插件。于是自己手写了一个,借助mongoTemplate屏蔽了底层查询语句的实现细节。在此基础上,实现了查询的统一封装。

技术难点

  1. 基于SerializedLambda对象获取查询的属性,例如下面是获取task的name;

MongoLambdaQuery.lambdaQuery(Task.class).is(Task::getName, taskCriteria.getName())
  1. 怎么传参这种Task::getName 函数引用

通过函数式接口SFunction来表示R实际类型:

Children ne(R column, Object val);@FunctionalInterface
public interface SFunction<T, R> extends Function<T, R>, Serializable {
}

然后通过maybeDo来判断搜索参数不为空才进行查询。这里DoSomething又是一个函数式接口,something.doIt()时才会执行具体columnToString操作,得到我们的属性。

  protected Children addCondition(boolean condition, R column, SqlKeyword keyWord, Object val, Object... key) {return maybeDo(condition, () -> columnToSqlSegment(column, val, keyWord, key));}protected final Children maybeDo(boolean condition, DoSomething something) {if (condition) {something.doIt();}return typedThis;}@FunctionalInterfacepublic interface DoSomething {void doIt();}protected String columnToString(SFunction<T, ?> column) {return LambdaUtils.getField(column);}

c. 最后就是泛型的使用,这里需要查询返回泛型T,属性column泛型R,Children泛型表示返回类型类似builder,做链式调用,最后继承类对具体类型的声明。

public interface Query<T>
public interface Func<Children, R> extends Serializable

public abstract class AbstractQuery<T, R, Children extends AbstractQuery<T, R, Children>>
implements Func<Children, R>, Query<T>

public abstract class MongoAbstractLambdaQuery<
T, Children extends MongoAbstractLambdaQuery<T, Children>>
extends AbstractQuery<T, SFunction<T, ?>, Children>

public class MongoLambdaQuery<T> extends MongoAbstractLambdaQuery<T, MongoLambdaQuery<T>>

项目地址:

https://github.com/DarMi7/mongo-lambda-query

使用demo

  1. 引入maven依赖文件

<dependency>
<groupId>io.github.darmi7</groupId>
<artifactId>mongo-lambda-query</artifactId>
<version>1.1.0</version>
</dependency>
  1. 开启插件注解,加上需要扫描mongo实体的包路径

@EnableMongoLambdaQuery
@EnableMongoRepositories(basePackages = "com.darmi.demo.repository.mongo")
public class Application
  1. 编写查询代码

@Repositorypublic interface TaskRepository extends MongoRepository<Task, String> {default Page<Task> search(TaskCriteria taskCriteria) {return MongoLambdaQuery.lambdaQuery(Task.class).is(Task::getName, taskCriteria.getName()).is(Task::getType, taskCriteria.getFuzzyName()).reg(Task::getName, taskCriteria.getName()).gt(Task::getPoints, taskCriteria.getPoints()).gt(Task::getCreated, taskCriteria.getBegin()).lt(Task::getCreated, taskCriteria.getEnd()).page(taskCriteria.getPagination());}}
http://www.dt0577.cn/news/51182.html

相关文章:

  • 学校官方网站的建设目标是什么手机怎么创建网站
  • 徐城乡建设局网站今日头条普通版
  • 阿里云oss做视频网站长春网站建设技术支持
  • 简述网站一般建设的流程图seo百度seo排名优化软件
  • 一个网站的制作流程站长之家工具高清
  • 加强局网站建设廊坊seo建站
  • 网站正能量破解版下载大全安装各大网站收录查询
  • 视频聊天网站怎么建设嘉兴seo网络推广
  • 网站建设一般人能操作吗外链网
  • 西平网站建设培训班有哪些课程
  • 制作做网站的基本流程三叶草gw9356
  • 免费微网站企业seo网站推广
  • 天津特定网站建设推广手机如何建网站
  • 做代理的网站网络营销的产品策略
  • wordpress刷新seo排名优化推广教程
  • 刚做网站和搜出来的不一样seo是什么意思 职业
  • wordpress 启用多站点农产品营销策划方案
  • 网站建设微信运营公司免费b站推广网址有哪些
  • 优秀高端网站建设公司网络上如何推广网站
  • 景德镇做网站推广方案格式模板范文
  • 寄生虫网站代做企业网址搭建
  • 什么软件可以建网站如何让百度收录自己的网站信息
  • 做图片的网站有哪些品牌推广软文案例
  • 做网站找客户网站运营及推广方案
  • 用来查数据的网站怎么建设河南seo优化
  • 电子商务网站流程图网站排名优化查询
  • wamp跟wordpress常德网站优化公司
  • 小程序要先做网站什么是网络营销推广
  • 腾讯云低代码开发平台仁茂网络seo
  • 如何将自己做的网站挂到服务器上网站页面怎么优化