mysql存储过程是一个预编译的SQL语句,优点是允许模块化的设计,就是说只需创建一次,以后再该程序中就可以调用多次。如果某次操作需要执行多次SQL,使用存储过程比单纯SQL语句执行要快!
因此在java程序中调用存储过程的话,查询的速度就会很快。
--存储过程.sql
SQL Code
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 |
|
-- 连接数据库 USE test -- 删除存储过程 DROP PROCEDURE IF EXISTS selectAllEmp; -- 将mysql默认结束符设为//避免与结束符;冲突 DELIMITER // CREATE PROCEDURE selectAllEmp() BEGIN SELECT * FROM tb_employee; END // -- 恢复mysql默认结束符,但是执行会说执行语句为空,这个应该是在mysql运行窗口中有用。 DELIMITER ; -- 显示权限 SHOW GRANTS FOR root@localhost -- 赋权(不能为空用户赋权。注意:重复赋权会报错,因此建议执行赋权之前先显示权限或者直接执行存储过程) GRANT EXECUTE ON PROCEDURE selectAllEmp TO root@localhost; GRANT EXECUTE ON PROCEDURE selectAllStu TO root@localhost; -- 撤销权限 REVOKE EXECUTE ON PROCEDURE selectAllEmp FROM root@localhost; REVOKE EXECUTE ON PROCEDURE selectAllStu FROM root@localhost; ; -- 刷新mysql系统权限相关表 FLUSH PRIVILEGES; -- 执行存储过程 CALL selectAllEmp CALL selectAllStu SELECT * FROM tb_employee -- 重设密码 UPDATE mysql. user SET PASSWORD=PASSWORD( 'root') WHERE USER= 'root'; -- 创建新用户并赋权 CREATE USER 'test'@ 'localhost' IDENTIFIED BY 'test'; GRANT ALL ON *.* TO 'test' @ 'test' |
--model包下的Employee.java(对应数据库中的Employee表,建表就不做介绍了)
Java Code
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
|
package com.kk.model;
public class Employee { private int empId; private String empName; private int empAge; private String empSex; private String empDuty; public Employee(){ } public int getEmpId() { return empId; } public void setEmpId( int empId) { this.empId = empId; } public String getEmpName() { return empName; } public void setEmpName( String empName) { this.empName = empName; } public int getEmpAge() { return empAge; } public void setEmpAge( int empAge) { this.empAge = empAge; } public String getEmpSex() { return empSex; } public void setEmpSex( String empSex) { this.empSex = empSex; } public String getEmpDuty() { return empDuty; } |