1. 程式人生 > >dao層各種增刪改查封裝成物件方法 以student表 操作

dao層各種增刪改查封裝成物件方法 以student表 操作

/**
 * 
 */
package com.jcuckoo.dao;


import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;


import com.jcuckoo.pojo.Student;
import com.jcuckoo.util.DBOperator;


/**
 * @author jcuckoo
 *
 * 2014-8-12 上午10:48:32
 */
public class StudentDao {
//儲存資訊
public int save(Student student){
String sql="insert into student(stuNo,stuName,stuAge,sex,birthday) " +
"values(seq_student_stuNo.nextval,?,?,?,?)";
Object []params={student.getStuName(),student.getStuAge(),student.getSex(),new java.sql.Date(student.getBirthday().getTime())};
return DBOperator.executeUpdate(sql, params);
}
//修改資訊
public int update(Student student){
String sql="update student set stuName=?,stuAge=?,sex=?,birthday=? where stuNo=?";
Object []params={student.getStuName(),student.getStuAge(),student.getSex(),new java.sql.Date(student.getBirthday().getTime()),student.getStuNo()};
return DBOperator.executeUpdate(sql, params);
}
//刪除資訊
public int delete(int stuNo){
String sql="delete from student where stuNo=?";
Object []params={stuNo};
return DBOperator.executeUpdate(sql, params);
}
//獲取表中資料的行數
public int count(){
int count=0;
String sql="select count(*) countNum from student";
Object []params={};
ResultSet rs=DBOperator.executeQuery(sql, params);
try {
if(rs.next()){
count=rs.getInt("countNum");
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
DBOperator.closeAll();
}
return count;
}
//條件查詢
public int countbycondition(Student student){
int count=0;
List <Object>params=new ArrayList<Object>();


StringBuilder  builder=new StringBuilder("select count(*) countNum  from student where 1=1");
if(student!=null){
if(student.getStuName()!=null){
builder.append(" and stuName like ?");
params.add("%"+student.getStuName()+"%");
}
if(student.getStuAge()!=0){
builder.append(" and stuAge= ?");
params.add(student.getStuAge());
}
}
ResultSet rs=DBOperator.executeQuery(new String(builder), params.toArray());
try {
if(rs.next()){
count=rs.getInt("countNum");
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
DBOperator.closeAll();
}
return count;
}
//獲取表結構
public String[] getColumnNames(){
String[] columnNames=null;
String sql="select * from student";
Object[]params={};
ResultSet rs=DBOperator.executeQuery(sql, params);
try {
ResultSetMetaData rsmd=rs.getMetaData();
columnNames=new String[rsmd.getColumnCount()];
for (int i = 0; i < rsmd.getColumnCount(); i++) {
columnNames[i]=rsmd.getColumnName(i+1);
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
DBOperator.closeAll();
}
return columnNames;
}
//查詢所有的資料,並以陣列方式進行返回
public Object[][] findAllArray(){
String sql="select * from student";
Object[]params={};
return findArrayBySQL(sql,params);
}
//多條模糊查詢
public Object[][] findByCondition(Student student){
List <Object>params=new ArrayList<Object>();
StringBuilder  builder=new StringBuilder("select * from student where 1=1");
if(student!=null){
if(student.getStuName()!=null){
builder.append(" and stuName like ?");
params.add("%"+student.getStuName()+"%");
}
if(student.getStuAge()!=0){
builder.append(" and stuAge= ?");
params.add(student.getStuAge());
}
}
return findArrayBySQL(new String(builder), params.toArray());
}
//分頁查詢 
public Object[][] findArrayByPage(int pageNo,int pageSize){
String sql="select * from (select t.*,rownum rn from (select * from student order by stuNo desc) t where rownum<?)" +
" tmp where tmp.rn>=?";
Object[]params={pageNo*pageSize+1,(pageNo-1)*pageSize+1};
//當期是第2頁,每頁大小5條 
return findArrayBySQL(sql, params);
}
//條件分頁

public Object[][]findArrayByPageSQL(Student student,int pageNo,int pageSize){
List <Object>params=new ArrayList<Object>();
StringBuilder  builder=new StringBuilder("select * from (select t.*,rownum rn from " +
"(select * from student where 1=1  " );

if(student!=null){
if(student.getStuName()!=null){
builder.append(" and stuName like ?");
params.add("%"+student.getStuName()+"%");
}
if(student.getStuAge()!=0){
builder.append(" and stuAge= ?");
params.add(student.getStuAge());
}
}
builder.append("order by stuNo desc) t where rownum<?) tmp where tmp.rn>=?");
params.add(pageNo*pageSize+1);
params.add((pageNo-1)*pageSize+1);

return findArrayBySQL(new String(builder), params.toArray());


}



public Object[][] findArrayBySQL(String sql,Object[]params){
Object[][] students=null;
ResultSet rs=DBOperator.executeQuery(sql, params);
try {
if(rs.next()){
rs.last();
students=new Object[rs.getRow()][];
rs.beforeFirst();
for (int i = 0; rs.next(); i++) {
Object[] student={rs.getInt("stuNo"),rs.getString("stuName"),rs.getInt("stuAge"),
rs.getString("sex"),rs.getDate("birthday")};
students[i]=student;
}
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
DBOperator.closeAll();
}
return students;
}
//查詢所有的資料,並以List集合的方式進行返回
public List<Student> findAll(){
String sql="select * from student";
Object []params={};
return findBySQL(sql,params);
}
//根據ID進行查詢
public Student findById(int stuNo){
String sql="select * from student where stuNo=?";
Object []params={stuNo};
List<Student> students=findBySQL(sql,params);
if(students==null){
return null;
}
return students.get(0);
}
//模糊查詢

//多條模糊查詢
/*public List<Student> findByCondition(Student student){
List <Object>params=new ArrayList<Object>();
StringBuilder  builder=new StringBuilder("select * from student where 1=1");
if(student.getStuName()!=null){
builder.append(" and stuName like ?");
params.add(student.getStuName());
}
if(student.getStuAge()!=0){
builder.append(" and stuAge= ?");
params.add(student.getStuAge());
}

return findBySQL(new String(builder), params.toArray());
}*/
public List<Student> findBySQL(String sql,Object[]params){
List<Student> students=new ArrayList<Student>();
ResultSet rs=DBOperator.executeQuery(sql, params);
try {
while(rs.next()){
Student student=new Student(rs.getInt("stuNo"),rs.getString("stuName"),rs.getInt("stuAge"),
rs.getString("sex"),rs.getDate("birthday"));
students.add(student);
}
} catch (SQLException e) {
e.printStackTrace();
}finally{
DBOperator.closeAll();
}
return students;
}

}