当前位置: 首页 > 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/110575/

相关文章:

  • 要怎么做自己的网站视频教学自己做交易网站
  • 公司网站建设哪儿济南兴田德润实惠吗中建集团官网
  • 单页网站设计昆明快速做网站
  • 那些网站专门做游戏辅助的简述网站制作过程
  • 徐州网站建设方案优化足球比赛直播阿根廷
  • 巴彦淖尔网站建设公司做网站重庆
  • 宏福建设集团有限公司网站网站没制作好可以备案吗
  • 做网站用linux哪个版本网络推广方法有哪些
  • 朝阳专业网站建设公司黑色炫酷的监控网站html
  • 咸阳市住房和城乡建设规划局网站公司网站建设公司
  • 注册完域名 如何做网站竖排导航网站
  • 自己如何建设企业网站自己做网站的公司
  • 网站是怎么建设的德州加盟网站建设
  • 中铁建设集团集采网站f1意大利站最新排名
  • 机械设计师接私活的网站wordpress悬浮小工具的插件
  • 大连开发区网站制作建设公司wordpress4.6教程
  • 网站建设推广岗位wordpress编辑小工具
  • 太原市制作网站网站设计哪家比较好
  • 网站建设维护论文太原网站优化排名
  • 站长检测工具网站为什么改版
  • 邢台做网站找谁字体图标制作网站
  • 做网站入什么科目网站跟app的区别是什么
  • 动完网站设计网站长沙有什么好玩的室内场所
  • 威海市做网站的西安年网站建设
  • 黑河做网站的开发网站怎样注册公司
  • 美食网站建设服务策划书高端网站设计找哪个公司
  • 建设银行快审额度查询网站广告网络营销
  • 儿童个人网站源码响应式网站搭建
  • 兰州网站建设公司哪家好聚名网评价
  • 湖州长兴做网站中国建筑官网超高层