📫 作者简介:「子非我鱼」,专注于研究全栈 🔥 三连支持:欢迎 ❤️关注、👍点赞、👉收藏三连,支持一下博主~
文章目录
引言示例一: 数据库直接创建使用存储过程示例二: java实现调用存储过程(JDBC方式)示例三: java实现调用存储过程(Mybatis方式)注意事项
引言
MySQL 存储过程是一组为了完成特定任务而组合在一起的 SQL 语句,可以通过 JDBC(Java Database Connectivity)来在 Java 中进行调用。以下是在 调用 MySQL 存储过程的示例:
示例一: 数据库直接创建使用存储过程
创建无参存储过程
DELIMITER $
CREATE PROCEDURE 名称()
BEGIN
逻辑语句(可以一条或多条)
END $
示例:
DELIMITER $
CREATE PROCEDURE setUsername()
BEGIN
update myqxin_user set username = '魅言倾馨' where id = 1;
END $
使用存储过程
call setUsername() // setUsername就是上面创建的名称
创建有参存储过程
DELIMITER $
CREATE PROCEDURE 名称(in 字段名 字段类型)
BEGIN
逻辑语句(可以一条或多条)
END $
示例
DELIMITER $
CREATE PROCEDURE setValueIsNotNull(in dateTime VARCHAR(32))
BEGIN
update lr_monitor_concentration_h set sulfur_dioxide = 0 where sulfur_dioxide is null and date_time like concat(dateTime, '%');
update lr_monitor_concentration_h set nitrite_ion = 0 where nitrite_ion is null and date_time like concat(dateTime, '%');
update lr_monitor_concentration_h set inhalable_particles = 0 where inhalable_particles is null and date_time like concat(dateTime, '%');
update lr_monitor_concentration_h set carbon_monoxide = 0 where carbon_monoxide is null and date_time like concat(dateTime, '%');
update lr_monitor_concentration_h set ozone = 0 where ozone is null and date_time like concat(dateTime, '%');
update lr_monitor_concentration_h set fine_particulate_matter = 0 where fine_particulate_matter is null and date_time like concat(dateTime, '%');
END $
使用存储过程
call setValueIsNotNull('2022-03-28');
示例二: java实现调用存储过程(JDBC方式)
public class StoredProcedureUtil {
private String url = "jdbc:mysql://test-fast-mysql.myqxin.com:3306/fast_isip_admin?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai";
private String username = "用户名";
private String password = "密码";
public Connection getConnection(){
// 数据库连接
Connection conn = null;
try {
// 加载数据库驱动,注册到驱动管理器
Class.forName("com.mysql.jdbc.Driver");
// 创建Connection链接
conn = DriverManager.getConnection(url,username,password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e){
e.printStackTrace();
}
return conn;
}
public void implementStorage(String Storagename){
String result = "{call "+ Storagename.concat("()}");
Connection conn = getConnection();
try {
CallableStatement cs = conn.prepareCall(result);
cs.execute();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
示例三: java实现调用存储过程(Mybatis方式)
这是Mapper.xml文件的使用方式
{call bcjs_clean}
{call bcjs_cal(#{projectId},#{userId},#{versionId})}
注解方式
public interface LrMonitorConcentrationMapper extends BaseMapper
@Select({"call setValueIsNotNull(#{format})"})
@Options(statementType = StatementType.CALLABLE)
void implementStorage(String format);
}
注意事项
确保 MySQL JDBC 驱动已经被正确导入到项目中。如果存储过程有输入参数,使用 setXXX() 方法设置参数值。如果存储过程有输出参数,使用 implementStorage() 方法注册输出参数,并在执行后使用 getXXX() 方法获取结果。
通过以上步骤,你可以成功在 Java 中调用 MySQL 存储过程。