Spring Boot与Mybatis数据交互
之前用的SSH框架用习惯了后,现在用SSM框架感觉把以前的好多东西都给忘了,就说这个业务层和数据库的数据交互这块,这几天不停地再网上恶补了一些。
一、顺序传参法
Mapper层:
传入需要的参数
public interface GoodsMapper { public Goods selectBy(String name,int num); }
Mapper.xml:
*使用这种方式,在SpringBoot中,参数占位符用#{arg0},#{arg1},#{arg…}
总结:这种方法不建议使用,sql层表达不直观,且一旦顺序调整容易出错。
二、@Param注解传参法
Mapper层:
public interface GoodsMapper { public Goods selectBy(@Param("name")String name,@Param("num")int num); }
Mapper.xml:
*#{}里面的名称对应的是注解@Param括号里面修饰的名称。
<select id="selectBy" resultMap="BaseResultMap"> select <include refid="Base_Column_List" /> from goods where good_name=#{name} and good_num=#{num} </select>
总结:这种方法在参数不多的情况还是比较直观的,推荐使用。
三、使用Map封装参数
Mapper层:
将要传入的多个参数放到Map集合
Mapper.xml:
*#{}里面的名称对应的是Map里面的key名称
总结:这种方法适合传递多个参数,且参数易变能灵活传递的情况。
Service层:
带上要传入的参数
Service接口实现层:
封装Map集合:
控制层
public R forbidden(@RequestParam Map<String, Object> params) { // 把修改时间添加上 Map<String, Object> map1 = new HashMap<String, Object>(); String param = params.get("params").toString(); map1 = JSON.parseObject(param); String wxNumber = map1.get("wxNumber") == null ? null : map1.get("wxNumber").toString(); String isForbidden = map1.get("isForbidden") == null ? null : map1.get("isForbidden").toString(); ManagementMainService.getWxNumberUpdateForbidden(isForbidden, new Date(), wxNumber); return R.ok("成功"); }