ibatis对Mysql主从集群进展读写分离测试
ibatis对Mysql主从集群进行读写分离测试
还是两个数据源:
SqlMapConfigW.xml 写
- <?xml version="1.0" encoding="UTF-8" ?>
- <!DOCTYPE sqlMapConfig
- PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
- "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
- <sqlMapConfig>
- <!-- Configure a built-in transaction manager. If you're using an
- app server, you probably want to use its transaction manager
- and a managed datasource -->
- <transactionManager type="JDBC" commitRequired="false">
- <dataSource type="SIMPLE">
- <property name="JDBC.Driver" value="com.mysql.jdbc.Driver"/>
- <property name="JDBC.ConnectionURL" value="jdbc:mysql:loadbalance://10.11.2.126:3306/DB_TEST7?roundRobinLoadBalance=true&characterEncoding=UTF-8"/>
- <property name="JDBC.Username" value="TESTUSER"/>
- <property name="JDBC.Password" value="TESTPWD"/>
- </dataSource>
- </transactionManager>
- <!-- List the SQL Map XML files. They can be loaded from the
- classpath, as they are here (com.domain.data...) -->
- <sqlMap resource="com/mydomain/data/City.xml"/>
- </sqlMapConfig>
SqlMapConfigR.xml 读:
- <?xml version="1.0" encoding="UTF-8" ?>
- <!DOCTYPE sqlMapConfig
- PUBLIC "-//ibatis.apache.org//DTD SQL Map Config 2.0//EN"
- "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
- <sqlMapConfig>
- <!-- Configure a built-in transaction manager. If you're using an
- app server, you probably want to use its transaction manager
- and a managed datasource -->
- <transactionManager type="JDBC" commitRequired="false">
- <dataSource type="SIMPLE">
- <property name="JDBC.Driver" value="com.mysql.jdbc.Driver"/>
- <property name="JDBC.ConnectionURL" value="jdbc:mysql:loadbalance://10.11.0.75,172.16.0.202:3306/DB_TEST7?roundRobinLoadBalance=true&characterEncoding=UTF-8"/>
- <property name="JDBC.Username" value="TESTUSER"/>
- <property name="JDBC.Password" value="TESTPWD"/>
- </dataSource>
- </transactionManager>
- <!-- List the SQL Map XML files. They can be loaded from the
- classpath, as they are here (com.domain.data...) -->
- <sqlMap resource="com/mydomain/data/City.xml"/>
- </sqlMapConfig>
- City 实体类:
- package com.mydomain.domain;
- public class City {
- private int id;
- private String sname;
- public int getId() {
- return id;
- }
- public void setId(int id) {
- this.id = id;
- }
- public String getSname() {
- return sname;
- }
- public void setSname(String sname) {
- this.sname = sname;
- }
- }
- City.xml文件:
- <?xml version="1.0" encoding="UTF-8" ?>
- <!DOCTYPE sqlMap
- PUBLIC "-//ibatis.apache.org//DTD SQL Map 2.0//EN"
- "http://ibatis.apache.org/dtd/sql-map-2.dtd">
- <sqlMap namespace="City">
- <!-- Use type aliases to avoid typing the full classname every time. -->
- <typeAlias alias="City" type="com.mydomain.domain.City"/>
- <!-- Result maps describe the mapping between the columns returned
- from a query, and the class properties. A result map isn't
- necessary if the columns (or aliases) match to the properties
- exactly. -->
- <resultMap id="CityResult" class="City">
- <result property="id" column="ID"/>
- <result property="sname" column="SNAME"/>
- </resultMap>
- <!-- Select with no parameters using the result map for Account class. -->
- <select id="selectAllCitys" resultMap="CityResult" parameterClass="City">
- select * from City where sName = #sname#
- </select>
- <!-- Insert example, using the Account parameter class -->
- <insert id="insertCity" parameterClass="City">
- insert into City (
- sName
- )
- values (
- #sname#
- )
- </insert>
- <!-- Delete example, using an integer as the parameter class -->
- <delete id="deleteCity" parameterClass="int">
- delete from city where id = #id#
- </delete>
- </sqlMap>
测试类
- package com.mydomain.data;
- import java.io.IOException;
- import java.io.Reader;
- import java.sql.SQLException;
- import java.util.List;
- import com.ibatis.common.resources.Resources;
- import com.ibatis.sqlmap.client.SqlMapClient;
- import com.ibatis.sqlmap.client.SqlMapClientBuilder;
- import com.mydomain.domain.City;
- public class Test {
- private static SqlMapClient sqlMapperR; //读
- private static SqlMapClient sqlMapperW; //写
- public Test(String wr){
- if(wr.equals("W")){
- try {
- Reader reader = Resources.getResourceAsReader("com/mydomain/data/SqlMapConfigW.xml");
- sqlMapperW = SqlMapClientBuilder.buildSqlMapClient(reader);
- reader.close();
- } catch (IOException e) {
- throw new RuntimeException("Something bad happened while building the SqlMapClient instance." + e, e);
- }
- }else{
- try {
- Reader reader = Resources.getResourceAsReader("com/mydomain/data/SqlMapConfigR.xml");
- sqlMapperR = SqlMapClientBuilder.buildSqlMapClient(reader);
- reader.close();
- } catch (IOException e) {
- throw new RuntimeException("Something bad happened while building the SqlMapClient instance." + e, e);
- }
- }
- }
- public static List selectAllCitys (City city) throws SQLException {
- return sqlMapperR.queryForList("selectAllCitys",city);
- }
- public static void insertCity (City city) throws SQLException {
- sqlMapperW.insert("insertCity", city);
- }
- public static void deleteCity (int id) throws SQLException {
- sqlMapperW.delete("deleteCity", id);
- }
- public static void main(String[] args) {
- Test t1 = new Test("R");
- Test t2 = new Test("W");
- City c = new City();
- c.setSname("你的剑就是我的剑");
- try {
- t2.insertCity(c);
- List<City> list = t1.selectAllCitys(c);
- for (int i = 0; i < list.size(); i++) {
- City ci = list.get(i);
- System.out.println("sName:"+ci.getSname());
- }
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- }
测试结果:
- sName:你的剑就是我的剑