ResultSet转为实体对象st;
import flect.Method;
import flect.Modifier;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
/**
* <p>
* Title: LoonFramework
* </p>
* <p>
* Description:
* </p>
* <p>
* Copyright: Copyright (c) 2007
* </p>
* <p>
* Company: LoonFramework
* </p>
*
* @author chenpeng
* @email:ceponline@yahoo
* @version 0.1
*/
public class ConnectionTest {
/**
* 匹配指定class中数据,并返回包含get和set⽅法的object
*
* @author chenpeng
* @param clazz
* @param beanProperty
* @return
*/
private Object[] beanMatch(Class clazz, String beanProperty) {
Object[] result = new Object[2];
char beanPropertyChars[] = CharArray();
beanPropertyChars[0] = UpperCase(beanPropertyChars[0]);
String s = new String(beanPropertyChars);
String names[] = { ("set" + s).intern(), ("get" + s).intern(),
("is" + s).intern(), ("write" + s).intern(),
("read" + s).intern() };
Method getter = null;
Method setter = null;
Method methods[] = Methods();
// 只取公共字段
if (!Modifier.Modifiers()))
continue;
String methodName = Name().intern();
for (int j = 0; j < names.length; j++) {
String name = names[j];
if (!name.equals(methodName))
continue;
if (methodName.startsWith("set")
|| methodName.startsWith("read"))
setter = method;
else
getter = method;
}
}
result[0] = getter;
result[1] = setter;
return result;
}
/**
* 为bean⾃动注⼊数据
*
* @author chenpeng
* @param object
* @param beanProperty
*/
private void beanRegister(Object object, String beanProperty, String value) { Object[] beanObject = Class(), beanProperty);
Object[] cache = new Object[1];
Method getter = (Method) beanObject[0];
resultset 遍历Method setter = (Method) beanObject[1];
try {
// 通过get获得⽅法类型
String methodType = ReturnType().getName();
if (methodType.equalsIgnoreCase("long")) {
cache[0] = new Long(value);
setter.invoke(object, cache);
} else if (methodType.equalsIgnoreCase("int")
|| methodType.equalsIgnoreCase("integer")) {
cache[0] = new Integer(value);
setter.invoke(object, cache);
} else if (methodType.equalsIgnoreCase("short")) {
cache[0] = new Short(value);
setter.invoke(object, cache);
} else if (methodType.equalsIgnoreCase("float")) {
cache[0] = new Float(value);
setter.invoke(object, cache);
} else if (methodType.equalsIgnoreCase("double")) {
cache[0] = new Double(value);
setter.invoke(object, cache);
} else if (methodType.equalsIgnoreCase("boolean")) {
cache[0] = new Boolean(value);
setter.invoke(object, cache);
} else if (methodType.equalsIgnoreCase("java.lang.String")) {
cache[0] = value;
} else if (methodType.equalsIgnoreCase("java.io.InputStream")) { } else if (methodType.equalsIgnoreCase("char")) {
cache[0] = (Character.valueOf(value.charAt(0)));
setter.invoke(object, cache);
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 转换connection查询结果为指定对象实体集合。
*
* @author chenpeng
* @param connection
* @param clazz
* @param sql
* @return
*/
public Collection get(final Connection connection, final Class clazz, final String sql) {
// 创建PreparedStatement
PreparedStatement ptmt = null;
// 创建resultset
ResultSet rset = null;
// 创建collection
Collection collection = null;
try {
// 赋予实例
ptmt = connection.prepareStatement(sql);
rset = uteQuery();
collection = get(rset, clazz);
} catch (SQLException e) {
} finally {
try {
// 关闭rs并释放资源
if (rset != null) {
rset.close();
rset = null;
}
// 关闭ps并释放资源
if (ptmt != null) {
ptmt.close();
ptmt = null;
}
} catch (SQLException e) {
}
}
return collection;
}
public Collection get(final ResultSet result, final Class clazz) {
/
/ 创建collection
Collection collection = null;
ResultSetMetaData rsmd = MetaData();
// 获得数据列数
int cols = ColumnCount();
// 创建等同数据列数的arraylist类型collection实例
collection = new ArrayList(cols);
// 遍历结果集
while (()) {
// 创建对象
Object object = null;
try {
// 从class获得对象实体
object = wInstance();
} catch (Exception e) {
}
// 循环每条记录
for (int i = 1; i <= cols; i++) {
beanRegister(object, ColumnName(i), result
.getString(i));
}
// 将数据插⼊collection
collection.add(object);
}
} catch (SQLException e) {
} finally {
}
return collection;
}
public static void main(String[] args) {
try {
Class.forName("sql.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
String url = "jdbc:mysql://localhost:3306/test?useUnicode=true";
Connection connection = null;
PreparedStatement ps = null;
ResultSet rs = null;
try {
connection = Connection(url, "root", "xxxx");
ConnectionTest test = new ConnectionTest();
// Ltest是我测试⽤类,实际操作请注⼊相关对象,⽀持set,get,is,read,writer为前缀数据对,更多请继续添加。 Collection collection = (connection, Ltest.class,
"select * from ltest");
for (Iterator it = collection.iterator(); it.hasNext();) {
Ltest ltest = (Ltest) it.next();
System.out.Id() + ":" + Name());
}
}
// SQL异常,⽤于抛出SQL语句处理中所引发的错误。
catch (SQLException e) {
}
// finally,此标识⽤以包含必须访问的内容。
try {
// 关闭rs并释放资源
if (rs != null) {
rs.close();
rs = null;
}
// 关闭ps并释放资源
if (ps != null) {
ps.close();
ps = null;
}
/
/ 关闭connection并释放资源
if (connection != null) {
connection.close();
connection = null;
}
// 如果关闭时产⽣异常将由此抛出
} catch (SQLException e) {
}
}
}
}
________________________
前⼀阵写loonframework-db时,写过类似的处理⽅法,只不过为了效率我都是直接操作的数组对象,现改为集合对象,减少了⼀些处理,但⼤体流 程如此。我框架中cache⼀直没有做完,所以没有为您添加,您可以⽤map之类做⼀个简单的cache来使⽤,⽬前万条数据会较慢于 ResultSet,但是可以正常使⽤。
更多⽅法,请见looframework.sourceforge/或www.open-open/open198258.htm
国产JAVA游戏开源框架Loonframework 这是⼀个基于Java技术的2D游戏框架,将涉及J2SE,J2ME,JavaFX三个⽅⾯。开发⽬的在于以脚本化的⽅式,快速的开发可跨平台移植的 Java游戏。并且它本⾝也是⼀个持久层框架,能在框架内最⼤限度的满⾜⽤户需求。⽬前展⽰了⼀个仿梦幻模拟战世界观的AVG+SLG脚本,以 Applet⽅式展⽰在looframework.sourceforge上运⾏,也可以下载此Jar包后双击运⾏。由于是采⽤Graphics 直接绘制界⾯,所以仅使⽤了最基础的AWT作为表⽰,有很好的移植可能性。功能上,采⽤脚本⽅式动态⽣成界⾯与对话情节,重⽤可⾏性⾼。 项⽬潜⼒上,随着⽇后JavaFX技术的改进与普及,本项⽬还会有⼀次质上的飞跃。在WEB2.0概念深⼊⼈⼼,如猫游记等AJAX游戏都能够有⼈去玩的 今天,利⽤JAVA开发的平台⽆视,且能如RMXP由普通⽤户即可制作的
游戏框架 (⽽且,利⽤Java特性,完全可以做到由⽤户通过⽹页定制游戏并展⽰,甚⾄可以考虑提供⼀个类似于⼟⾖的平台,⽤以展⽰⽤户DIY⾃⼰的游戏或相关图形 资源。)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论