大良网站公司,wordpress profile,公司网站开发费用济南兴田德润o评价,商城网站服务器租用文章目录1 MyBatis中Controller层List集合接收数据#xff0c;泛型添加与否1.1 案例场景1.2 应该用什么接收1.3 是否可以用其他方式接收#xff1f;1.4 LIst集合接收可否不指定泛型1.5 mybatis中使用基本类型接收数据#xff1f;resultType是集合中的元素的类型#xff0c;…
文章目录1 MyBatis中Controller层List集合接收数据泛型添加与否1.1 案例场景1.2 应该用什么接收1.3 是否可以用其他方式接收1.4 LIst集合接收可否不指定泛型1.5 mybatis中使用基本类型接收数据resultType是集合中的元素的类型并不是集合本身2 在Service层实现类中为何要build相关构建器new对象进行Set方法2.1 build方法是干啥的2.2 在 Service实现类中build相关构建器为何还要与Mapper层建立连接2.3 在Mapper的XML映射文件中执行的语句2.4 思路分析3 添加套餐业务分析3.1 业务场景3.2 业务分析1 MyBatis中Controller层List集合接收数据泛型添加与否
1.1 案例场景 需要实现的接口根据分类id查询菜品会返回多个菜品 1.2 应该用什么接收 问题场景那么返回的菜品应该用什么接收 回答应用LIst集合接收 分析返回的是多组菜品信息参数因此应用数组或者集合接收又因为集合相比较与数组大小可变因此选择集合。 1.3 是否可以用其他方式接收 是否可以用实体类接收 回答不能理由因为实体类只能生成唯一的对象。 分析返回的是多组菜品信息参数因此应用数组或者集合接收又因为集合相比较与数组大小可变因此选择集合。 1.4 LIst集合接收可否不指定泛型 回答不可以会出现如上错误而且mybatis不支持直接用list来接收 总结List集合不能直接从前端传到后台需要借助实体类才能接收到集合。 1.5 mybatis中使用基本类型接收数据resultType是集合中的元素的类型并不是集合本身 分析当返回多条一个结果时并不是在resultType中写成List类型。如下图的错误xml中配置 会发生如下错误 resultType是集合中的元素的类型并不是集合本身。正确写法示例 2 在Service层实现类中为何要build相关构建器new对象进行Set方法
2.1 build方法是干啥的 Dish build Dish.builder().status(StatusConstant.ENABLE).categoryId(categoryId).build();解释实体类.build相当于new对象并进行set构造器方法为实体类中的对象赋值实体类本来是无值的。 2.2 在 Service实现类中build相关构建器为何还要与Mapper层建立连接 联系场景解决 场景 2.3 在Mapper的XML映射文件中执行的语句 select idlist resultTypecom.sky.entity.Dish parameterTypecom.sky.entity.Dish
!-- select idlist resultTypejava.util.List--select *from dishwhereif testcategoryId ! nullcategory_id #{categoryId}/ifif teststatus ! nulland status #{status}/ifif testname ! nulland name like (%,#{name},%);/if/where/select相当于
select * from dish where category_id11 and status1 and name like %酒%;2.4 思路分析 在前端获取到 category_id 和 status 的值然后service业务层做了处理即限制查询状态为StatusConstant.ENABLE已经被定义成1在售同时前端每个类别已经对应了一个category_id因此以这两属性为限制在XML中作限制进行查询。 select * from dish where category_id11 and status1 and name like %酒%;3 添加套餐业务分析
3.1 业务场景 数据库中有套餐表和菜品关系表 3.2 业务分析 首先,前端往后端传入参数包含套餐信息和菜品、套餐信息在添加菜品那个按钮上后端定义的DTO层接收到数据。 其次接收到service层进行业务处理先是将setmealDTO接收到的数据拷贝到setmeal实体类中 紧接着再将实体类setmeal对象中数据根据SQL语句插入套餐表中setmealMapper.insert(setmeal);再然后获取下数据库中套餐的主键ID Long setmealId setmeal.getId();然后获取后端接收到setmealDTO实体类中每一个SetmealDishes集合前端可以传多个菜品每个套餐可以包含多个菜品 ListSetmealDish setmealDishes setmealDTO.getSetmealDishes();紧接着遍历所获得的的SetmealDishes集合得到每一个套餐菜品的信息 setmealDishes.forEach(setmealDish - { setmealDish.setSetmealId(setmealId); });最后再将每一个SetmealDishes信息插入到数据库的SetmealDishes表中 setmealDishMapper.insertBatch(setmealDishes);