开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第6天,点击查看活动详情
总有一个对你有用,快来看看
Java知识点总结
注解
@RequestBody使用与不使用的区别
当前端传递的只是部分参数,不是一个完整对象时,可以不使用@RequestBody
例如:以这样的方式传递的参数,可以不使用@RequestBody来接受,可直接使用对象来接收。
但是当前端传递的是一个完整的对象,则需要使用@RequestBody,让对象去匹配对应的参数。
@Param使用与不使用的区别
@Param注解主要作用是在多个参数的情况下,给每个参数取一个名字,否则多参数会以他们的顺序位置进行命名。 传递单个参数的情况下,可以不使用@Param注解。 在多个参数的情况下,并且不是javaBean对象,如果不想按默认顺序匹配。就可以使用@Param注解,根据@Param定义的名称匹配。
注意点
- 当使用了@Param注解来声明参数的时候,SQL语句取值使用#{},${}取值都可以。
- 当不使用@Param注解声明参数的时候,必须使用的是#{}来取参数。使用${}方式取值会报错。
- 不使用@Param注解时,参数只能有一个,并且是Javabean。在SQL语句里可以引用JavaBean的属性,而且只能引用JavaBean的属性。
mybatis——foreach标签
先上代码
<select id="getShopProducts" resultType="com.eshop.modules.business.domain.StoreProduct" parameterType="string">
select id,spec_type,ot_price,mer_use,description,is_postage,
is_sub,is_best,(sales+ficti) as sales,price,is_bargain,
vip_price,store_name,stock,keyword,image,cost,is_good,
unit_name,is_benefit,update_time,give_integral,is_new,
sort,slider_image,is_show,bar_code,postage,code_path,
create_time,cate_id,is_seckill,mer_id,temp_id,ficti,
store_info,is_del,is_hot,is_integral,integral,browse FROM shopping.store_product
where id IN
<foreach item='ids' index='index' collection = 'ids' open='(' separator=',' close=')'>
#{ids}
</foreach>
</select>
foreach用于批量查询,形如(where id in(item,item1,item2...)),
item属性是循环的元素,index是循环的位置,collection是循环的元素类型
collection的几种情况:
- 如果传入的是单参数且参数类型是一个 List,collection 属性值为 list。
- 如果传入的是单参数且参数类型是一个 array 数组,collection 的属性值为 array(PS:但是我在写的过程中发现,这个类型可以直接写数组的名字,比如数组名为ids,
collection="ids")。 - 如果传入的参数是多个,需要把它们封装成一个 Map,当然单参数也可以封装成 Map。Map 的 key 是参数名,collection 属性值是传入的 List 或 array 对象在自己封装的 Map 中的 key。
今日先总结到这啦!