当前位置: 首页 > 编程笔记 >

JavaWeb如何实现统一查询接口(jfinal)

叶俊郎
2023-03-14
本文向大家介绍JavaWeb如何实现统一查询接口(jfinal),包括了JavaWeb如何实现统一查询接口(jfinal)的使用技巧和注意事项,需要的朋友参考一下

我发现我所有有查询的controller都要调用service层的两个方法 getById和getByKey 参数大致一样

写的时候基本都是复制粘帖。。。 于是idea老提示大量重复代码 好烦啊 于是就改进了一下

让所有有关查询的service实现一个QueryService的接口

接口定义俩方法

import com.jfinal.plugin.activerecord.Page;
public interface QueryService<T> {
  Page<T> getById(String id, String flag);
  Page<T> getByKey(int page, int pageSize, String value, String flag);
}

肯定要用泛型啊 不然强转容易出错 鬼知道我刚才调用的哪的这个方法

然后把service层的那些方法都统一一下参数

然后在一个公共控制器里写个静态方法 那个注解应该可以不用写 反正控制器不认静态方法

@NotAction
static <T> Page<T> query(QueryService<T> service,Controller controller, String key, String value, String flag, int page, int pageSize) {
  value = value == null ? "" : value;
  Page<T> list;
  if ("id".equals(key)) {
    list = service.getById(value, flag);
  } else if ("key".equals(key)) {
    list = service.getByKey(page, pageSize, value, flag);
  } else {
    list = null;
  }
  if (list == null) {
    controller.renderJson("result", "{'code':'203','info':'unknown key'}");
  } else {
    controller.renderJson("result", "{'code':'103','info':" + Json.getJson().toJson(list) + "}");
  }
  return list;
}

用的时候在控制器里第一个写调用的service对象,这个service一定要实现QueryService接口,第二个就传this,因为查询结束要传给前台的,我也是懒,都写这里了

如果render不写这里的话就把第二个参数删掉,把12-16行的业务代码扔回控制器的方法里写

最后还返回list 我也不知道我想干啥 等我想开了就把返回值删掉算了

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。

 类似资料:
  • 主要内容:1.接口相互作用,2.返回格式,3.数据,4.控制层控制器,5.美观美化,6.优雅优化,7.其他优化方案1.接口相互作用 前端和前端进行交互,前端按约定的请求URL路径,并合并相关参数,进入服务器接收请求,进行业务处理,返回数据给前端。 2.返回格式 我们可以参考这样的设计,这样的好处就把错误类型归类到某个区间内,如果区间不够,可以设计成4个数字。 这样前端开发人员在得到返回值后,根据状态码就可以知道,大概什么错误,再根据消息相关的信息描述,可以快速定位。 状态码和信息就会一一对应,比

  • 问题内容: 给定以下代码,如何遍历ProfileCollection类型的对象? 问题答案: Iterable是通用接口。您可能遇到的问题(实际上并没有说出您遇到的问题,如果有的话)是,如果使用通用接口/类而不指定类型实参,则可以擦除不相关的通用类型在课堂上。 因此,我至少将其更改为: 这应该工作: 在Iterable上没有type参数的情况下,迭代器可以简化为Object类型,因此只有这样才能起

  • 我有两个查询,它们都是分开工作的,但是当我尝试统一下摆时,我只有问题。 查询1: 查询 2: 如何根据(内部一)统一它们?

  • 问题内容: 如何检查某个类是否实现接口?当有: 如何检查是否实现接口? 该方法是否被正确覆盖,因此可以返回新创建的方法? 问题答案: 对于一个实例 然后做 对于Class实例

  • 好了, 我有一个标记接口: 然后我有一个类实现这个接口: 现在假设我有一个持有类MePOJO的引用: 那么,我如何通过使用来确定类是否实现了?

  • 问题内容: 我尝试使用Java ServiceLoader查找实现特定接口的所有类,如下所示: 不幸的是,当我在调试模式下运行Eclipse时,ServiceLoader找不到任何类。我觉得我错过了一个琐碎的事情… 问题答案: 无法做到。 为了将类公开为可以被发现的服务,您需要将其名称放入提供程序配置文件中,如使用Java平台创建可扩展应用程序中所述 。 没有内置的方法可以找到实现特定接口的所有类