1. 程式人生 > >mysql 儲存過程建立及呼叫

mysql 儲存過程建立及呼叫

返回(查詢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.安全性高,可設定只有某此使用者才具有對指定儲存過程的使用權

缺點:

       不同資料庫語法有差異,遷移性差