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

好网站建设公司哪里好广告设计公司的成本票项目有哪些

好网站建设公司哪里好,广告设计公司的成本票项目有哪些,注册网站需要备案吗,网上推销产品的软件需求背景需要一个像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.yayakq.cn/news/434211/

相关文章:

  • 网站开发代码备案中网站名称
  • myeclipse做网站更改名字网页设计零基础学习课程
  • 兼职做问卷调查的网站好金融直播间网站建设
  • 网站二维码链接怎么做网站的照片上传的功能怎么做
  • 细谈电商网站外链建设的策略关于传媒的网站模板
  • jsp网站开发详解 下载wordpress 注册体验
  • 莱芜市网站建设商洛做网站电话
  • 淘客必须做网站磁力棒
  • 做暧暧xoxo网站淘客做的网站属于什么类型
  • 网站备案拍照是什么电商网站建设课设
  • 网站制作视频教学我国酒店网站建设存在的问题
  • 网站设置5个关键词网站规划与建设与安全管理
  • 有口碑的宁波网站建设电商设计网站素材
  • 重庆公司企业网站建设租机网站开发
  • 这几年做那些网站致富建网站专用网站
  • 简述网站开发步骤html代码图片
  • 关键词是网站seo的核心工作wordpress 文章 批量 分类
  • 资源下载类网站源码交易网站的建设规划
  • 襄樊网站推广打开网站弹出图片代码
  • 哈尔滨优质的建站销售价格河北营销型网站建设
  • 网站建设零基础教学乐至seo
  • angularjs 网站模板合肥哪家网站公司好
  • 网站初期seo怎么做wap网站是什么意思
  • 网站服务器哪里的好手机应用市场
  • 网站运营有前途吗温州室内设计公司排名
  • 正规网站模板设计写文章赚稿费的app
  • 北京市保障性住建设投资中心网站六盘水建设网站
  • 驻马店重点项目建设网站电子商务网站建设与管理英文
  • 如何做网站霸屏html5网站都有那个
  • wpf做的网站应聘工作哪个网站比较好