• mysql存储过程


    数据库的存储过程可以减少程序代码的重复性,使程序更加简洁易懂

    最近在学习mysql存储过程中遇到了一些有趣的问题:

    1、在写存储过程的时候,存储过程名后面一定要加上括号,就算没有参数也要加,不然就会报错

    2、在调用存储过程时,没有参数的存储过程可以加括号也可以不加括号

    3、由于mysql是不区分大小写的,这点跟SQL不一样。所以在给存储过程入参起名字的时候不要以列名的小写字母来取,不然就会出现原本是更改或操作一条记录的,结果则修改了整个表

    1 create procedure update_name(IN name varchar(20), IN id INT)
    2 begin
    3 update student
    4 set sname=name where ID=id;
    5 end

    这段代码本应该修改一条记录,结果会把整个表的记录都修改。由于不区分大小写,所以ID=id一直为真。

    4、在mybatis程序中调用存储过程的主要代码:

    无参的存储过程调用比较简单:

    1 <select id="selectAllStudent" statementType="CALLABLE">
    2   <![CDATA[  
    3     {call selectallstudent()}
    4    ]]> 
    5   </select>

    这里的id一定要与接口中一样。

    有参数的存储过程调用有两种方法:

    第一种:

    xml中:

    1 <select id="updateNameById" statementType="CALLABLE">
    2  <![CDATA[  
    3     {call update_name(#{id},#{name})}
    4    ]]> 
    5  </select>

    dao层接口中:

     1 void updateNameById(@Param("id")int id,@Param("name")String psid); 

    参数名必须对应,不要会出现绑定失败的错误。

    第二种:

    XML中:

     1 <parameterMap type="java.util.HashMap" id="update_name">
     2 <parameter property="id" jdbcType="INTEGER" javaType="java.lang.Integer" mode="IN"/> 
     3 <parameter property="name" jdbcType="VARCHAR" javaType="java.lang.String" mode="IN"/> 
     4 </parameterMap>
     5 
     6   
     7 <select id="updateNameById" parameterMap="update_name"  statementType="CALLABLE">
     8 <![CDATA[  
     9     {call update_psid(?,?)}
    10    ]]> 
    11  </select>

    dao层接口中:

     1 void updateNameById(MAP<String,Object> map); 

    这里的parameterMap的参数名不能为空,不然会出错

    5、在调用返回结果集的存储过程时,应该有对应的ResultMap,该参数也不能为空,不然会出现莫名其妙的错误。服务器在启动时不会发现这个错误,但是在测试时会出现

    程序中的Mapper之间莫名其妙的不对应,照成原因 是Result Map 没有值 在出现错去的Mapper中。

     

  • 相关阅读:
    域环境下如何保护重要资料文件的安全(一)EFS加密(上)
    软件开发过程(CMMI/RUP/XP/MSF)是与非
    CMMI5在项目中的精简应用
    小型软件企业实施CMMI过程改进案例
    【转】plsql中ordered什么场合使用
    【转】C# Socket编程笔记
    某一个字段去重,其他字段全部查询的解决办法
    从Excel中导入数据时,提示未在本地计算机上注册“Microsoft.ACE.OLEDB.12.0”提供程序。
    oracle创建远程数据库连接dblink
    【转】eclipse 查看原始类出现The jar file rt.jar has no source attachment解决方法
  • 原文地址:https://www.cnblogs.com/John-Lyn/p/3835430.html
Copyright © 2020-2023  润新知