用java泛型方法写一个多用途方法??那位大哥出下主意!??
  对于这个方法是一个java泛型方法,两个参数:的一个是Sql语句,第二个javaBean对象!
  主要功能就是传SQL语句,随便传javaBean的对象,要和数据库进行连接,javaBean里的字段要和数据库里的列进行比较,不管是传入什么什么类型的javaBean对象都要返回传入对象的类型,不可以所以Object对象来进行强转!
   随便带上单元测试,非常感谢!

3个回答

楼上说错了,通用的泛型Dao就是用泛型实现的。
实现的话,你这个方法的类必须是泛型类,如果LZ不熟悉可以先了解下泛型类的概念。
public class Common
{
public T queryForObject(String sql, T entity)
{
...
}

public List queryForObject(String sql, T entity)
{
...
}
}

这个类要在初始化也就是构造函数中,获取泛型T的类型,通过反射API中可以做到,这里只做提示。关于方法体里面,要使用反射实现,可以写一个反射封装对象的通用方法,把获取的泛型T的具体类型传入里面,强转的那一步也是在反射创建对象之后进行的。

T entity = (T)entityClass.newInstance(); // entityClass就是从Common获取的T的具体类型,entity是封装后最终的返回对象。返回List依次类推。

这样一来一个简单的自动封装就实现了,希望对你有所帮助

返回类型只能是固定的.如果想要返回多种javaBean除了Object对象强转之外 没有别的方式. 还有 [quote]javaBean里的字段要和数据库里的列进行比较[/quote]
这个功能也不是泛型能够实现的.这是需要反射来实现的.

泛型并不是一项强大的功能,反而是对于编程数据类型的限制.只不过能减少一些丑陋的强转代码而已.
而且实际上编译成Class之后,就会发现实际上泛型也都被解释成了强制转换.
想用泛型实现这个想法实在是有点异想天开了....

我补充一下,在自动封装的方法中,就是遍历ResultSet,获取数据库中所有列,对应bean中每个字段赋值,前提也就是bean中的属性和数据库列名一致。
如果想要不一致也行的话,也就是需要ORM了,对此就不多说了。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问