3

我正在尝试向 DAO 实现中定义的 Mapper 函数发送多个参数,但在参数不属于任何类的情况下无法发送超过 1 个参数。我的意思是如何修改以下代码-

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。

提前致谢。

4

2 回答 2

13

使用映射器。

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();
        }
    }

阅读用户指南了解更多信息。

于 2011-06-11T00:08:40.657 回答
4

如果您使用的是 DAO 实现,那么您可以使用HashMap. 只需添加键值对HashMap并在函数调用中添加它,您就可以在mapper.xml使用“键”中访问它。

于 2011-06-30T08:14:40.517 回答