java查询功能_java利⽤反射实现查询功能该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
/*⽤反射实现sql语句调⽤的思路:
1、先⽤ResultSetMetaData获取我们的ResultSet 的Sql语句,通过Sql语句我们可以联想到如何获取到我们的字段
(字段代表Sql语句的字段,也就是我们表的列名)
2、再获取sql语句⾥的字段长度(字段的个数)
3、遍历我们的rs得到rs的结果集,别忘了定义得到我们封装的对象
4、根据Sql语句⾥字段的长度遍历得到我们的字段
(根据我们的命名需要,这时候我们需考虑字段中含有的下划线,
我们这时要对字段含有的下划线进⾏处理,当然这⼀步我们可以忽略不计)
5、到这⼀步时,我们需要考虑如何才能获取到我们封装的类型以及封装的字段名称?当然我们封装的名称,
与Sql语句的字段名称是⼀致的。这个时候我们可以根据字段的名称来到我们封装的类型是什么。
6、这⾥我们需要先把字段名⾸字母⼤写,再⽤Method 拼接⽅法调⽤我们封装的set ⽅法 :(set + name,type)
7、判断类型,跟数据库⼀⼀对应,把取到的值返回即可。
*/
实现代码:public static List toReflect(ResultSet rs, Class obj) {
try {
List list = new ArrayList(); //ResultSetMetaData ⽤于获取关于 ResultSet 对象中列的类型和属性信息的对象。
ResultSetMetaData rsmd = rs.getMetaData();
int count = ColumnCount();
T instance = null;
while (rs.next()){
instance = wInstance();
for (int i=1;i
String name = ColumnName(i);
name = toName(name).substring(0,1).toUpperCase()+toName(name).substring(1);
Class> type = DeclaredField(name).getType();
Method method = Method("set" + name,type);
if (type.isAssignableFrom(String.class)){
method.invoke(String(i));
}
}
list.add(instance);
}
return list;
}catch (SQLException e){
e.printStackTrace();
}catch (IllegalAccessException e){
e.printStackTrace();
}catch (InstantiationException e){resultset 遍历
e.printStackTrace();
}catch (NoSuchFieldException e){
e.printStackTrace();
}catch (NoSuchMethodException e){
e.printStackTrace();
}catch (InvocationTargetException e){
e.printStackTrace();
}
return null;
}
public static String toCharActer(String string){
//从string第⼀个字符开始搜索有没有“_”
if (string.indexOf("_")>-1){
//有“_”的把字符都转换成⼩写字母
string = LowerCase();
}
//以“_”来分割我们的字符
String[] str=string.split("_");
//创建⼀个StringBuilder来拼接我们的字符(StringBuilder线程不安全,但效率快,值得提倡使⽤) StringBuilder sb = new StringBuilder();
sb.append(str[0]);//拼接第⼀个字符
//判断是否有多个字符str.length>1
if (str.length>1){
for (int i=1;i
//把⾸字母⼤写
str[i] = str[i].substring(0,1).toUpperCase()+str[i].substring(1);
sb.append(str[i]);
}
}
String(); }
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论