java mysql 面向对象_JAVA操作mysql(如何更加面向对象的操作数据库)

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();

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值