public classConnectToMySQL {privateDBInfo dbInfo;private Connection conn = null;private Statement stmt = null;publicConnectToMySQL(){
dbInfo= newDBInfo();
}publicDBInfo getDbInfo() {returndbInfo;
}public voidsetDbInfo(DBInfo dbInfo) {this.dbInfo =dbInfo;
}public voidconnect() {this.close();this.connectMySQL();
}public synchronized voidclose() {try{if (stmt != null) {
stmt.close();
stmt= null;
}if (conn != null) {
conn.close();
conn= null;
}
}catch(SQLException e) {
e.printStackTrace();
}
}private synchronized voidconnectMySQL() {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 voidstatement() {if (conn == null) {this.connectMySQL();
}try{
stmt=(Statement) conn.createStatement();
}catch(SQLException e) {
e.printStackTrace();
}
}privateResultSet resultSet(String sql) {
ResultSet rs= null;if (stmt == null) {this.statement();
}try{
rs=stmt.executeQuery(sql);
}catch(SQLException e) {
e.printStackTrace();
}returnrs;
}private voidexecuteUpdate(String sql){if (stmt == null) {this.statement();
}try{
stmt.executeUpdate(sql);
}catch(SQLException e) {
System.out.println(sql);
e.printStackTrace();
}
}public Listquery(String sql) {
List list = new ArrayList();
ResultSet rs= this.resultSet(sql);try{
ResultSetMetaData md=rs.getMetaData();int cc =md.getColumnCount();while(rs.next()) {
UserInfo userInfo= newUserInfo();for (int i = 1; i <= cc; i++) {
String cn=md.getColumnName(i);if(cn.equals("id")){
userInfo.setId(rs.getInt("id"));
}else{this.reflectSetInfo(userInfo, this.changeColumnToBean(cn,"set"), rs.getString(cn));
}
}
list.add(userInfo);
}
}catch(SQLException e) {
e.printStackTrace();
}returnlist;
}public voidinsert(String table, UserInfo userInfo){
ResultSet rs= this.resultSet("select * from "+table+" limit 0,1");
ResultSetMetaData md;
String sql= "";try{
md=rs.getMetaData();int cc =md.getColumnCount();
String insertColumn= "";
String insertValue= "";for (int i = 1; i <= cc; i++) {
String cn=md.getColumnName(i);if(!cn.equals("id")){
String gValue= this.reflectGetInfo(userInfo, this.changeColumnToBean(cn,"get"));if("".equals(insertColumn)){
insertColumn+=cn;
insertValue+= "\""+gValue+"\"";
}else{
insertColumn+= ","+cn;
insertValue+= ","+"\""+gValue+"\"";
}
}
}
sql= "insert into "+table+" ("+insertColumn+") values ("+insertValue+")";this.executeUpdate(sql);
}catch(SQLException e) {
e.printStackTrace();
}
}private voidreflectSetInfo(UserInfo userInfo, String methodName, String parameter){try{
Method method= userInfo.getClass().getMethod(methodName, String.class);
method.invoke(userInfo, parameter);
}catch(SecurityException e) {
e.printStackTrace();
}catch(NoSuchMethodException e) {
e.printStackTrace();
}catch(IllegalArgumentException e) {
e.printStackTrace();
}catch(IllegalAccessException e) {
e.printStackTrace();
}catch(InvocationTargetException e) {
e.printStackTrace();
}
}privateString reflectGetInfo(UserInfo userInfo, String methodName){
String value= null;try{
Method method=userInfo.getClass().getMethod(methodName);
Object returnValue=method.invoke(userInfo);if(returnValue!=null){
value=returnValue.toString();
}else{
value= "";
}
}catch(SecurityException e) {
e.printStackTrace();
}catch(NoSuchMethodException e) {
e.printStackTrace();
}catch(IllegalArgumentException e) {
e.printStackTrace();
}catch(IllegalAccessException e) {
e.printStackTrace();
}catch(InvocationTargetException e) {
e.printStackTrace();
}returnvalue;
}privateString columnToBean(String column){if(column.contains("_")){int index = column.indexOf("_");
String beanName= column.substring(0, index)+column.substring(index+1, index+2).toUpperCase()+column.substring(index+2, column.length());returnbeanName;
}returncolumn;
}privateString changeColumnToBean(String column, String ext){
String[] col= column.split("_");for (int i = 0; i < col.length; i++) {
column= this.columnToBean(column);
}
column=column.replaceFirst(column.substring(0, 1), column.substring(0, 1).toUpperCase());
column= ext+column;returncolumn;
}public static void main(String[] args) throwsSQLException {
ConnectToMySQL c= newConnectToMySQL();
c.connect();
List list = c.query("select * from user_info");
c.insert("user_info", list.get(0));
c.close();
}
}