mysql 存储过程创建及调用

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_35167373/article/details/82182626

返回(查询users表的条数 + 传入的数字)

CREATE DEFINER=`root`@`localhost` PROCEDURE `getcount`(OUT s INT, IN t INT)
BEGIN
 SET @t = (SELECT COUNT(1) FROM users);
 SET s = @t+t;
END

运行,users表22条数据 加 5 返回 27

Mybatis 调用

   mapper接口

public void getcount(Map<String, Object> params);

 mapper.xml

  <select id="getcount" statementType="CALLABLE">
    {call getcount(
      #{s, mode=OUT, jdbcType=INTEGER},
      #{t, mode=IN, jdbcType=INTEGER}
    )}
  </select>

serviceimpl

	@Override
	public void getcount(Map<String, Object> params) {
		usersMapper.getcount(params);
	}

controller

@GetMapping("/getcount")
	public Map getcount() throws Exception {
		Map map = new HashMap();
		map.put("s",0);
		map.put("t",5);
		userServices.getcount(map);
		return map;
	}

调用

 

存储过程的优点:

       1.存储过程只在创造时进行编译,以后每次执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。
  2.当对数据库进行复杂操作时(如对多个表进行Update,Insert,Query,Delete时),可将此复杂操作用存储过程封装起来与数据库提供的事务处理结合一起使用。
  3.存储过程可以重复使用,可减少数据库开发人员的工作量
  4.安全性高,可设定只有某此用户才具有对指定存储过程的使用权

缺点:

       不同数据库语法有差异,迁移性差

猜你喜欢

转载自blog.csdn.net/qq_35167373/article/details/82182626