您好,欢迎访问一九零五行业门户网

java自学之路-----jdbc_分页查询,大数据,批处理,存储过程

分页查询{ 实际上就是每次查询一部分记录,并显示: select * from table_name limit startindex, pagesize;startindex:从第几个记录开始查。pagesize:每次查多少记录 分页查询在javaweb中的案例: //该对象封装了分页查询的配置信息,用于dao层public cla
分页查询{实际上就是每次查询一部分记录,并显示:
select * from table_name limit startindex, pagesize;——>startindex:从第几个记录开始查。pagesize:每次查多少记录
分页查询在javaweb中的案例:
//该对象封装了分页查询的配置信息,用于dao层public class queryinfo { private int startindex;//查询的每页在数据库的起始位置,该值可以根据其他参数计算出,不需要set属性 private int pagesize = 5;//查询的每页记录数,赋一个初始值 private int querypage = 1;//查询第几页,赋一个初始值 //提供get,set方法,便于设置,获取属性值 public int getstartindex() { this.startindex = (this.querypage-1) + 1; return startindex; } public int getpagesize() { return pagesize; } public void setpagesize(int pagesize) { this.pagesize = pagesize; } public int getquerypage() { return querypage; } public void setquerypage(int querypage) { this.querypage = querypage; }}
//该类封装了分页查询的结果信息,作为中间值,用于给querybean提供信息public class queryresult { private list list;//封装了查询后某页的所有记录 private int totalrecord;//总记录数,用于给用户提供交互信息// 提供属性的get,set方法, public list getlist() { return list; } public void setlist(list list) { this.list = list; } public int gettotalrecord() { return totalrecord; } public void settotalrecord(int totalrecord) { this.totalrecord = totalrecord; }}
//该类封装了分页查询的所有信息,用于与用户交互,用于jsp页面,web层public class querybean { private list list;//封装查询的所有记录信息 private int totalrecord;//告诉用户总共有多少记录,可以从queryresult对象获取 private int pagesize;//告诉用户每页有多少记录,从queryinfo对象获取 private int totalpage;//告诉用户一共有多少页,可以通过totalrecord和pagesize计算 private int currentpage;//告诉用户当前查看的是第几页,从queryinfo对象获取 private int previouspage;//上一页是第几页,通过当前页计算出 private int nextpage;//下一页是第几页,通过当前页计算出 private int[] pagebar;//记录页码条,通过currentpage和pagesize计算出的一个数组// 提供所有属性的get,set方法 public int gettotalrecord() { return totalrecord; } public void settotalrecord(int totalrecord) { this.totalrecord = totalrecord; } public int getpagesize() { return pagesize; } public void setpagesize(int pagesize) { this.pagesize = pagesize; } public int gettotalpage() {// 计算总页数,21条,每页5条,有5页。20条,每页5条,有4页。 if(this.totalrecord%this.pagesize == 0){ this.totalpage = this.totalrecord / this.pagesize; }else{ this.totalpage = this.totalrecord / this.pagesize + 1; } return totalpage; } public int getcurrentpage() { return currentpage; } public void setcurrentpage(int currentpage) { this.currentpage = currentpage; } public int getpreviouspage() { this.previouspage = this.currentpage - 1;// 如果当前页小于等于0,就指向第一页 if(this.previouspage<=0){ this.previouspage = 1; } return previouspage; } public int getnextpage() { this.previouspage = this.currentpage - 1;// 如果当前页小于等于0,就指向最后一页 if(this.nextpage<=0){ this.nextpage = 1; } return nextpage; } public int[] getpagebar() { int startindex; int endindex;// 如果总页数小于10 if(this.pagesize 清除批处理命令
// 定义sql语句 string sql1 = insert into testbatch(id,name) values('1', 'aaa'); string sql2 = update testbatch set name = 'bbb' where id = '1';// 获取statement对象 statement st = conn.createstatement();// 将sql语句存到对象中,实际是将sql语句存放在内部的list对象中 st.addbatch(sql1); st.addbatch(sql2);// 执行sql int result[] = st.executebatch();//该数组一次存放着每一条sql语句影响数据库数据的行数// 清除 st.clearbatch();
1.可以发送不同的sql语句 2.性能不够
}
第二种实现方式{
// 定义sql语句 string sql = insert into testbatch(id,name) values(?,?);// 获取preparedstatement对象 preparedstatement st = conn.preparestatement(sql);//// 替换占位符,第一个sql,存到list中// st.setstring(1, 1);// st.setstring(2, aaa);// st.addbatch();//// 替换占位符,第二个sql,存到list中// st.setstring(1, 2);// st.setstring(2, bbb);// st.addbatch(); //例: for(int i=0; i<10; i++){ st.setstring(1, +i); st.setstring(2, aa+i); st.addbatch(); }// 执行 st.executebatch();// 清除 st.clearbatch();
1.只能发送相同sql语句,比较适合作为批量插入或批量更新 2.预先编译,提升性能
}
//如果批处理的语句过多,可能造成内存溢出:使用下列处理方法 for(int i=0; i<100000; i++){ st.setstring(1, +i); st.setstring(2, aa+i); st.addbatch();// 每次处理1000条sql语句 if(i%1000==0){ st.executebatch(); st.clearbatch(); } }// 以防sql语句未执行 st.executebatch();// 清除 st.clearbatch();
}
存储过程{该对象作用:
1.相当于数据库的一个方法,在数据库中处理数据,然后再java程序中直接获取数据
2.没有该对象就需要使用jdbc调用来处理数据
3.一般都用在金融证券领域,都内部写了存储过程,程序员直接调用。
4.存储过程中一般在参数中指定了输入数据,和输出数据
用法:
1.先在数据库中注册一个存储过程
2.在java程序中使用
// 获取连接,通过数据库的方法,先得到一个数据,处理后再输出 connection conn = jdbcutils.getconnection();// 用存储过程名来获取存储过程的对象 callablestatement st = conn.preparecall({call demosp(?,?)});//通过demosp这个名字调用存储过程// 替换占位符 //输入的数据 st.setstring(1, aaa); //输出的数据,提供输出的类型 st.registeroutparameter(2, types.varchar);//types封装了数据库中常用类型 st.execute();// 通过第二个?获得数据,并且它已经指定了数据类型 st.getstring(2);
问题:1.只知道存储过程在java程序中的输入,输出关系。不知道会对数据库造成怎样的影响 2.不知道怎么编写存储过程}
其它类似信息

推荐信息