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(i
2:构造一个操作数据库的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;
}
}
如有疑问请留言或者到本站社区交流讨论,大家共同进步,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!