• 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
        }
    


    欢迎关注我的公众号:小秋的博客 CSDN博客:https://blog.csdn.net/xiaoqiu_cr github:https://github.com/crr121 联系邮箱:rongchen633@gmail.com 有什么问题可以给我留言噢~
  • 相关阅读:
    实用的设计模式【一】---类设计法则
    vimium 使用心得
    记一次给部门做分享的心得
    centos7安装docker和docker compose【转】
    docker 部署 jenkins
    centos删除docker0虚拟网卡
    CentOS7查看和关闭防火墙
    .Net Core Autofac实现依赖注入
    【转】Docker基础
    【转】使用Docker+Jenkins自动构建部署
  • 原文地址:https://www.cnblogs.com/flyingcr/p/10326904.html
Copyright © 2020-2023  润新知