java使用存储过程的两种方式(java 存储过程)
2022-03-01
数据库直接创建使用存储过程
- 创建存储过程
DELIMITER $
CREATE PROCEDURE 名称()
BEGIN
逻辑语句(可以一条或多条)
END $
示例:
DELIMITER $
CREATE PROCEDURE setUsername()
BEGIN
update myqxin_user set username = '魅言倾馨' where id = 1;
END $
- 使用存储过程
call setUsername() // setUsername就是上面创建的名称
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文件的使用方式
<!-- 删除-无参 -->
<delete id="cleanStored" statementType="CALLABLE">
{call bcjs_clean}
</delete>
<!-- 计算-有参 -->
<select id="implementStorage" statementType="CALLABLE" parameterType="com.meditrusthealth.fast.isip.web.request.actuary.ActuaryVersionReq">
{call bcjs_cal(#{projectId},#{userId},#{versionId})}
</select>
以上就是代码,调用implementStorage方法,传入过程名称就行可以了