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

电子商务网站建设 教材2020 惠州seo服务

电子商务网站建设 教材,2020 惠州seo服务,建筑设计接单平台,下载百度卫星导航需求背景需要一个像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.tj-hxxt.cn/news/121674.html

相关文章:

  • 专业做网盘资源收录分享的网站营销型网站模板
  • 抖音代运营工作怎么样石家庄网站seo外包
  • 局域网如何做视频网站建设友情链接官网
  • 龙岗住房建设局网站谷歌seo网站运营
  • 阳江有哪些建站公司中国万网官网登录
  • 公职人员可以做公益网站吗培训机构招生方案
  • 化妆品网站 源码上海怎么做seo推广
  • 管理员网站后台上传本地视频建网站要多少钱
  • 政府网站建设 问题重庆整站seo
  • 成都专业做网站seo是什么岗位
  • 做网站类的书本信息查网站是否正规
  • 吉安永新哪里做网站2023b站免费推广入口游戏
  • 在线可以做翻译的网站吗百度快照收录
  • 南阳教育论坛网站建设成都百度推广电话号码是多少
  • 阿里巴巴网站的pc端和手机端怎么做的优化设计答案
  • 国内人做韩国网站一般都卖什么手续域名停靠
  • 去年做啥网站致富seo关键词排名优化专业公司
  • 传统类型的企业网站爱站权重查询
  • 网站开发需要多少钱seo零基础教学
  • 箱包东莞网站建设吸引客人的产品宣传句子
  • 北京建网站公司推荐一句吸引人的广告语
  • 我做网站推广百度的关键词优化
  • 做网站简约学校网站seo外包多少钱
  • 如何在国外建网站南京seo公司排名
  • 旅游电子商务网站建设目的如何注册网址
  • wordpress本地 域名西安百度网站排名优化
  • 珠宝网站源码下载平台推广营销
  • 永州网页定制青岛seo精灵
  • dreamwear做网站网站内搜索
  • 网站建设 正邦seo搜索引擎优化实训