MySQL之-JDBC實(shí)現(xiàn)Master Slave的示例代碼

今天,給大家?guī)?lái)一段jdbc實(shí)現(xiàn)master slave的代碼,好了,不多說(shuō)了,我們直接上代碼吧。

具體代碼如下:

package?com.lyz.test;    import?java.beans.PropertyVetoException;  import?java.sql.Connection;  import?java.sql.ResultSet;  import?java.sql.SQLException;    import?com.mchange.v2.c3p0.ComboPooledDataSource;    /**  ?*?Mysql?JDBC?實(shí)現(xiàn)Master?Slave  ?*?  ?*?@author?liuyazhuang  ?*?@datetime?2016-11-17  ?*?  ?*/  public?class?ReplicationDriverTest?{  	private?static?final?String?URL?=?"jdbc:mysql://127.0.0.1:3306/test1?useUnicode=true&characterEncoding=utf8";  	private?static?final?String?DRIVER?=?"com.mysql.jdbc.Driver";  	/*?Master?Slave?*/  	private?static?final?String?replicationURL?=?"jdbc:mysql:replication://localhost:3306,10.2.15.123:3306/test?useUnicode=true&characterEncoding=utf8";  	/*?負(fù)載平衡?*/  	private?static?final?String?loadBalanceURL?=?"jdbc:mysql:loadbalance://localhost:3306,10.2.15.123:3306/test?useUnicode=true&characterEncoding=utf8";  	private?static?final?String?REPLICATION_DRIVER?=?"com.mysql.jdbc.ReplicationDriver";    	public?static?void?main(String[]?args)?throws?SQLException?{  		//?oneDB();  		//?replicationDB(URL);  		//?replicationDB(replicationURL);  		replicationDB(loadBalanceURL);    	}    	public?static?void?replicationDB(String?url)?throws?SQLException?{  		ComboPooledDataSource?dataSource?=?new?ComboPooledDataSource();  		try?{  			dataSource.setDriverClass(REPLICATION_DRIVER);  		}?catch?(PropertyVetoException?e1)?{  			e1.printStackTrace();  		}  		dataSource.setJdbcUrl(url);  		dataSource.setMaxPoolSize(10);  		dataSource.setMinPoolSize(10);  		dataSource.setUser("kevin");  		dataSource.setPassword("123456");  		dataSource.setCheckoutTimeout(1000);  		dataSource.setDataSourceName("datasource");  		dataSource.setInitialPoolSize(10);  		try?{  			Connection?connection?=?dataSource.getConnection();  			connection.setReadOnly(true);//設(shè)置為只讀,代理類(lèi)將會(huì)獲取Slave數(shù)據(jù)庫(kù)連接,否則設(shè)置Master連接  			java.sql.PreparedStatement?pStatement_?=?connection.prepareStatement("SELECT?user_id,?username,?PASSWORD,?email??FROM?account_0?LIMIT?0,3;");  			ResultSet?rs?=?pStatement_.executeQuery();  			while?(rs.next())?{  				System.out.println(rs.getInt(1)?+?"t"?+?rs.getString(2)?+?"t"?+?rs.getString(3)?+?"t"?+?rs.getString(4));  			}  			rs.close();  			pStatement_.close();  			connection.close();  		}?catch?(SQLException?e)?{  			e.printStackTrace();  		}  		Connection?connection?=?dataSource.getConnection();  		connection.setReadOnly(false);//設(shè)置為只讀,代理類(lèi)將會(huì)獲取Slave數(shù)據(jù)庫(kù)連接,否則設(shè)置Master連接  		java.sql.PreparedStatement?pStatement_?=?connection.prepareStatement("UPDATE?account_0?SET??username?=?'kevin'?,PASSWORD?=?'password'?,email?=?'xxxx'?WHERE?user_id?=?'1001'?;");  		int?row?=?pStatement_.executeUpdate();  		System.out.println(row);  		pStatement_.close();  		connection.close();  	}    	public?static?void?oneDB()?throws?SQLException?{  		ComboPooledDataSource?dataSource?=?new?ComboPooledDataSource();  		try?{  			dataSource.setDriverClass(DRIVER);  		}?catch?(PropertyVetoException?e1)?{  			e1.printStackTrace();  		}  		dataSource.setJdbcUrl(URL);  		dataSource.setMaxPoolSize(10);  		dataSource.setMinPoolSize(10);  		dataSource.setUser("root");  		dataSource.setPassword("123456");  		dataSource.setCheckoutTimeout(1000);  		dataSource.setDataSourceName("datasource00");  		dataSource.setInitialPoolSize(10);  		try?{  			Connection?connection?=?dataSource.getConnection();  			java.sql.PreparedStatement?pStatement_?=?connection.prepareStatement("SELECT?*?FROM?user?limit?1");  			ResultSet?rs?=?pStatement_.executeQuery();  			while?(rs.next())?{  				System.out.println(rs.getInt(1)?+?"t"?+?rs.getString(2)?+?"t"?+?rs.getString(3)?+?"t"?+?rs.getString(4));  			}  			rs.close();  			pStatement_.close();  			connection.close();  		}?catch?(SQLException?e)?{  			e.printStackTrace();  		}  		Connection?connection?=?dataSource.getConnection();  		java.sql.PreparedStatement?pStatement_?=?connection.prepareStatement("UPDATE?user?SET	NAME?=?'KEVIN-LUAN'?,?sex?=?'1'?,?age?=?'89'?WHERE?id?=?16?;");  		int?row?=?pStatement_.executeUpdate();  		System.out.println(row);  		pStatement_.close();  		connection.close();  	}  }

? 版權(quán)聲明
THE END
喜歡就支持一下吧
點(diǎn)贊8 分享