ibatis对Mysql主从集群进行读写分离测试
2013-06-21 14:57
411 查看
还是两个数据源:
SqlMapConfigW.xml 写
SqlMapConfigR.xml 读:
测试类
测试结果:
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:你的剑就是我的剑
相关文章推荐
- Spring+Hibernate进行双数据源测试Mysql集群读写分离
- linux上使用amoeba实现MySql集群,以及读写分离,主从复制
- shopNC中mysql配置主从进行读写分离的坑
- MySQL主从复制与读写分离在windows系统下的实现(amoeba3.0+mysql5.1实现)因版本问题,本文在原来文章基础上有更改并且本人已经测试成功
- mysql主从数据库集群实现读写分离6步分析策略
- Amoeba-mysql主从+读写分离实战+测试
- 一步一图搭建-分布式服务器部署之mysql集群-主从复制与读写分离
- JDBC访问Mysql进行读写分离测试
- MySQL主从复制架构搭建及读写分离测试
- JDBC进行Mysql读写分离测试
- MySQL主从服务器配置,读写分离【Master-Slave集群】
- mysql集群技术:主从复制,读写分离
- mysql集群:主从服务器读写分离
- 建立mysql主从模式集群,实现mysql的读写分离方法
- Mysql集群主从复制及mysql-proxy读写分离
- 【未测试】使用mysql-proxy 快速实现mysql 集群 读写分离
- Spring+Hibernate双数据源测试Mysql集群读写分离
- Spring4.0.3+Hiberbate4.3.5实现Mysql主从集群读写分离数据源组件
- Spring+Hibernate双数据源测试Mysql集群读写分离(转自http://blog.csdn.net/hzw2312/article/details/9083519)