• 存储过程的简单使用以及Mybatis调用存储过程


     前言:小刘突然想到了存储过程,于是乎整理了一些存储过程的简单用法!存储过程主要用于复杂的逻辑,统计报表,可以用于优化性能,稳定且安全;唯一让小刘感到美中不足的是易于维护,但是不易于迁移;嗯,如果mybatis可以动态的创建存储过程就好了,但是小刘貌似没有找到方法实现!

    存储过程简介

    存储过程(Stored Procedure)是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象。

    存储过程是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需要时)来调用执行。

    存储过程思想上很简单,就是数据库 SQL 语言层面的代码封装与重用

    存储过程的 创建以及调用

    1. #声明结束符合
    2. DELIMITER $$
    3. #创建存储过程
    4. CREATE PROCEDURE select_post()
    5. BEGIN
    6. SELECT * FROM `interest_post` ip ;
    7. END $$
    8. #调用存储过程
    9. CALL select_post( );
    10. #删除存储过程
    11. DROP PROCEDURE select_post;

    1. DELIMITER $$
    2. CREATE PROCEDURE select_by_id(IN p_id INTEGER)
    3. BEGIN
    4. SELECT*FROM `interest_post` ip WHERE id=p_id;
    5. END $$
    6. CALL select_by_id(1);

     

    1. #-------------------多参数查询----------------------
    2. DELIMITER $$
    3. CREATE PROCEDURE sleect_by_param(IN p_id INTEGER,IN p_user_id INTEGER)
    4. BEGIN
    5. SELECT*FROM `interest_post` ip WHERE id=p_id AND user_id=p_user_id;
    6. END $$
    7. CALL sleect_by_param(1,1)

     

    Mybatis调用存储过程

    mybatis调用之前写的存储过程=======多用于复杂的统计查询。这里简单的demo使用;

      Map<String,Object> sleect_by_param(@Param("id") Integer id, @Param("userId") Integer userId);
    1. <select id="sleect_by_param" parameterType="Integer" resultType="map" statementType="CALLABLE">
    2. {call sleect_by_param(#{id,mode=IN},#{userId,mode=IN})}
    3. </select>

    存储过程逻辑语句

    条件语句

    1. if-then-else 语句

    2. case语句:

    循环语句

    1. while ···· end while

    2. repeat···· end repeat

    3. loop ·····endloop

    4. LABLES 标号:

     ITERATE迭代

    下面一个简单while语句

    1. #----------while do 循环语句----------------#
    2. DELIMITER $$
    3. CREATE PROCEDURE whileP()
    4. BEGIN
    5. DECLARE var INT;
    6. SET var=0;
    7. WHILE var<6
    8. DO
    9. #insert into t values(var);
    10. SET var=var+1;
    11. END WHILE;
    12. SELECT*FROM `interest_post` ip WHERE id=var;
    13. END$$
    14. CALL whileP();

  • 相关阅读:
    AI推介-多模态视觉语言模型VLMs论文速览(arXiv方向):2024.03.01-2024.03.05
    【算法碎碎念】dilworth定理
    $nextTick属性使用与介绍
    cms系统稳定性压力测试出现TPS抖动和毛刺的性能bug【杭州多测师_王sir】
    股票python量化交易011-JQData财务相对估值指标
    【生成对抗网络学习 其一】经典GAN与其存在的问题和相关改进
    WebGPU学习(10)---如何利用 WebGPU 实现高性能
    35岁的腾讯测试员退休?答:存够2千万回家买房
    Effective Java学习笔记---------序列化
    怎样找外企/远程的工作
  • 原文地址:https://blog.csdn.net/qq_38310446/article/details/112275733