【Mybatis知识点整理】--- mapper请求参数使用总结


本文源码地址: https://github.com/nieandsun/NRSC-STUDY

1 Map作为请求参数 — 尽量避免使用

注意:不建议使用Map作为参数 — 很多公司的开发规范里都直接【强制】禁止使用map作为参数
(1)无法见名之义
(2)不好维护

  • Mapper类
/***
 * 使用Map时不要加@Param注解 ---> 加了会报错
 * @param params
 * @return
 */
List<TUser> selectByUsernameAndGender(Map<String, Object> params);
/***
 * 使用Map一种比较画蛇添足的方式
 * @param params
 * @return
 */
List<TUser> selectByUsernameAndGenderMap2(@Param("params") Map<String, Object> params);
  • 与Mapper类对应的mapper.xml
 <!--请求参数为Map方式-->
 <select id="selectByUsernameAndGender" resultMap="BaseResultMap">
     select
     <include refid="Base_Column_List"/>
     from t_user u
     where u.gender =#{gender} and u.username like CONCAT('%', #{username}, '%')
 </select>
 <!--请求参数为map,且用了@Param注解时 (画蛇添足)-->
 <select id="selectByUsernameAndGenderMap2" resultMap="BaseResultMap">
     select
     <include refid="Base_Column_List"/>
     from t_user u
     where u.username like CONCAT('%', #{params.username}, '%') and
     u.gender =#{params.gender}
 </select>

2 多个基本类型作为参数

注意:
(1)建议加上@Param注解
(2)参数在3-5个,如果超过这个数,建议自己构建po类

  • Mapper类
/***
 * 多个参数时,最好加上@Param注解 --- 因为有可能会报错
 * @param username
 * @param gender
 * @return
 */
List<TUser> selectByUsernameAndGenderParam(@Param("username") String username, @Param("gender") String gender);
/***
 * 不加@Param注解也可以 --- 但我一般都会用上面的方式
 * @param username
 * @param gender
 * @return
 */
List<TUser> selectByUsernameAndGenderParam2(String username, String gender);
  • 与Mapper类对应的mapper.xml
 <!--请求参数为多个参数方式1-->
 <select id="selectByUsernameAndGenderParam" resultMap="BaseResultMap">
     select
     <include refid="Base_Column_List"/>
     from t_user u
     where u.username like CONCAT('%', #{username}, '%') and
     u.gender =#{gender}
 </select>
 <!--请求参数为多个参数方式2||||和上面的代码一样-->
 <select id="selectByUsernameAndGenderParam2" resultType="TUser">
     select
     <include refid="Base_Column_List"/>
     from t_user u
     where u.username like CONCAT('%', #{username}, '%') and
     u.gender =#{gender}
 </select>

3 PO类作为请求参数

注意 :
(1)使用PO类时,可以不加@Param注解 —》 其实我也老是会忘,因为加了也不会错

  • Mapper类
 /***
  * 使用pojo做参数 --- 不加@Param
  * @param user
  * @return
  */
 List<TUser> selectByUsernameAndGenderPojo(UserPo user);

 /***
  * 使用po类做参数 --- @Param (画蛇添个足)
  * @param user
  * @return
  */
 List<TUser> selectByUsernameAndGenderPojo2(@Param("user") UserPo user);
  • 与Mapper类对应的mapper.xml
 <!--请求参数为po类-->
 <select id="selectByUsernameAndGenderPojo" resultMap="BaseResultMap">
     select
     <include refid="Base_Column_List"/>
     from t_user u
     where u.username like CONCAT('%', #{username}, '%') and
     u.salary =#{salary}
 </select>
 <!--请求参数为po类(画蛇添足版)-->
 <select id="selectByUsernameAndGenderPojo2" resultMap="BaseResultMap">
     select
     <include refid="Base_Column_List"/>
     from t_user u
     where u.username like CONCAT('%', #{user.username}, '%') and
     u.salary =#{user.salary}
 </select>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值