1. Mybatis的@param注解
自定义对象也用@param注解
注:使用@param注解,mapper.xml 可以不加parameterType。
@Param作用于Dao层,是为了传递多个参数,解决的是可读性和直观性
我们简单看一下使用:
List<PreEndBlogListVO> selectBlogListByTypeId(@Param("typeId") Integer id);
上述 @Param 作用其实就是将 id 重命名为 typeId 。因此,我们可以在xml中这样使用:
<select id="selectBlogListByTypeId" resultMap="preEndBlogListMap">
select id,title,description from blog where type_id=#{typeId,jdbcType=INTEGER}
</select>
1.并且当参数来自于多个不同POJO时候,使用@Param后,Mybatis会自动检索参数类型,也就是不用再在xml中配置 parameterType 属性了。
public List<Role> findRoleByMix(@Param("roleP") RoleParam role, @Param("permissionP") PermissionParam permission);
xml配置:
<select id="findRoleByMix" resultType="role">
SELECT id,name FROM t_role
WHERE roleName=#{roleP.roleName}
AND note=#{rolep.note}
AND level=#{permissionP.level}
<select>
2.并且当参数来为Map<String,Object>时候,使用@Param后,Mybatis会自动检索参数类型,也就是不用再在xml中配置 parameterType 属性了。
参数为Map<String,Object>时候未使用@Param问题:
List<Map<String, Object>> xxxMethod(Map<String,Object> param)
对应Mapper.xml的方法中参加自动生成是:parameterType="java.util.Map<java.lang.String,java.lang.Object>",这种情况导致编译错误。
使用parameter