一、说明
这是一个执行数据库查询操作的通用方法,不管对象是谁,查询的SQL语句是什么样的,都可以使用。
其中,Object … args表示一个通用对象数组,它用来标识SQL语句中的占位符?。下面还会用到泛型类,由于通用所以肯定会用到泛型。
1.Java反射:见有关反射的文章
2.JDBC元数据:通过。。方法来获取结果集中的列的名称,或者数据表的性质
二、代码
1 | public T <T> Select(Class<T> c,String sql,Object ... args){ |
注意:SQL语句所选择的列名只与数据库中的列名有关,与对象所封装属性无关,下面来建立它们之间的关系,通过列名得到值赋给对象的属性。
通过解析SQL语句来判断到底选择了那些列,以及需要为entity对象的那些属性赋值。不直接用entity是由于不知道语句所选的具体列的数据。1
2
3
4String sql="SELECT name";
与
private String Name;
无关
解决方案1:在SQL语句中协商写上所要查询列的别名,这个别名就是对象封装的属性。1
2
3
4String sql="SELECT name Name,age Age ......";
name是数据库表的列名
Name是name的别名,它是对象的属性