本文源码地址: 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>