**用动态sql实现下图查询
**
choose标签是按顺序判断其内部when标签中的test条件出否成立,如果有一个成立,则 choose 结束。当 choose 中所有 when 的条件都不满则时,则执行 otherwise 中的sql。
这里的id不能用int类型,如果查询时用了id之外的任何一个条件,就会出现空指针异常,因为int类型不能是null,我们必须给他一个值。而intege类型默认为null。
List find(@Param("id") Integer id,
@Param("gname") String gname,
@Param("price") Double price,
@Param("more") Double more,
@Param("less") Double less,
@Param("unit") String unit);
}
单元测试
查询价格小于10的商品信息
@Test
public void find(){
Integer id=null;
String gname=null;
Double price=null;
Double more=null;
Double less=10.0;
String unit=null;
Listlist=goodsMapper.find(id,gname, price,more,less, unit);
for (Goods goods : list) {
System.err.println(goods);
}
}
价格小于10的商品信息(当然我都测试过,不一一举出)
List dynamicSql(
Integer id,String gname,Double price,Double more,Double less,String unit);
}
@Override
public List dynamicSql(
Integer id, String gname, Double price, Double more, Double less, String unit) {
return gService.dynamicSql(id, gname, price, more, less, unit);
}
@RequestMapping("sql")
public List dynamicSql(Integer id, String gname, Double price, Double more, Double less, String unit){
return gMapper.find(id, gname, price, more, less, unit);
}