刚开始使用的jdbc集成的,mybatis集成相对非常简单,这里记录一下
一、main方法
Class.forName("com.mysql.jdbc.Driver") ;
Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "admin");
CallableStatement call = con.prepareCall("{call res(?,?)}"); //连接存储过程,第一个是输入参数,第二个输出参数
call.setInt(1, 10);//1是占位符的顺序,10是用户输入的参数
call.registerOutParameter(2, Types.INTEGER);//第二个是输出参数,输出的格式是Integer
call.execute(); //执行
int i=call.getInt(2);//占位符赋值
system.print(i);//输出
二、sql语句
定义参数:in age int,out c int
//注意这里,如果是java里面要用到out参数,那么定义的时候不能加引号,navicat自动生成引号的
主体:
BEGIN
DECLARE v1 int; //定义参数,局部都要使用的变量set v1=age ; //输入参数赋值到局部变量
insert into product(age) values(v1);//语句
select count(*) from product into c;//into c 就是给输出参数赋值
END
eg:后来就不用这么麻烦了,上面是刚学的时候为了区分变量
insert into product(age) values(_age); //_age就是in参数
set _count=1; //_count 是out参数,直接赋值就可以了
select _count; //存储过程测试用,结果集会显示,如果是java用,那么上一步的set就可以得到_count了
三、输出集合 lis
begin
select * from product
end
没有参数
main方法:
String sql="{call lis()}";
CallableStatement call=con.prepareCall(sql);
boolean list=call.execute();
while(list){
//第一个循环是总体的循环
ResultSet rs=call.getResultSet();
while(rs.next()){ //第二个循环是rs的循环
int id=rs.getInt(1);
String name=rs.getString(2);
int age=rs.getInt(3);
//System.out.println(id+"\t"+name+"\t"+age);
}
list =call.getMoreResults();
}