Dao优化出现的问题(1)

做好了一个简单的网页,准备进行Dao的优化。写了一个BaseDao类将通用的Dao方法抽取出来成为父类。然而一直有个问题卡了我两个小时,百思不得其解。

代码如下:


被抽取的Dao的方法:

public List<Employee> getAll() {
return sessionFactory.getCurrentSession().createQuery("
from Employee").list();
}



抽取出来的Dao父类的方法:

public List<T> getAll() {
return sessionFactory.getCurrentSession().createQuery(
"from "+className).list();
}



实现原理很简单,就是通过:

       // 反射泛型
public BaseDao() {
Type type = this.getClass().getGenericSuperclass();
// 转换为参数化类型
ParameterizedType pt = (ParameterizedType) type;  
// 得到实际类型
Type types[] = pt.getActualTypeArguments();
// 获取实际类型
clazz = (Class<T>) types[0];
className = clazz.getSimpleName();
}


奇怪的是没抽取前能运行,抽取后无法运行了。琢磨了一个多小时,发现问题就是抽取后   ("from"+className).  这句话有问题,因为HQL语句要通过类名来查找对应的Bean和配置信息,而这个  抽取后得到的HQL语句是——fromclassName.   抽取前是 from className  ,中间差了一个空格,所以无法识别,希望大家引以为戒,别粗心大意的差个空格浪费一大堆时间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值