中途来个java小知识点总结

85 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第6天,点击查看活动详情

总有一个对你有用,快来看看

Java知识点总结

注解

@RequestBody使用与不使用的区别

当前端传递的只是部分参数,不是一个完整对象时,可以不使用@RequestBody
例如:以这样的方式传递的参数,可以不使用@RequestBody来接受,可直接使用对象来接收。 image.png

但是当前端传递的是一个完整的对象,则需要使用@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。

今日先总结到这啦!