MySQL存储过程以及Java调用ca'llablestatment

1、创建存储过程SQL语句

#创建存储过程
create procedure mysql_add(in x1 int,in x2 int , out y int)
	begin 
		set y := x1 + x2;
	end
#调用存储过程
call mysql_add(2,3,@y)
#查询结果
select @y;
#查询所有的存储过程
show procedure status;

1.1、Java调用存储过程

@org.junit.Test
    public void testcallablestatement() throws Exception {
        long start = System.currentTimeMillis();
        //创建连接
        String driverClass = "com.mysql.jdbc.Driver";
        String url = "jdbc:mysql://localhost:3306/mysql_jdbc";
        String username = "root";
        String password = "root";
        Class.forName(driverClass);
        Connection con = DriverManager.getConnection(url, username, password);
        //关闭自动提交
        con.setAutoCommit(false);
        //调用存储过程
        CallableStatement cst = con.prepareCall("{call mysql_add(?,?,?)}");
        //设置输入参数
        cst.setInt(1,2);
        cst.setInt(2,4);
        //设置输出参数
        cst.registerOutParameter(3,Types.INTEGER);
        //执行存储过程
        cst.execute();
        //获取返回结果
        int result = cst.getInt(3);
        System.out.println(result);
        //提交
        con.commit();

        cst.close();
        con.close();
        long time = System.currentTimeMillis() - start;
        System.out.println(time);//5351
    }

2、利用存储过程向表中插入数据

#创建百万数据插入过程
create procedure procedure_insert(in n int)
	begin 
	declare id int;
	declare name varchar(20);
	declare age int;
	declare i int default 0;
		while i < n do 
			set id := i;
			set name := concat('tome',i);
			set age := i % 100;
			insert into student (id,name,age) values (id,name,age);
			set i := i + 1;
			end while;
	END
#调用插入数据的存储过程
call procedure_insert(100)

2.1、Java调用存储过程

    @org.junit.Test
    public void testprocedure_insert() throws Exception {
        long start = System.currentTimeMillis();
        //创建连接
        String driverClass = "com.mysql.jdbc.Driver";
        String url = "jdbc:mysql://localhost:3306/mysql_jdbc";
        String username = "root";
        String password = "root";
        Class.forName(driverClass);
        Connection con = DriverManager.getConnection(url, username, password);
        //关闭自动提交
        con.setAutoCommit(false);
        //调用存储过程
        CallableStatement cst = con.prepareCall("{call procedure_insert(?)}");
        //设置输入参数
        cst.setInt(1,100000);
        //执行存储过程
        cst.execute();
        //提交
        con.commit();
        cst.close();
        con.close();
        long time = System.currentTimeMillis() - start;
        System.out.println(time);//2085
    }


猜你喜欢

转载自blog.csdn.net/xiaoqiu_cr/article/details/79339209