通常在构建一个后台系统时,前端会要求传入一个去数据库检索的关键字到后台的Controller层,一般使用的是Get方式,在控制层的映射地址下的方法使用该类关键字的字段名接收传参。这种方式是只能根据传入的某一种关键字属性字段去数据库查找,在效率上总感觉很低。
后来通过其他博客找到一种通过对象来接收传入的检索参数,进而去数据库更方便的查询数据的方法,但是呢,这种方法虽然还是通过前端Get方式传入关键字键值对(一个甚至多个),但是映射地址下的方法的参数是以一个对象去接收,本质上感觉算是违反了需求文档上要求传参为键值对的设定(不过要是自己去实现一个系统,就不用管了,怎么方便实现怎么来就好)。
下面先把代码贴上,仅为方便理解这种检索方式(因为本次开发的系统Base基类有query(Map<String,Object>)方法,所以适合使用这种方法,若没有这基类方法的可以再去找找看有没有别的更好的能实现的方法)。
public List<TerminalForbiddenPo> queryBy(TerminalForbiddenPo terminalForbiddenPo) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException {
List<TerminalForbiddenPo> terminalList = new ArrayList<>(0);
//如果含有关键字的对象不为空,查询其符合条件的对象集合
if