接口参数的兼容性

需求:根据商品id或者itemName查询商品详情

一个定义了若干个参数的接口,当客户端发起请求而携带的参数个数不确定时,为了能够正常响应,需要对接口做一个适配处理。

1.controller层开发

@Controller
@RequestMapping("/items")
public class ItemsController {
	@Autowired
	private ItemsServiceImpl itemsService;
	
	//根据商品id或者itemName查询商品详情
	@RequestMapping(value="/getItemByItemIdAndItemName",method = RequestMethod.POST)
	@ResponseBody
	public WebResult getItemByItemIdAndItemName(@RequestBody String itemsCustom)throws Exception{
		WebResult result = WebResultHelper.newResult();
		ItemsCustom items = JSON.parseObject(itemsCustom, ItemsCustom.class);
		Items item = itemsService.getItemByItemIdAndItemName(items);
		if(item == null){
		    return  WebResultHelper.newErrorResult("没有查询到数据!");
		}
		result.put("data",item);
		return result;
	}
}

2.service层开发

//ItemsService
public interface ItemsService {
	Items getItemByItemIdAndItemName(ItemsCustom itemsCustom) throws Exception;
}

//ItemsServiceImpl
@Service
public class ItemsServiceImpl implements ItemsService {
	@Autowired
	private ItemsMapperCustom itemsMapperCustom;
	
	@Override
	public Items getItemByItemIdAndItemName(ItemsCustom itemsCustom) throws Exception {
	    return itemsMapperCustom.getItemByItemIdAndItemName(itemsCustom);
	}
}

3.dao层开发

//mapper接口
public interface ItemsMapperCustom {
	Items getItemByItemIdAndItemName(ItemsCustom itemsCustom) throws Exception;
}
//sql映射文件
<mapper namespace="com.steven.ssm.mapper.ItemsMapperCustom" >
   <select id="getItemByItemIdAndItemName" parameterType="itemsCustom" resultMap="queryItems">
        select * from items
        <where>
            <if test="itemId!=null and itemId!=''">
              and item_id = #{itemId}
            </if>
            <if test="itemName!=null and itemName!=''">
                and item_name = #{itemName}
            </if>
        </where>
    </select>
</mapper>
//pojo类
public class Items {
    private Integer itemId;
    private String itemName;
    private Long itemPrice;
    private String itemDetail;
    private Date itemCreateDate;
    //get和set方法......
}

4.测试
如截图所示,组合选择itemId和itemName作为请求参数都可以查询到相应的数据。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/u010286027/article/details/84840961