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