时间:2021-07-01 10:21:17 帮助过:26人阅读
存储过程定义:
执行结果:
- DELIMITER $$
- DROP procedure IF EXISTS pro_sql_data1 $$
- CREATE procedure pro_sql_data1(in sear_name varchar(2000))
- BEGIN
- if sear_name is not null and sear_name!='' then
- select id,name,date_format(create_time,'%Y-%m-%d') as repDate from ad_place where
- name like concat('%',sear_name,'%');
- ELSE
- select id,name,date_format(create_time,'%Y-%m-%d') as repDate from ad_place;
- end if;
- END$$
- DELIMITER;
在mybatis中调用存储过程,然后获取该结果集:
1、xml配置文件
java代码
- <?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="com.ifeng.iis.bean.iis.Report" >
- <resultMap type="java.util.HashMap" id="resultMap">
- <result column="id" property="id" javaType="java.lang.Integer" jdbcType="INTEGER"/>
- <result column="name" property="name" javaType="java.lang.String" jdbcType="VARCHAR"/>
- <result column="repDate" property="repDate" javaType="java.lang.String" jdbcType="VARCHAR"/>
- <result column="summ" property="summ" javaType="java.lang.Long" jdbcType="BIGINT"/>
- </resultMap>
- <select id="test123" parameterType="java.util.Map" resultMap="resultMap" statementType="CALLABLE" >
- {call pro_sql_data(
- #{obj,jdbcType=VARCHAR,mode=IN}
- )
- }
- </select>
- </mapper>
- public String query(String param) throws Exception {
- logger.info(param);
- Map queryMap = new HashMap();
- queryMap.put("obj", param);
- //List<Map> listIis1 = reportDao.select4MapParam(queryMap, "currentSql");
- List<Map> listIis2 =reportDao.select4MapParam(queryMap,"test123");
- return JSONArray.fromObject(listIis2).toString();
- }
注:有上面可知,mysql存储过程中可以直接使用select语句返回结果集,而且mybatis可以直接使用list接收这个结果集(无需游标)。
参考文章:http://yhjhappy234.blog.163.com/blog/static/316328322012455714892/
版权声明:本文为博主原创文章,未经博主允许不得转载。
mybatis调用mysql存储过程返回结果集
标签:mybatis mysql 存储过程 结果集 游标