既然谈到面向对象,所以,先把连接信息给搞个对象出来:
public class DBInfo { private String driver; private String host; private String port; private String user; private String pwd; private String dataBase; public DBInfo(){ this.driver = "com.mysql.jdbc.Driver"; this.host = ""; this.port = ""; this.user = ""; this.pwd = ""; this.dataBase = ""; } public String getDriver() { return driver; } public void setDriver(String driver) { this.driver = driver; } public String getHost() { return host; } public void setHost(String host) { this.host = host; } public String getDataBase() { return dataBase; } public void setDataBase(String dataBase) { this.dataBase = dataBase; } public String getPort() { return port; } public void setPort(String port) { this.port = port; } public String getUser() { return user; } public void setUser(String user) { this.user = user; } public String getPwd() { return pwd; } public void setPwd(String pwd) { this.pwd = pwd; } }
既然是操作数据库,我们就把数据库的字段给对象化一下,也就是持久化:在定义变量时,我们搞个约定,比如,数据库字段名为:test_login_name,则定义变量时为:testLoginName.
public class UserInfo { private int id; private String testName; private String testAge; private String testHeight; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getTestName() { return testName; } public void setTestName(String testName) { this.testName = testName; } public String getTestAge() { return testAge; } public void setTestAge(String testAge) { this.testAge = testAge; } public String getTestHeight() { return testHeight; } public void setTestHeight(String testHeight) { this.testHeight = testHeight; } }
好,现在有了javabean,有了数据库连接的对象了,再加一个枚举来保存数据库与bean之间的映射关系:
public enum TableBean { USER_INFO("com.test.bean.UserInfo"); private String value; private TableBean(String value){ this.value = value; } public String getValue(){ return value; } @Override public String toString() { return value; } public static void main(String[] args){ System.out.println(TableBean.USER_INFO); } }
再加一个保存ResultSetMetaData信息的类:
public class MetaData { public static MapmetaData = new HashMap (); }
余下就是操作数据库了:
public class ConnectToMySQL { private DBInfo dbInfo; private Connection conn = null; private Statement stmt = null; public ConnectToMySQL(){ dbInfo = new DBInfo(); } public DBInfo getDbInfo() { return dbInfo; } public void setDbInfo(DBInfo dbInfo) { this.dbInfo = dbInfo; } public void connect() { this.close(); this.connectMySQL(); } public synchronized void close() { try { if (stmt != null) { stmt.close(); stmt = null; } if (conn != null) { conn.close(); conn = null; } } catch (SQLException e) { e.printStackTrace(); } } private synchronized void connectMySQL() { try { Class.forName(dbInfo.getDriver()).newInstance(); conn = (Connection) DriverManager.getConnection("jdbc:mysql://" + dbInfo.getHost() + "/" + dbInfo.getDataBase() +"?useUnicode=true&characterEncoding=utf-8", dbInfo.getUser(),dbInfo.getPwd()); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (ClassNotFoundException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } } private void statement() { if (conn == null) { this.connectMySQL(); } try { stmt = (Statement) conn.createStatement(); } catch (SQLException e) { e.printStackTrace(); } } private ResultSet resultSet(String sql) { ResultSet rs = null; if (stmt == null) { this.statement(); } try { rs = stmt.executeQuery(sql); } catch (SQLException e) { e.printStackTrace(); } return rs; } private void executeUpdate(String sql){ if (stmt == null) { this.statement(); } try { stmt.executeUpdate(sql); } catch (SQLException e) { System.out.println(sql); e.printStackTrace(); } } public List
仔细看看吧,query出来就是对象的集合,insert时,就是表名与对象就行了,至于update与delete,大家自已扩展吧!
如果把这个摸清楚,spring操作mysql数据库的原理,你也就差不多了!