java连接mysql底层封装的示例分析
小编给大家分享一下java连接mysql底层封装的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
连接数据库
packagecom.dao.db;importjava.sql.Connection;importjava.sql.SQLException;/***数据库连接层MYSQL*@authorAdministrator**/publicclassDBConnection{/***连接数据库*@return*/publicstaticConnectiongetDBConnection(){//1.注册驱动try{Class.forName("com.mysql.jdbc.Driver");}catch(ClassNotFoundExceptione){//TODOAuto-generatedcatchblocke.printStackTrace();}//获取数据库的连接try{Connectionconn=java.sql.DriverManager.getConnection("jdbc:mysql://localhost/mysql?useUnicode=true&characterEncoding=utf-8","root","root");returnconn;}catch(SQLExceptione1){e1.printStackTrace();}returnnull;}}
数据层封装
packagecom.dao.db;importjava.sql.Connection;importjava.sql.PreparedStatement;importjava.sql.ResultSet;importjava.sql.ResultSetMetaData;importjava.sql.SQLException;importjava.sql.Types;importjava.util.ArrayList;importjava.util.HashMap;/***MYSQL数据库底层封装*@authorAdministrator**/publicclassDBManager{privatePreparedStatementpstmt;privateConnectionconn;privateResultSetrs;/***打开数据库*/publicDBManager(){conn=DBConnection.getDBConnection();}/***执行修改添加操作*@paramcoulmn*@paramtype*@paramsql*@return*@throwsSQLException*/publicbooleanupdateOrAdd(String[]coulmn,int[]type,Stringsql)throwsSQLException{if(!setPstmtParam(coulmn,type,sql))returnfalse;booleanflag=pstmt.executeUpdate()>0?true:false;closeDB();returnflag;}/***获取查询结果集*@paramcoulmn*@paramtype*@paramsql*@throwsSQLException*/publicDataTablegetResultData(String[]coulmn,int[]type,Stringsql)throwsSQLException{DataTabledt=newDataTable();ArrayList<HashMap<String,String>>list=newArrayList<HashMap<String,String>>();if(!setPstmtParam(coulmn,type,sql))returnnull;rs=pstmt.executeQuery();ResultSetMetaDatarsmd=rs.getMetaData();//取数据库的列名intnumberOfColumns=rsmd.getColumnCount();while(rs.next()){HashMap<String,String>rsTree=newHashMap<String,String>();for(intr=1;r<numberOfColumns+1;r++){rsTree.put(rsmd.getColumnName(r),rs.getObject(r).toString());}list.add(rsTree);}closeDB();dt.setDataTable(list);returndt;}/***参数设置*@paramcoulmn*@paramtype*@throwsSQLException*@throwsNumberFormatException*/privatebooleansetPstmtParam(String[]coulmn,int[]type,Stringsql)throwsNumberFormatException,SQLException{if(sql==null)returnfalse;pstmt=conn.prepareStatement(sql);if(coulmn!=null&&type!=null&&coulmn.length!=0&&type.length!=0){for(inti=0;i<type.length;i++){switch(type[i]){caseTypes.INTEGER:pstmt.setInt(i+1,Integer.parseInt(coulmn[i]));break;caseTypes.BOOLEAN:pstmt.setBoolean(i+1,Boolean.parseBoolean(coulmn[i]));break;caseTypes.CHAR:pstmt.setString(i+1,coulmn[i]);break;caseTypes.DOUBLE:pstmt.setDouble(i+1,Double.parseDouble(coulmn[i]));break;caseTypes.FLOAT:pstmt.setFloat(i+1,Float.parseFloat(coulmn[i]));break;default:break;}}}returntrue;}/***关闭数据库*@throwsSQLException*/privatevoidcloseDB()throwsSQLException{if(rs!=null){rs.close();}if(pstmt!=null){pstmt.close();}if(conn!=null){conn.close();}}}
数据集封装
packagecom.dao.db;importjava.util.ArrayList;importjava.util.HashMap;importjava.util.Iterator;importjava.util.Map;importjava.util.Set;/***数据集封装*@authorAdministrator**/publicclassDataTable{publicString[]column;//列字段publicString[][]row;//行值publicintrowCount=0;//行数publicintcolCoun=0;//列数publicDataTable(){super();}publicDataTable(String[]column,String[][]row,introwCount,intcolCoun){super();this.column=column;this.row=row;this.rowCount=rowCount;this.colCoun=colCoun;}publicvoidsetDataTable(ArrayList<HashMap<String,String>>list){rowCount=list.size();colCoun=list.get(0).size();column=newString[colCoun];row=newString[rowCount][colCoun];for(inti=0;i<rowCount;i++){Set<Map.Entry<String,String>>set=list.get(i).entrySet();intj=0;for(Iterator<Map.Entry<String,String>>it=set.iterator();it.hasNext();){Map.Entry<String,String>entry=(Map.Entry<String,String>)it.next();row[i][j]=entry.getValue();if(i==rowCount-1){column[j]=entry.getKey();}j++;}}}publicString[]getColumn(){returncolumn;}publicvoidsetColumn(String[]column){this.column=column;}publicString[][]getRow(){returnrow;}publicvoidsetRow(String[][]row){this.row=row;}publicintgetRowCount(){returnrowCount;}publicvoidsetRowCount(introwCount){this.rowCount=rowCount;}publicintgetColCoun(){returncolCoun;}publicvoidsetColCoun(intcolCoun){this.colCoun=colCoun;}}
测试Demo
packagecom.bussiness.test;importjava.sql.SQLException;importjava.sql.Types;importcom.dao.db.DBManager;importcom.dao.db.DataTable;publicclassTestBusIness{staticStringsearchSql="select*fromscore";staticStringinsertSql="insertintoscore(name,age,score)values(?,?,?)";staticStringdeleteSql="deletefromscorewhereid=?";staticStringupdateSql="updatescoresetname=?whereid=?";publicstaticvoidmain(String[]args){intsertData();searchData();}privatestaticvoidintsertData(){DBManagerdm=newDBManager();String[]coulmn=newString[]{"wyf2","23","89.5"};int[]type=newint[]{Types.CHAR,Types.INTEGER,Types.DOUBLE};try{booleanflag=dm.updateOrAdd(coulmn,type,insertSql);if(flag)System.out.println("插入成功");}catch(SQLExceptione){e.printStackTrace();}}privatestaticvoidsearchData(){DBManagerdm=newDBManager();String[]coulmn=null;int[]type=null;try{DataTabledt=dm.getResultData(coulmn,type,searchSql);if(dt!=null&&dt.getRowCount()>0){for(inti=0;i<dt.getRowCount();i++){for(intj=0;j<dt.getColCoun();j++)System.out.printf(dt.getRow()[i][j]+"\t");System.out.println();}}elseSystem.out.println("查询失败");}catch(SQLExceptione){e.printStackTrace();}}}
以上是“java连接mysql底层封装的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。