java 使用策略模式操作JDBC数据库
java使用策略模式操作JDBC数据库
1:构造一个操作数据库的工具类,可以获得连接和释放连接
publicclassDBUtil{ privatestaticConnectionconn=null; static{//静态初始块 try{ Class.forName("com.mysql.jdbc.Driver"); conn=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/test","root","064319");//初始化获取连接 }catch(ClassNotFoundExceptione){ e.printStackTrace(); }catch(SQLExceptione){ e.printStackTrace(); } } /** *释放连接 *@paramrs *@parampsmt *@paramconn *@throwsSQLException */ publicstaticvoidcloseAll(ResultSetrs,PreparedStatementpsmt,Connectionconn)throwsSQLException{ if(rs!=null){ rs.close(); } if(psmt!=null){ psmt.close(); } if(conn!=null){ conn.close(); } } /** *获取连接 *@return */ publicstaticConnectiongetConnection(){ returnconn; } /** *根据表的名字来获得表的列信息 *@paramtableName */ publicstaticvoidgetTableColumnInfoByTableName(StringtableName){ Connectionconn=getConnection(); ResultSetrs=null; PreparedStatementpsmt=null; Stringsql="select*from"+tableName; try{ psmt=conn.prepareStatement(sql); rs=psmt.executeQuery(); ResultSetMetaDataresultSetMetaData=rs.getMetaData(); for(inti=1;i<=resultSetMetaData.getColumnCount();i++){ System.out.println(resultSetMetaData.getColumnName(i)); } }catch(SQLExceptione){ e.printStackTrace(); }finally{ try{ closeAll(rs,psmt,conn); }catch(SQLExceptione){ e.printStackTrace(); } } } /** *根据表的名字来获得表的信息 *@paramtableName */ publicstaticvoidgetTableInfoByTableName(StringtableName){ Connectionconn=getConnection(); PreparedStatementpsmt=null; ResultSetrs=null; Stringsql="select*from"+tableName; try{ psmt=conn.prepareStatement(sql); rs=psmt.executeQuery(); while(rs.next()){ ResultSetMetaDataresultSetMetaData=rs.getMetaData(); for(inti=1;i<=resultSetMetaData.getColumnCount();i++){ if(i2:构造一个操作数据库的BaseDao类
publicclassBaseDao{ /** *根据一些参数来保存相应的对象 *@paramsql要执行的sql语句 *@paramparams为sql语句中相应的参数赋值 *@return */ protectedbooleansaveOrUpdate(Stringsql,Object[]params){ Connectionconn=null; PreparedStatementpsmt=null; booleanflag=false; conn=DBUtil.getConnection(); if(conn!=null){ try{ psmt=conn.prepareStatement(sql); for(inti=1;i<=params.length;i++){ psmt.setObject(i,params[i-1]); } if(psmt.executeUpdate()>0){ flag=true; } }catch(SQLExceptione){ e.printStackTrace(); }finally{ try{ DBUtil.closeAll(null,psmt,conn); }catch(SQLExceptione){ e.printStackTrace(); } } } returnflag; } /** *根据一定的参数获得某个具体的对象 *@paramsql要执行的sql语句 *@paramparams为sql语句中相应的参数赋值 *@return */ publicObjectqueryForObject(Stringsql,Object[]params,RowMapForObjectrowMapForObject){ Connectionconn=null; PreparedStatementpsmt=null; conn=DBUtil.getConnection(); Objectobj=null; ResultSetrs=null; if(conn!=null){ try{ psmt=conn.prepareStatement(sql); if(params!=null&¶ms.length>0){ for(inti=1;i<=params.length;i++){ psmt.setObject(i,params[i-1]); } } rs=psmt.executeQuery(); obj=rowMapForObject.rowMapForObject(rs); }catch(SQLExceptione){ e.printStackTrace(); }finally{ try{ DBUtil.closeAll(null,psmt,conn); }catch(SQLExceptione){ e.printStackTrace(); } } } returnobj; } /** *根据相应的参数获得查询的结果集 *@paramsql *@paramparams *@return */ publicListqueryForList(Stringsql,Object[]params,RowMapForListrowMapForList){ Connectionconn=null; PreparedStatementpsmt=null; conn=DBUtil.getConnection(); Listlist=null; ResultSetrs=null; if(conn!=null){ try{ psmt=conn.prepareStatement(sql); if(params!=null&¶ms.length>0){ for(inti=1;i<=params.length;i++){ psmt.setObject(i,params[i-1]); } } rs=psmt.executeQuery(sql); list=newArrayList(); list=rowMapForList.rowMapForList(rs); }catch(SQLExceptione){ e.printStackTrace(); }finally{ try{ DBUtil.closeAll(null,psmt,conn); }catch(SQLExceptione){ e.printStackTrace(); } } } returnlist; } }3:新建一个StudentDao类,该类继承自BaseDao,实现对Student的管理
publicclassStudentDaoextendsBaseDao{ /** *保存一个Student的信息 */ publicbooleansaveStudent(Studentstudent){ Stringsql="insertintot_student(name,age)values(?,?)"; Object[]params=newObject[]{student.getName(),student.getAge()}; returnsuper.saveOrUpdate(sql,params); } /** *根据id获得一个Student的信息 *@paramid *@return */ publicStudentgetStudentById(longid){ Stringsql="select*fromt_studentwhereid=?"; Object[]params=newObject[]{id}; return(Student)super.queryForObject(sql,params,newRowMapForObject(){ publicObjectrowMapForObject(ResultSetrs){ Studentstudent=null; try{ if(rs!=null&&rs.next()){ student=newStudent(); student.setAge(rs.getInt(Student.AGE)); student.setId(rs.getLong(Student.ID)); student.setName(rs.getString(Student.NAME)); } }catch(SQLExceptione){ e.printStackTrace(); } returnstudent; } }); } /** *获得所有Student的信息 *@return */ publicListgetStudentAll(){ Stringsql="select*fromt_student"; Listlist=super.queryForList(sql,null,newRowMapForList(){ @Override publicListrowMapForList(ResultSetrs){ Listlist=null; try{ if(rs!=null){ list=newArrayList(); while(rs.next()){ Studentstudent=newStudent(); student.setId(rs.getLong("id")); student.setAge(rs.getInt("age")); student.setName(rs.getString("name")); list.add(student); } } }catch(SQLExceptione){ e.printStackTrace(); } returnlist; } }); returnlist; } }如有疑问请留言或者到本站社区交流讨论,大家共同进步,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!