mybatis调用mysql存储过程,带结果集
来源:互联网 发布:linux内核 pdf 编辑:程序博客网 时间:2024/05/01 22:47
存储过程中经常需要返回结果集。 MySQL 中直接用 select 即可返回结果集。而 Oracle 则需要使用游标来返回结果集。这一点 MySQL 相对比较方便,如下代码即可实现输出结果集:
mybatis调用
service层需要注意增加 @Transactional(readOnly = false),放开事务写功能
service
@Transactional(readOnly = false) public List<DemoEntity> pc() { Map<String, String> map = new HashMap<String, String>() { { put("param", "1"); } }; return dao.pc(map); }
配置文件里面
<select id="pc" parameterType="java.util.Map" resultType="demoEntity" statementType="CALLABLE"> {call pcTest( #{param,jdbcType=VARCHAR,mode=IN} ) } </select>
mysql存储过程
DELIMITER $$ DROP procedure IF EXISTS pcTest $$ CREATE procedure pcTest(in sear_name varchar(2000)) BEGIN SELECT * FROM test_command;END$$DELIMITER;
一个mysql存储过程,可以参考博客:
http://blog.csdn.net/rdarda/article/details/7881648/
有存储过程类型和变量命名不能和查询的字段重复
需要注意的
BEGINDECLARE channelid VARCHAR (50);DECLARE userid VARCHAR (50);DECLARE productid VARCHAR (50);DECLARE directions VARCHAR (50);DECLARE no_more INT DEFAULT 0;DECLARE volumes INT ;DECLARE amounts double ;DECLARE cnt INT DEFAULT 0;DECLARE datacursor CURSOR FOR SELECT channel_id, user_id, product_id, direction, sum(volume), sum(amount) FROM c_transaction_reporting WHERE sys_id = sysid AND settle_date = settledate GROUP BY channel_id, user_id, product_id, direction;DECLARE CONTINUE HANDLER FOR NOT FOUND SET no_more = 1;OPEN datacursor; FETCH datacursor INTO channelid, userid, productid, directions, volumes, amounts;REPEAT IF directions = 1 THENSELECT count(*) INTO cntFROM c_daily_user_positionWHERE sys_id = sysidAND settle_date = settledateAND channel_id = channelidAND user_id = useridAND product_id = productid; if cnt =0 THENinsert into c_daily_user_position ( sys_id, settle_date, channel_id, user_id, product_id, purchase_volume, purchase_amount ) values ( sysid, settledate, channelid, userid, productid, volumes, amounts ); else update c_daily_user_position set purchase_volume = volumes and purchase_amount = amounts where sys_id = sysid and settle_date = settledate and channel_id = channelid and userid = userid and product_id = productid; END if;else select count(*) into cnt from c_daily_user_position where sys_id = sysid and settle_date = settledate and channel_id = channelid and user_id = userid and product_id = productid; if cnt =0 then insert into c_daily_user_position ( sys_id, settle_date, channel_id, user_id, product_id, redeem_volume, redeem_amount ) values ( sysid, settledate, channelid, userid, productid, volumes, amounts ); else update c_daily_user_position set redeem_volume = volumes and redeem_amount = amounts where sys_id = sysid and settle_date = settledate and channel_id = channelid and userid = userid and product_id = productid; end if ; END IF; FETCH datacursor INTO channelid, userid, productid, directions, volumes, amounts; UNTIL no_more=1 END REPEAT; CLOSE datacursor; END
0 0
- mybatis调用mysql存储过程,带结果集
- mybatis调用mysql存储过程返回结果集
- MyBatis 调用MySql存储过程处理树形结构结果集
- mybatis调用mysql存储过程返回结果集
- MyBatis调用存储过程返回结果集
- mybatis mysql 关于调用存储过程获取查询结果
- myBatis调用带返回值的存储过程(mysql)
- mybatis 调用mysql存储过程 带输出输入参数
- MyBatis—调用mysql存储过程 带输出输入参数
- mybatis 调用mysql存储过程 带输出输入参数
- mysql 创建存储过程 返回结果集 调用存储过程
- mybatis 调用 oracle 返回结果集 存储过程
- Mybatis 调用oracle存储过程返回结果集
- mybatis 调用存储过程 包含输入输出参数多结果集
- Mybatis调用存储过程返回多个结果集
- mybatis 调用 oracle 返回结果集 存储过程
- SSM-Mybatis调用Oracle存储过程返回结果集(游标)
- mybatis调用oracle存储过程返回结果集
- 问题定位——分析日志文件
- 有return的情况下try catch finally的执行顺序(最有说服力的总结)
- mysql limit分页查询效率
- poj 2777 Count Color
- 编译过程
- mybatis调用mysql存储过程,带结果集
- 快速排序
- MyEclipse8.6安装svn
- 软件开发设计文档模版
- linux 忘记mysql root密码
- 怎样理解Servlet的单实例多线程
- $emit/$broadcast/$on用法
- Android Studio中关于修改包名的相关问题
- Shell脚本自动修改Linux网卡地址、IP地址配置、主机名修改