这里做个例子进行分表,设计很简单,根据类型不同进行分表,比如有三种类型,三张表结构一模一样,建立一个表名索引表,然后根据类型在这张索引表里查询要插入的表名,然后再进行插入操作。

索引表:
CREATE TABLE tableindex (
id int(11) NOT NULL AUTO_INCREMENT,
tablename varchar(10) DEFAULT NULL,
type varchar(10) DEFAULT NULL,
PRIMARY KEY (id)
)
业务表:
CREATE TABLE `e` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`password` varchar(20) DEFAULT NULL,
`name` varchar(20) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8

三张表e,e0,e1表结构一样
package com.msg.domain;
public class User implements java.io.Serializable {
private static final long serialVersionUID = 1L;
private String name;
private String password;
private String type;
public User() {
}
public User(String name, String password) {
this.name = name;
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
}
public void insertMessage() {
JdbcUtils jdbc = new JdbcUtils();//JDBC操作类
try {
List<User> userList = new ArrayList<User>();
User user0 = new User();
user0.setName("张三");
user0.setPassword("123");
user0.setType("1");
userList.add(user0);
User user1 = new User();
user1.setName("李四");
user1.setPassword("123456");
user1.setType("2");
userList.add(user1);
User user2 = new User();
user2.setName("王五");
user2.setPassword("890");
user2.setType("3");
userList.add(user2);
for (User user:userList){
StringBuffer sb = new StringBuffer();
//查询业务表名
String tableName =
jdbc.query("select * from tableindex where type='"+user.getType()+"'");
sb.append("insert into "+tableName+"(name,password) values('"+user.getName()+"','"+
user.getPassword()+"')");
//执行插入操作
jdbc.insert(sb.toString());
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}