Mybatis游标的查询方法,游标的查询跟正常的查询写法稍有不同
需要在<select>标签中定义属性 statementType="CALLABLE"
在调用游标方法时,需要增加事务管理,以下是调用示例
方法调用
@Autowired
private MaterialMapper materialMapper;
/**
* 示例查询
*/
@Transactional(value = "default_transactionManager", rollbackFor = RuntimeException.class)
public List<MaterialVo> materialList(MaterialVo query) {
// 游标查询
materialMapper.mtrlList(query);
// 产品数据
List<MaterialVo> resultList = request.getResultList();
return resultList;
}
产品示例类
/**
* 产品示例类
*/
@Data
public class MaterialVo implements Serializable {
private static final long serialVersionUID = -8489601120763675572L;
/**
* 产品代码
*/
private String materialCode;
/**
* 产品名称
*/
private String materialName;
/**
* 存储游标返回的结果
*/
private List<MaterialVo> resultList;
}
游标查询Mapper
/**
* 产品查询Mapper
*/
public interface MaterialMapper {
/**
* 产品信息查询
*/
void materialList(MaterialVo query);
}
游标查询Mapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis//DTD Mapper 3.0//EN" "http://mybatis/dtd/mybatis-3-mapper.dtd">
<mapper namespace="xxx.mapper.MaterialMapper">
<resultMap id="materialListResultMap" type="xxx.material.MaterialVo">
<result column="material_code" jdbcType="VARCHAR" property="materialCode" />
<result column="material_name" jdbcType="VARCHAR" property="materialName" />
</resultMap>
<select id="materialList"
parameterType="xxx.material.MaterialVo"
statementType="CALLABLE"
>
{
#{ resultList, mode=OUT, jdbcType=OTHER, javaType=ResultSet, resultMap=materialListResultMap }
= call web_material_list
(
#{ materialCode, mode=IN }
)
}
</select>
</mapper>
更多推荐
Mybatis查询中使用游标
发布评论