需求就是有大概几十个不同的type,不同的type,
持久化到不同的表里,用hibernate怎么做啊?
下面这样做要写几十个if else有其他方法吗?
String sql = "select type,field1,field2,field3.";
//获取sql中的type
String type = rs.getString("type");//如果type是tableA就获取field1
if(type.equls("tableA"))
session.save(new classTableA().setField1(rs.getString('field1')));
//如果type是tableB就获取field2
else if(type.equls("tableB"))
session.save(new classTableB().setField2(rs.getString('field2')));如果不用hib用sql也要写很多有其他方法吗?
String insertSql = "";
if(type.equls("tableA"))
insertSql = "insert xxx value(xxx=" + rs.getString('field1');
if(type.equls("tableB"))
insertSql = "insert xxx value(xxx=" + rs.getString('field2');
持久化到不同的表里,用hibernate怎么做啊?
下面这样做要写几十个if else有其他方法吗?
String sql = "select type,field1,field2,field3.";
//获取sql中的type
String type = rs.getString("type");//如果type是tableA就获取field1
if(type.equls("tableA"))
session.save(new classTableA().setField1(rs.getString('field1')));
//如果type是tableB就获取field2
else if(type.equls("tableB"))
session.save(new classTableB().setField2(rs.getString('field2')));如果不用hib用sql也要写很多有其他方法吗?
String insertSql = "";
if(type.equls("tableA"))
insertSql = "insert xxx value(xxx=" + rs.getString('field1');
if(type.equls("tableB"))
insertSql = "insert xxx value(xxx=" + rs.getString('field2');
暂时没想到有什么好办法
array = (ArrayList)testdao.find(type);
查询的dao里接受参数:public String find_by_dwbm(String table_type)
sql这样写:sql = "select * from "+table_type;动态获取表名(或者说表类型),直接省略if else判断的过程。呵呵,有时后hibernate很麻烦,用JDBC处理更简洁。
用sql应该好点,把表名作为一个参数,传进查询的dao里。调用查询方法时如下
array = (ArrayList)testdao.find(type);
查询的dao里接受参数:public String find_by_dwbm(String table_type)
sql这样写:sql = "select * from "+table_type; 动态获取表名(或者说表类型),直接省略if else判断的过程。呵呵,有时后hibernate很麻烦,用JDBC处理更简洁。 和不错的建议啊。
hibernate的各种关联,包括继承等机制,都是先知道要用hibernate了,然后根据这种工具去设计数据库楼主这个应该是遗留数据库问题,直接用sql会好一些是否可以建立一个table和column的对应关系表,这样可以通过一个循环生成insert语句
array = (ArrayList)testdao.find(type); 这是什么啊?查询的dao里接受参数:public String find_by_dwbm(String table_type) 这又是什么意思啊?sql这样写:sql = "select * from "+table_type; 您的意思是增加一个type 和 table的对应数据库表 然后用type去数据库查出该type对应需要插入的表名吗?