由于单表数据量庞大,在查询时会很慢,所以我们先分表,再在每个表单独加索引会提高很大的效率。
下面直接上代码:
下面直接上代码:
public class QueryResInterceptor extends EmptyInterceptor{
private String oldName;
private String newName;
public QueryResInterceptor(String oldName,String newName){
this.oldName = oldName;
this.newName = newName;
}
//重写该方法,hibernate是封装了jdbc的,但他底层还是通过sql来操作的。
public String onPrepareStatement(String sql) {
sql = sql.replace(oldName,newName);
return sql;
}
}
利用这个Hibernate拦截器每次操作数据库都会在底层切换表名
那么我们在Dao层应该这么写:
那么我们在Dao层应该这么写:
public void saveUser(String oldName,String newName,User user){
QueryResInterceptor interceptor = newQueryResInterceptor(oldName,newName);
Session session = super.getHibernateTemplate().getSessionFactory().openSession(interceptor);
try {
session.save(user);
} catch (HibernateException e) {
e.printStackTrace();
}finally{
session.close();
}
}