谷粒商城p45-自动装配-stream流-lambda表达式

这篇具有很好参考价值的文章主要介绍了谷粒商城p45-自动装配-stream流-lambda表达式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

软件:idea、postman、virtual box

服务:gulimall-product

请求路径:http://localhost:10000/product/category/list/tree

启动:启动idea product模块,启动vm,启动docker mysql

controller代码

        自动装配CategoryService对象

        调用对象中的listWithTree()

自动装配相关,为什么用resource 不用 autowired:参考下面文章
http://t.csdn.cn/bS1GMhttp://t.csdn.cn/bS1GM

@Autowired注入方式是byType,如果只有一个实现类,会装配那个实现类。如果有两个实现类,会报错。

@Resource默认按照byName,找不到再byType

        @Resource(name="实现类名")//也可以@Resource

@Qualifier 也是 byName。

        @Qualifier("实现类名")

@RestController
@RequestMapping("product/category")
public class CategoryController {
    @Resource
    private CategoryService categoryService;

    /**
     * 查出所有分类以及子分类,以树形结构组装
     */
    @RequestMapping("/list/tree")
    //@RequiresPermissions("product:category:list")
    public R list(){
        List<CategoryEntity> entities = categoryService.listWithTree();
        return R.ok().put("data",entities);
    }
}

服务实现类文章来源地址https://www.toymoban.com/news/detail-494878.html


@Service("categoryService")
public class CategoryServiceImpl extends ServiceImpl<CategoryDao, CategoryEntity> implements CategoryService {

    @Autowired
    CategoryDao categoryDao;

    @Override
    public PageUtils queryPage(Map<String, Object> params) {
        IPage<CategoryEntity> page = this.page(
                new Query<CategoryEntity>().getPage(params),
                new QueryWrapper<CategoryEntity>()
        );

        return new PageUtils(page);
    }

    @Override
    public List<CategoryEntity> listWithTree() {
        //查出所有分类
        List<CategoryEntity> entities = categoryDao.selectList(null);
        //组装成树
            //查找一级分类
        List<CategoryEntity> level1Menus = entities.stream()
                .filter(categoryEntity -> categoryEntity.getParentCid() == 0)
                .peek(menu -> menu.setChildren(getChildrens(menu,entities)))
                .sorted(Comparator.comparingInt(CategoryEntity::getSort))
                .collect(Collectors.toList());


        return level1Menus;
    }
    //递归查找菜单的子菜单
    private List<CategoryEntity> getChildrens(CategoryEntity root,List<CategoryEntity>all){
        List<CategoryEntity> children = all.stream()
                .filter(categoryEntity -> categoryEntity.getParentCid() == root.getCatId())
                .peek(menu -> menu.setChildren(getChildrens(menu, all)))
                .sorted(Comparator.comparingInt(o -> (o.getSort() == null ? 0 : o.getSort())))
                .collect(Collectors.toList());


        return children;
    }

}

到了这里,关于谷粒商城p45-自动装配-stream流-lambda表达式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【javaSE】 Lambda表达式与Lambda表达式的使用

    Lambda表达式是Java SE 8中一个重要的新特性。lambda表达式允许你通过表达式来代替功能接口。 lambda表达式就和方法一样,它提供了一个正常的参数列表和一个使用这些参数的主体(body,可以是一个表达式或一个代码块)。 Lambda 表达式(Lambda expression) ,基于数学中的λ演算得名,也

    2024年02月08日
    浏览(61)
  • 进阶JAVA篇- Lambda 表达式与 Lambda 表达式的省略规则

    目录         1.0 什么是 Lambda 表达式?         1.1 既然跟匿名内部类相关,先来回顾匿名内部类。          1.2 Lambda 表达式与匿名内部类之间的关系。         1.3 函数式接口         1.4 在具体代码中来操作一下         2.0 Lambda 表达式省略规则          Lambda 表达

    2024年02月08日
    浏览(52)
  • 探索Python中的函数式编程:Lambda表达式与函数式工具【第135篇—Lambda表达式】

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 在Python编程世界中,函数式编程逐渐成为了一种流行的范式,特别是在处理数据和编写简洁、高效代码时。函数式编程的核心思想是将计算视

    2024年04月08日
    浏览(83)
  • 23.Lambda表达式

    Lambda 表达式(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。Lambda表达式可以表示闭包(注意和数学传统意义上的不同)。Lambda表达式是Java SE 8中一个重要的新特性。

    2024年02月03日
    浏览(40)
  • 深入理解lambda表达式

    var builder = WebApplication.CreateBuilder(args); var app = builder.Build(); app.Use(async (context, next) = { // Add code before request. }); 这段C#代码是用于设置ASP.NET Core应用中的中间件。下面是详细解释: app.Use : 这个方法是用来向应用的请求处理管道中添加一个中间件的。在ASP.NET Core中,中间件用于处

    2024年02月20日
    浏览(45)
  • 9.4 Lambda表达式

    2024年01月22日
    浏览(45)
  • Lambda表达式常用场景

    如果你的集合里泛型是ListString,那么可以直接用String.join(\\\",\\\",你的集合),把它变为字符串。 String.join(\\\",\\\", yourList) 但是如果你的集合是,ListInteger、ListLong,那么String.join这个方法就不适应了. 你可以用lamba表达式 String string= longs.stream().map(Object::toString).collect(Collectors.joining(\\\",\\\")); 方

    2024年02月11日
    浏览(42)
  • C++lambda表达式

                                                              🎬慕斯主页 : 修仙—别有洞天                                                          ♈️ 今日夜电波:Duvet—Bôa                                                

    2024年02月03日
    浏览(47)
  • 「JavaSE」Lambda表达式

    🎇 个人主页 :Ice_Sugar_7 🎇 所属专栏 :快来卷Java啦 🎇 欢迎点赞收藏加关注哦! Lambda表达式是Java SE 8中一个重要的新特性,基于数学中的λ演算得名,也可称为闭包, 它允许我们通过 表达式 代替功能接口 和方法类似,Lambda表达式提供了一个正常的参数列表和一个使用这

    2024年04月11日
    浏览(52)
  • Lambda表达式(JAVA)

    注:如果没有学过 匿名内部类 和 接口 不推荐往下看。 (parameters) - expression 或 (parameters) -{ statements; } parameters:表示参数列表; -:可理解为“被用于”的意思; expression:表示一条语句; statements:表示多条语句。 Lambda可以理解为:Lambda就是匿名内部类的简化。 lambda表达式

    2024年02月08日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包