MyBatis的!将多个参数传递给Mapper DAO

时间:2011-06-10 11:13:29

标签: mybatis

我正在尝试向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。

提前致谢。

2 个答案:

答案 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中访问它。