mybatis存储过程返回结果
❶ 求助大神 mybatis 使用Mysql 的存储过程 怎么返回多个结果集
如何通过MyBatis获取mysql存储过程返回的不确定个数的多个结果集
如果对select
返回的结果行都需要处理,使用游标。
如果只想取得返回多行中的一行,使用limit。
❷ mybatis存储过程没有out如何返回值
查了一下官方网站;
public String myFunction(Map myParams)
{
SqlSession session = sqlSessionFactory.openSession();
try
{
session.update("myMappedStatement",myParams);
//这里取返回值
return (String)myParams.get("returnedVal");
}
catch (Exception ex)
{
}finally {
session.close();
}
}
❸ mybatis调用sqlserver存储过程返回结果集 层怎么处理
Mybatis调用存储过程返回结果集
配置文件
<resultMap type="Integer" id="count">
<result column="RecordCount" jdbcType="INTEGER" javaType="Integer" />
</resultMap>
<resultMap type="OrderForm" id="orders">
<result column="OrderId" property="id" jdbcType="VARCHAR" javaType="String"/>
</resultMap>
<select id="getOrders" statementType="CALLABLE" parameterType="Map" resultMap="count,orders" >
{call Page_Up_Get_OrderState(#{id,mode=IN,jdbcType=VARCHAR})}
</select>
需要注意的地方 statementType="CALLABLE" 不能少resultMap="count,orders" 这里返回多个结果集,如果有更多可以继续加
Dao层的接口
public List<List<?>> getOrders(Map<String, Object> map);
Service层调用
Map<String,Object> map=new HashMap<String, Object>();
map.put("id", "22333");
//取得返回的结果集
List<List<?>> results = orderDao.getOrders(map);
//第一条结果集 总数量
System.out.println(((List<Integer>)results.get(0)).get(0));
//第二条订单列表
System.out.println((List<OrderForm>)results.get(1));
❹ mybatis 查询数据库返回值某字段是 List 该怎么搞
解决方法:如果确认是单条数据,可以直接 Object? ***(**); 。没有封装成对象时,默认返回的是List<Map<字段名称String,列值Object>>这样的数据。Dao接口:
List<Map<String,Object>> list(Integer id);
SQL:
<select id="list" parameterType="Integer" resultType="Map">。
拓展:
1、MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。iBATIS一词来源于"internet"和"abatis"的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(sDAO)。
2、MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。
❺ Mybatis调用存储过程返回多个结果集的意义何在
实现代码是这样的:
public List<UserStruct> getUserById(String id) {
ApplicationContext ctx= DBMole.getConfigContext();
UserMapper userDao=(UserMapper) ctx.getBean("userMapper");
Map<String, Object> map = new HashMap<String, Object>();
map.put("id", id);
userDao.getUserByID(map);
//此处获取结果集
List<UserStruct> resultList = (ArrayList<UserStruct>) map.get("refcursor");
return resultList;
}
❻ mybatis update返回值 怎么配置
你可以把defaultExecutorType值改了。
有三个值:
SIMPLE 普通返回。
REUSE 重复。
BATCH 批量更新。
MyBatis发现更新和插入返回值一直为"-2147482646"的错误是由defaultExecutorType设置引起的,如果设置为batch,更新返回值就会丢失。mybatis官方的讨论列表,这句很关键:“If the batch
executor is in use, the update counts are being lost. ”
defaultExecutorType是默认执行类型。
❼ mybatis 调用mysql 中存储过程返回结果集
如果是sqlserver。 select 标签 配置 requltMap
去掉 #{users,mode=OUT,javaType=ResultSet,jdbcType=CURSOR,resultMap=UserMap}
调用selectList也行!
❽ mybatis调用mssql的存储过程,返回结果集的那种,不是返回单个的数据
<selectid="callTransNo"statementType="CALLABLE">
{ call proc_getAll() }
</select>
Mybatis 里面调用,跟调用普通的 sql select 语句一样!