表中字符串类型映射bean-hibernate实例

11 篇文章 0 订阅
4 篇文章 0 订阅

需求:获取数据库表中某定义好的字段,与实体bean呼应,获取不同bean中属性值;

方式一:

用到的java反射原理(这样更加浪费内存,多用户访问时会慢,不建议使用)


public Object get(Session session, Mark mark,String id){
		try {
			Class<?> c = Class.forName(mark.getBeanName());
			return session.get(c,id);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		return null;
	}

方式二:

(这里获取connection时出现问题,解决后发现也应用了反射,但是相比方式一,可能效率更好些。这里我没做详细测试,有兴趣的朋友可以测试一下。)

public Map<String, Object> get2(Session session, Mark mark,String id){
		Map<String,Object> returnMap = new HashMap<String, Object>();
		
		List<Map<String, Object>> dataList = new ArrayList<Map<String, Object>>();
		try {
			    String tableName = mark.getBeanName();
				StringBuffer sql = new StringBuffer("select id,title from ");
				sql.append(tableName).append(" ");
				sql.append("where id='");
				sql.append(id).append("' ");
				//hibernate4.x之后获取connection的方法
				Connection connection;
				Method method = session.getClass().getMethod("connection");
				connection = (Connection) ReflectionUtils.invokeMethod(method, session);
				PreparedStatement ps = connection.prepareStatement(sql.toString());
				
				//结合spring管理,但是hibernate4.x之后每次只能获取一次,第二次null
				//PreparedStatement ps =session.disconnect().prepareStatement(sql.toString());
				
			    ResultSet rs = ps.executeQuery();
			    
				while (rs.next()) {
					Map dataMap=new HashMap();
					dataMap.put("id", rs.getObject("id"));
					dataMap.put("title", rs.getObject("title"));
					dataList.add(dataMap);
				}
			} catch (Exception e) {
				e.printStackTrace();
			}
		if(dataList.size()>0){
			returnMap=dataList.get(0);
		}
		return returnMap;
	}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值