包装类
- boolean -》 Boolean
- byte -》 Byte
- short -》 Short
- long -》 Long
- float -》 Float
- double-》 Double
- int -》 integer
- char-》Character
音乐管理系统之分页
- 如何获取页数?
首先,获得记录数,然后用Math.ceil向上取整记录数/页数,页数要有小数,否则结果会出错。
int count = musicDao.getCount(); //返回记录数
pageBean.setTotalCount(count); //设置总记录数
double ceil = Math.ceil(count/5.0); //返回页数,带小数
int totalPage = (int) ceil; //转为整数并赋给totalPage
- 查询指定页
select * from music order by id limit 0,5 //从0开始查询5条记录,第一页
select * from music order by id limit 5,5 //从5开始查询5条记录,第二页
……
select * from music order by id limit ?,?
可以看出只要修改第一个问号就可以决定从那行开始,而第二个问好则决定了,一页中有多少条记录。
那么查询第n页即第一个页即n-1*每页记录数即可。
包装
public List<Music> findAll(int start,int end) throws SQLException {
List<Music> musics= new ArrayList<>();
Connection connection = DBUtil.getConnection();
String sql="select * from music order by id limit ?,?";
PreparedStatement statement =connection.prepareStatement(sql);
statement.setInt(1,start);
statement.setInt(2,end);
ResultSet resultSet = statement.executeQuery();
while(resultSet.next()){
int id=resultSet.getInt(1);
String musicname=resultSet.getString(2);
String author = resultSet.getString(3);
Music music =new Music();
music.setId(id);
music.setMusicname(musicname);
music.setAuthor(author);
musics.add(music);
}
DBUtil.closeAll(resultSet,statement,connection);
return musics;
}
调用
xxxx.findAll((i-1)*5,5);
上一页,下一页
封装
public List<Music> getPage(int currentPage,int totalPage,MusicDao musicDao) throws SQLException {
List<Music> musics=null;
if(currentPage>totalPage){
System.out.println("超出范围");
}else {
musics=musicDao.findAll((currentPage-1)*5,5);
System.out.println(musics);
}
return musics;
}
调用
System.out.println("下一步还要做什么:\t1.上一页 \t2.下一页\t3.退出");
int i1 = input.nextInt();
switch(i1){
case 1:
if(i==1){ //如果是第一页则获取第一页,否则获取上一页
getPage(1,totalPage,musicDao);
}else{
getPage(i-1,totalPage,musicDao);
}break;
case 2:
if(i==totalPage){ //如果是最后一夜则获取最后一页,否则获取下一页
getPage(totalPage,totalPage,musicDao);
}else{
getPage(i+1,totalPage,musicDao);
}break;
case 3:
System.exit(0);
break;
}
break;