我正在尝试向DAO实现中定义的Mapper函数发送多个参数,但在参数不是任何类的持有者的情况下,无法发送多个参数。 我的意思是如何修改以下代码 -
obj.getName(int a, int b);
在DAO实施中
public void getAllName() throws PersistenceException {
SqlSession session = sf.openSession();
try {
session.selectList("getNames");
} finally {
session.close();
}
}
我想发送a和b来查询getNames。
提前致谢。
答案 0 :(得分:13)
使用Mapper。
interface Mapper
{
@Select( " select names from names_table where a = #{fieldA} and b = #{fieldB}" )
List<String> getNames( @Param("fieldA") String fieldA, @Param("fieldB") String fieldB)
}
@Param标记允许您指定可用于访问sql映射中的参数的内容。此示例显示@Select标记,但其工作方式与xml相同。
然后更改您的代码,
public List<String> getAllName() throws PersistenceException {
SqlSession session = sf.openSession();
try
{
Mapper mapper = session.getMapper(Mapper.class);
return mapper.getNames("a","b");
} finally {
session.close();
}
}
阅读user guide以获取更多信息。
答案 1 :(得分:4)
如果您正在使用DAO实施,那么您可以使用HashMap
来执行此操作。只需在HashMap
中添加键值对,然后将其添加到函数调用中,即可使用“key”在mapper.xml
中访问它。