@Param注解和@Mapper注解
@Param
1.如果dao方法中只有一个参数,入参可以为#{0}或者#{任意单词},也可以使用@Param指定参数名称,sql中就只能#{指定名称}获取参数
public List<Region> selectRegion(String region_code);
<select id="selectRegion" resultType="java.util.Map"> select id, create_time, update_time, isvalid, region_code, parent_region_code, name, region_path, region_level, sort, geometry from region_info where 1=1 <if test = "region_code != null"> AND region_code = #{0} </if> </select>
<select id="selectRegion" resultType="java.util.Map"> select id, create_time, update_time, isvalid, region_code, parent_region_code, name, region_path, region_level, sort, geometry from region_info where region_code = #{aaa} </select>
2.如果dao方法中有多个参数,可以使用@Param指定参数名称,sql中必须使用指定的参数名称作为入参#{指定名称}
public List<Region> selectAllRegion(@Param("region_code")String region_code,@Param("name")String name);
<select id="selectAllRegion" resultType="java.util.Map"> select id, create_time, update_time, isvalid, region_code, parent_region_code, name, region_path, region_level, sort, geometry from region_info where 1=1 <if test="region_code != null"> AND region_code = #{region_code} </if> <if test="name != null"> AND name like '%' || #{name} || '%' </if> </select>
假如我们不使用@Param指定名称,sql中可以使用#{arg0},#{arg1}...这种形式匹配对应入参
public List<Region> selectAllRegion(String region_code,String name);
<select id="selectAllRegion" resultType="java.util.Map"> select id, create_time, update_time, isvalid, region_code, parent_region_code, name, region_path, region_level, sort, geometry from region_info where 1=1 AND region_code = #{arg0} AND name like '%' || #{arg1} || '% ' </select>
总结:尽量使用@Param方式指定传参
@Mapper
将dao类划归spring管理