JAVA中把ResultSet转换成LIST
项目中老是遇到数据库异常关闭的情况,真烦,
想用hibernate呢,那个玩意儿又太笨重,感慨C#和PHP的舒适方便性,模拟TP写了个数据处理层,将就用着先
代码里有很多项目中的东西,不要直接COPY了。。。了解实现方法就行了
/** * @模拟TP数据操作基类框架 * @author 牛牛 Q 184377367 * @20131218 */ package Model; import java.lang.reflect.Method; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import xqlbsw.DB; import xqlbsw.DataFactory; import lib.DBC; public class ModelBase { public String table; public DBC db = null; public String where = ""; public String Field = ""; public Boolean Delete() throws Exception { String dbChar = "delete " + this.table + " where " + this.where; DataFactory.GDO().Update(dbChar); DataFactory.GDO().free(); return true; } public ModelBase table(String t) { this.table = t; return this; } public ModelBase Field(String s) { this.Field = s; return this; } public ModelBase Where(String s) { this.where = s; return this; } public List Select() throws SQLException { if (this.Field == "") { this.Field = "*"; } String dbChar = "select " + this.Field + " from " + this.table; if (this.where != "") { dbChar += " where " + this.where + ""; } List list = this.toList(DataFactory.GDO().getCrmResult(dbChar)); DataFactory.GDO().free(); return list; } public List toList(ResultSet rs) { List list = new ArrayList(); try { // 获取数据库表结构 ResultSetMetaData meta = rs.getMetaData(); Object obj = null; String clsName = this.getClass().getName(); String aryClassName[] = clsName.split("\\."); while (rs.next()) { // 获取formbean实例对象 obj = Class.forName( "Domain." + aryClassName[(aryClassName.length) - 1]) .newInstance(); // 循环获取指定行的每一列的信息 for (int i = 1; i <= meta.getColumnCount(); i++) { // 当前列名 String colName = meta.getColumnName(i); // 将列名第一个字母大写(为什么加+""呢?为了把char类型转换为String类型。replace的参数是String类型。) colName = colName.replace(colName.charAt(0) + "", new String(colName.charAt(0) + "").toUpperCase()); // 设置方法名 String methodName = "set" + colName; // 获取当前位置的值,返回Object类型 Object value = rs.getObject(i); // 利用反射机制,生成setXX()方法的Method对象并执行该setXX()方法。 Method method = obj.getClass().getMethod(methodName, value.getClass()); method.invoke(obj, value); } list.add(obj); } } catch (Exception ex) { ex.printStackTrace(); } finally { return list; } } }
Rust编程语言群 1036955113
java新手自学群 626070845
java/springboot/hadoop/JVM 群 4915800
Hadoop/mongodb(搭建/开发/运维)Q群481975850
GOLang Q1群:6848027
GOLang Q2群:450509103
GOLang Q3群:436173132
GOLang Q4群:141984758
GOLang Q5群:215535604
C/C++/QT群 1414577
单片机嵌入式/电子电路入门群群 306312845
MUD/LIB/交流群 391486684
Electron/koa/Nodejs/express 214737701
大前端群vue/js/ts 165150391
操作系统研发群:15375777
汇编/辅助/破解新手群:755783453
大数据 elasticsearch 群 481975850
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
java新手自学群 626070845
java/springboot/hadoop/JVM 群 4915800
Hadoop/mongodb(搭建/开发/运维)Q群481975850
GOLang Q1群:6848027
GOLang Q2群:450509103
GOLang Q3群:436173132
GOLang Q4群:141984758
GOLang Q5群:215535604
C/C++/QT群 1414577
单片机嵌入式/电子电路入门群群 306312845
MUD/LIB/交流群 391486684
Electron/koa/Nodejs/express 214737701
大前端群vue/js/ts 165150391
操作系统研发群:15375777
汇编/辅助/破解新手群:755783453
大数据 elasticsearch 群 481975850
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步