2
我有一个关于存储过程多选的问题在mybatis中。在stored_procedure.sqlsql server 2008存储过程多选mybatis
USE cellar;
GO
alter PROCEDURE findAll_sp
AS
SELECT * FROM wine ORDER BY name; //The results of this select statement are stored in the list.
SELECT * FROM wine where id=5; //The results of this select statement are not stored in the list.
GO
stored_procedure.sql
只有一个SELECT语句的结果
两个SELECT语句(先选择一句)在stored_procedure.sql保存在WineDAO.java的列表。但是我想要列出所有这两个select语句的结果。 我该如何解决这个问题?
以下是相关的源代码。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="org.coenraets.cellar.cellar-mapper">
<select id="findAll" resultType="Wine">
{call findALL_sp}
</select>
</mapper>
mapper.xml
public class WineDAO {
private static SqlSessionFactory ssf;
static{
try{
Reader reader= org.apache.ibatis.io.Resources.getResourceAsReader("Config.xml");
ssf=new SqlSessionFactoryBuilder().build(reader);
}catch(Exception ex){ex.getMessage();}
}
public List<Wine> findAll() {
List<Wine> list = new ArrayList<Wine>();
list = ssf.openSession().selectList("findAll");
for(int i=0; i<list.size(); i++)
{
System.out.println(list.get(i).getName());
}
return list;
}
}
WineDAO.java
谢谢。
因为它是一个存储过程,所以你正在执行两个语句,你的过程的结果将是最后一个,你不能同时检索这两个语句。在不同的查询(不同的mybatis语句)中分隔两个语句的查询使用UNION。类似于'SELECT * FROM wine ORDER BY name UNION SELECT * FROM wine where id = 5' –
“你不能同时检索” - 不正确。查询MARS –
谢谢你的回答,Jorge。许多存储过程在我的项目中都有一个多选择句子。所以在mybatis中没有别的办法,我要放弃mybatis。再次感谢。 –