public <T> List<Map<String, Object>> selectMaps(Wrapper<T> queryWrapper, Class<T> clazz) { return this.sqlSession.selectList(this.getSqlId(clazz, SqlMethod.SELECT_MAPS), Collections.singletonMap("ew", queryWrapper)); } 这个方法是做什么的
时间: 2024-04-06 12:33:42 浏览: 70
这个方法是在MyBatis-Plus框架中的BaseMapper接口中定义的,用于根据条件查询符合条件的结果集并将结果封装成List<Map<String, Object>>返回。
其中,Wrapper<T> queryWrapper表示查询条件的封装对象,Class<T> clazz表示实体类对应的Class对象。该方法会根据传入的实体类Class对象和MyBatis-plus中定义的SqlMethod.SELECT_MAPS方法获取对应的SQL语句,然后使用MyBatis进行查询并将查询结果封装成List<Map<String, Object>>类型返回。
需要注意的是,该方法的返回结果是一个List<Map<String, Object>>,其中每个Map对象表示一条记录,Map的key为该记录的每个字段名,value为该字段对应的值。
相关问题
public static <T> Page<T> startPage(PageSortInterface pageSort, Supplier<List<T>> supplier, Object condition) 和public static <T> PageInfo<T> startPage(PageSortInterface pageSort, Supplier<List<T>> supplier, QueryWrapper<T> queryWrapper) 那种更好?为什么?
在使用 MyBatis-Plus 框架时,如果已经熟悉了 `QueryWrapper` 的使用,那么使用 `QueryWrapper` 的方式更好。
使用 `QueryWrapper` 的主要优点是可以方便地构造复杂的查询条件,例如多条件组合查询、排序、分组等,可以更灵活地适应不同的查询需求。
而使用 Object 类型的参数来传递查询条件,则需要在 `supplier` 中进行类型转换和判断,代码可读性和可维护性较差。
因此,综合考虑,使用 `QueryWrapper` 的方式更为推荐。
public static <T> PageInfo<T> startPage(PageSortInterface pageSort, Supplier<List<T>> supplier, QueryWrapper<T> queryWrapper) { PageHelper.startPage(pageSort.getPageNum(), pageSort.getPageSize(), pageSort.getSort() + " " + pageSort.getOrder()); List<T> list = supplier.get(queryWrapper); PageInfo<T> pageInfo = new PageInfo<>(list); return pageInfo; }中的 List<T> list = supplier.get(queryWrapper);报错Expected 0 arguments but found 1
根据你提供的代码,可以看出 `supplier` 是一个 `Supplier` 接口,该接口不接受任何参数,只有一个 `get()` 方法,因此在调用 `supplier.get(queryWrapper)` 时会报错。如果你想要将 `queryWrapper` 作为参数传递给 `supplier`,可以将 `supplier` 定义为一个接受 `QueryWrapper<T>` 类型参数的函数式接口,例如 `Function<QueryWrapper<T>, List<T>>`,然后在调用时使用 `supplier.apply(queryWrapper)`。这样就可以将 `queryWrapper` 作为参数传递给 `supplier` 了。
阅读全文