我是靠谱客的博主 俊秀月饼,最近开发中收集的这篇文章主要介绍jdbc_分页查询,大数据,批处理,存储过程,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

分页查询

实际上就是每次查询一部分记录,并显示:

select * from table_name limit StartIndex, PageSize;——>StartIndex:从第几个记录开始查。PageSize:每次查多少记录

//该对象封装了分页查询的配置信息,用于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 <= 10){
startindex = 1;
endindex = this.pagesize;
}else{
startindex = this.currentpage - 4;
endindex = this.currentpage + 5;
//
如果startindex小于1,就从0开始,如果endindex大于总页数,就用总页数作为结束
if(startindex < 1){
startindex = 1;
endindex = 10;
}
if(endindex > this.pagesize){
startindex = this.pagesize - 9;
endindex = this.pagesize;
}
}
//
更具两个索引值定义数组pagebar
this.pagebar = new int[endindex-startindex+1];
//
为数组赋值
for (int i = 0; i < pagebar.length; i++) {
this.pagebar[i] = startindex++;
}
return pagebar;
}
}

//
在dao层提供一个分页查询的方法,将索引的初始位置和每页记录数传入
public QueryResult pageQuery(int startIndex, int pageSize){
Connection conn = null;
PreparedStatement st = null;
ResultSet rs = null;
try {
//
获取数据库连接
conn = JdbcUtils.getConnection();
//
提供分页查询的sql语句
String sql = "select * from customer limit ?,?";
//
预编译sql语句,获得preparedstatement对象
st = conn.prepareStatement(sql);
//
为占位符'?' 赋值
st.setInt(1, startIndex);
st.setInt(2, pageSize);
//
执行sql语句,获得结果集
rs = st.executeQuery();
//
将结果封装到QueryResult对象中
//在service层,将该对象封装到QueryBean中,传给jsp用于显示
...
} catch (Exception e) {
}finally{
JdbcUtils.release(conn, st, rs);
}
}

大数据

用处:程序需要将大文本或二进制数据保存到数据库中,一般在实际开发中不直接使用数据库存储大文本大数据,因为在存取操作的时候,会占用连接大量的时间。
大数据(Large Objects):
clob:存储大文本,text文件
blob:存储二进制数据,如图像,音频、二进制文

mysql中用Text代替clob:

Text:Tinytext,text,mediumtext,longtext

blob:tinyblob,blob,mediumblob,longblob

大文本(Text){

存:

PreparedStatement的setCharacterStream( 1, reader, length)方法,填充占位符

//
定义sql语句
String sql = "insert into testclob(id,resum) values(?,?)";
//
预编译sql
PreparedStatement st = conn.prepareStatement(sql);
//
赋值占位符
st.setString(1, "1");
//
不建议用类装载器读取文件,因为文本内容可能太大,不适合读取至内存中
File file = new File("src/1.txt");
Reader reader = new FileReader(file);
st.setCharacterStream(2, reader, file.length());//reader:一个读取文本的流 length:文本的大小
// 

读:

reader = resultSet.getCharacterStream(i);

reader = resultSet.get Clob(i).getCharacterStream();

String s = resultSet.getSting(i);

//
定义sql语句
String sql = "select * from testclob where id= '1'";
//
预编译sql
PreparedStatement st = conn.prepareStatement(sql);
//
无占位符直接执行sql
ResultSet rs = st.executeQuery();
//
通过结果集获取大数据文件
while(rs.next()){
String id = rs.getString(1);
//
将数据库的文本数据放在一个流中,供用户使用
Reader reader = rs.getCharacterStream(2);
//
读取数据
Writer writer = new FileWriter("src/2.txt");
...
}

二进制(Blob){

 

存:

 

PreparedStatement的setBinaryStream(i, inputStream, length)方法,填充占位符

//
定义sql语句
String sql = "insert into testblob(id,image) values(?,?)";
//
预编译sql
PreparedStatement st = conn.prepareStatement(sql);
//
赋值占位符
st.setString(1, "1");
//
不建议用类装载器读取文件,因为文本内容可能太大,不适合读取至内存中
File file = new File("src/1.jpg");
InputStream inputStream = new FileInputStream(file);
st.setBinaryStream(2, inputStream, file.length());//inputStream:一个读取文本的流 length:文本的大小
//
这是long型的,使用1.6一下的jdk必须将其转成int

读:查看数据不能直接通过命令行程序读取

inputStream = resultSet.getBinaryStream(i);

inputStream = resultSet.getBlob(i).getBinaryStream()

//
定义sql语句
String sql = "select * from testblob where id= '1'";
//
预编译sql
PreparedStatement st = conn.prepareStatement(sql);
//
无占位符直接执行sql
ResultSet rs = st.executeQuery();
//
通过结果集获取大数据文件
while(rs.next()){
String id = rs.getString(1);
//
将数据库的文本数据放在一个流中,供用户使用
InputStream in = rs.getBinaryStream(2);
//
存储数据
OutputStream out = new FileOutputStream("c:\2.jpg");


最后

以上就是俊秀月饼为你收集整理的jdbc_分页查询,大数据,批处理,存储过程的全部内容,希望文章能够帮你解决jdbc_分页查询,大数据,批处理,存储过程所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部