回顾存储过程简单使用

存储过程创建

  • 很长时间没有在项目中使用到存储过程,今天特意回顾一下存储过程的创建与调用。存储过程类似于Java中的函数,我们定义函数(存储过程)将内部逻辑(SQL)封装。在调用时,只需要指定方法名(存储过程名称),传入对应的参数即可。下面我们在mysql终端定义存储过程
1 mysql> delimiter $$ //定义与mysql默认的结束符(;)不同的结束符,避免下面的sql遇到(;)结束存储过程的创建
2 mysql> create procedure getPowerUnit(in puId varchar(50)) //这里的varchar需要指定长度
3     -> begin
4     -> select * from power_unit where pu_id = puId;
5     -> end$$ //新定义的结束符,到此存储过程定义结束
6 Query OK, 0 rows affected (0.12 sec)
7 mysql> delimiter ; //切换为默认的结束符号

存储过程调用

  • 上面我们定义了通过表主键pu_id查询记录的一个存储过程,在调用时需要使用指令call
 1 mysql> call getPowerUnit('pu20191213144059-0');
 2 +--------------------+----------+----------------+-------------+-------------------+-------------+-------------+---------------+---------------------+-------------+-------------+---------------+--------+
 3 | pu_id              | pu_name  | description    | admin_state | operational_state | pu_validity | pu_owner_id | pu_owner_name | create_time         | cancel_time | delete_time | particle_size | belong |
 4 +--------------------+----------+----------------+-------------+-------------------+-------------+-------------+---------------+---------------------+-------------+-------------+---------------+--------+
 5 | pu20191213144059-0 | 1000KG缸 | 布带/码装/织带    |           1 |                 1 |           1 |           1 | 负责人        | 2019-12-13 14:41:00 | NULL        | NULL        |             1 |   NULL |
 6 +--------------------+----------+----------------+-------------+-------------------+-------------+-------------+---------------+---------------------+-------------+-------------+---------------+--------+
 7 1 row in set (0.00 sec)
 8 
 9 Query OK, 0 rows affected, 1 warning (0.04 sec)

mybatis调用存储过程

  • 这里省略mapper接口中定义的抽象方法“Power selectPowerUnitById(String puId)”
1 <!-- 添加用户 -->
2     <select id="selectPowerUnitById" parameterType="java.lang.String" statementType="CALLABLE">
3         {call getPowerUnit(#{puId,mode=IN})}
4     </select>

定义完成,接下来与正常开发中的使用一致!
详细教程

posted @ 2020-04-10 10:40  奕为  阅读(177)  评论(0)    收藏  举报