文章内容
一、基于注解传参
1、TestMapper接口
/**
* 根据name和code查询所有数据
* @param name
* @param code
* @return
*/List<Test> selectAll(@Param("name") String name, @Param("code") String code);
2、TestMapper.xml文件
<select id="selectAll" resultType="com.ntan520.test.model.Test">
select t.* from test
where name = #{name}
and name = #{code}
</select>
二、通过Object传参
1、查询条件对象TestQueryDto
@Data
public class TestQueryDto {
private String name;
private String code;
}
2、TestMapper接口
/**
* 根据name和code查询所有数据
* @param testQueryDto
* @return
*/List<Test> selectAll(TestQueryDto testQueryDto);
3、TestMapper.xml文件
<select id="selectAll" resultType="com.ntan520.test.model.Test">
select t.* from test
where name = #{name}
and name = #{code}
</select>
Xml文件接收参数时,直接使用对象中的属性名即可,如:#{name}
另外,如果传入的是一个Object且在接口方法使用了@Param注解,则在xml文件的传入参数的地方需要加上前缀,例如:
List<Test> selectAll(@Param("query") TestQueryDto testQueryDto);
<select id="selectAll" resultType="com.ntan520.test.model.Test">
select t.* from test
where name = #{query.name}
and name = #{query.code}
</select>
三、通过Map传参
1、TestMapper接口
/**
* 根据name和code查询所有数据
* @param pMap
* @return
*/List<Test> selectAll(Map pMap);
2、TestMapper.xml文件
<select id="selectAll" resultType="com.ntan520.test.model.Test">
select t.* from test
where name = #{name}
and name = #{code}
</select>
通过Map传参,在xml文件接收参数时使用map中key的名字作为参数名,如#{name}
四、根据下标传参
1、TestMapper接口
/**
* 根据name和code查询所有数据
* @param name
* @param code
* @return
*/List<Test> selectAll(String name, String code);
2、TestMapper.xml文件
<select id="selectAll" resultType="com.ntan520.test.model.Test">
select t.* from test
where name = #{0}
and name = #{1}
</select>
由于是多参数那么就不能使用parameterType, 改用#{index}是第几个就用第几个参数,索引从0开始
另外,使用下标接收参数时,接口方法中的参数不能用Parm注解