1.解决多个参数处理
按照原始思路:
//用number和name查询
public User SelectUser02(int number, String name);
<select id="SelectUser02" resultType="com.as.pojo.User">
select * from stu where number=#{number} and name=#{name}
</select>
@Test
public void Test02() throws IOException {
String resource = "Mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession(true);
UserInterface mapper = sqlSession.getMapper(UserInterface.class);
System.out.println(mapper.SelectUser02(103, "罗振声"));
}
结果:报以下错误
解决方式:使用@Param注解
public User SelectUser02(@Param("number") int number, @Param("name") String name);
2.传参方式
(1)map集合
编写接口用HashMap接收参数
public User SelectUser03(HashMap map);
编写SQL
<select id="SelectUser03" resultType="com.as.pojo.User">
select * from stu where number=#{number} and name=#{name}
</select>
测试类
@Test
public void Test03() throws IOException {
String resource = "Mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
SqlSession sqlSession = sqlSessionFactory.openSession(true);
UserInterface mapper = sqlSession.getMapper(UserInterface.class);
HashMap<Object, Object> map = new HashMap<>();
map.put("number",101);
map.put("name","罗振声");
System.out.println(mapper.SelectUser03(map));
可以用普通传参,看具体需要什么就给什么,也可以用实体类传参(直接给个对象),如果某个需求经常用模型里没有的参数也可以考虑用DTO传参