⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kylelist12-3 13_06.java

📁 创建中间企业对象层
💻 JAVA
字号:
/**
 * @author duke
 * @version 1.2
 * @date 2004-8-10 14:37
 */
 
package com.kyle.eobject;

import java.io.*;
import java.util.Date;
import java.sql.*;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
import net.snapbug.util.dbtool.*;

public class KyleList
{
	
	public KyleList() throws Exception
	{
		initializeFields();
		initializeLink();
		opened=false;
	}

	public KyleList(String name) throws Exception
	{
		setTableName(name);
		initializeFields();
		initializeLink();
		opened=false;
	}

	protected void initializeFields(){}
	
	//增加数据
	public void addField(String name, 
						 String type,
						 int length)
	{ 
		fields.addField(name,type,length,"","");
	}
	
	public void addField(String name, 
						 String type,
						 int length,
						 String refer,
						 String referfield)
	{
		fields.addField(name,type,length,refer,referfield);
	}

	private void initializeLink() throws Exception
	{
        openConn();  //time 211
        internalStatement = conn.createStatement(); //time 370   
	}
	
	private void openConn() throws Exception
	{
        conn = DBUtils.getConnectionPool();
        connOpened = true;
	}
	
	public void setTableName(String name)
	{
		table=name;
	}

	public String getTableName()
	{
		return table;
	}
	
	public void setWhere(String value)
	{
		if (value!=null) where= value.trim();
	}
	
	public String getWhere()
	{
		return where;
	}

	public void setField(String value)
	{
		field= value;
	}
	
	public String getField()
	{
		return field;
	}
	
	
	public void setKey(String value)
	{
		key=value;
	}
	
	public String getKey()
	{
		return key;
	}

	public int getCount()
	{
		return count;
	}

	public void setPage(boolean value)
	{
		page=value;
	}
	
	public void setPageSize(int value)
	{
		pageSize=value;
	}

	public int getPageNo()
	{
		return pageNo;
	}
	
	public int getPageCount()
	{
		return pageCount;
	}
	
	public void setPageNo(int value)
	{
		pageNo=value;
	}

	public void list() throws Exception
	{
		String sqlstr="";
		if (opened) internalRs.close();
		internalRs=internalStatement.executeQuery(
				KyleSqlUtils.getQueryCountSql(table,"*","n",where).toString());
		if (internalRs.next())
			count=internalRs.getInt("n");
		else
			count=0;
		internalRs.close();

		//分页模式
		if (page)
		{
			pageCount=count/pageSize+1;
            if (pageNo<1) pageNo=1;
            if (pageNo>pageCount) pageNo=pageCount;
            querySql=KyleSqlUtils.getPageSql(table,field,where,orderby,
            								pageNo,pageSize,"ID",-1);
		}
		else
		{
			querySql=KyleSqlUtils.getQuerySql(table,field,where,orderby);
		}
		//System.out.println(querySql);
		internalRs=internalStatement.executeQuery(querySql.toString());
		opened=true;
	}

	public boolean next() throws Exception
	{
		if (!opened) return false;
		index++;
		return internalRs.next();
	}
	
	public String value(String fieldstr) throws Exception
	{
		if (!opened) return "";
		String str=fieldstr;
		String[] ary = str.split("[.]");
		if(ary.length==1) return internalRs.getString(fieldstr);

		str = internalRs.getString(ary[0]);
		KyleQuerySQL sql = new KyleQuerySQL();
		String uri=ary[0];
		String uribef=uri;

		for(int i=0;i<ary.length;i++)
		{
			if(i>0)
			{
				uribef=uri;
				uri += "."+ary[i];
			}

			KyleNameTable temptable = temptables.getTable(uri);
			if(temptable==null)
			{				
				if(i==0)
				{
					//增加数据表			
					temptable = new KyleNameTable(uri);
					sql=KyleSqlUtils.getQuerySql(getTableName(),uri,querySql.where); //time 10 少
        			Statement stmtTemp = conn.createStatement();  //time 20
					ResultSet rsTemp = stmtTemp.executeQuery(sql.toString()); //time 10 少
					int idx=0;
					while (rsTemp.next()) //time 0-10
						temptable.add(String.valueOf(idx++),rsTemp.getString(1));
					rsTemp.close();
					stmtTemp.close();
					temptables.add(temptable);
					//增加对象表
					KyleField field = fields.getField(uri);
					Class c = Class.forName("com.kyle.eobject."+getTableName());
					lists.addObj(uri,(KyleList)c.newInstance());
				}
				if(i>0)
				{
					//得到指当前字段的Field
					KyleList objbef = lists.getObj(uribef);
					KyleField fieldbef = objbef.fields.getField(ary[i-1]);
					if (fieldbef==null) return "";
					KyleNameTable temptablebef = temptables.getTable(uribef);
					//增加数据表
					temptable = new KyleNameTable(uri);
					sql=KyleSqlUtils.getQuerySql(
							fieldbef.getRefer(),
							fieldbef.getReferfield()+","+ary[i],
							fieldbef.getReferfield()+" IN "+temptablebef.getWhereInStr());


        			Statement stmtTemp = conn.createStatement(); //time 10
					ResultSet rsTemp = stmtTemp.executeQuery(sql.toString());

					while (rsTemp.next())  //time 10
						temptable.add(rsTemp.getString(1),rsTemp.getString(2));
					rsTemp.close();
					stmtTemp.close();
					temptables.add(temptable);
					//增加对象表
					Class c = Class.forName("com.kyle.eobject."+fieldbef.getRefer());
					KyleList obj = (KyleList)c.newInstance();
					lists.addObj(uri,obj);
				}
			}
			str=temptable.value(str);		
		}
		return str;
	}
	
	public void close() throws Exception
	{
		if (opened)
		{
			internalRs.close();
			opened=false;
		}
		conn.close();
	}

	//Query SQL
	KyleQuerySQL querySql = new KyleQuerySQL();
	private String field="";
	private String table="*";
	private String where="";
	private String orderby="";
	private String key="";
	
	private int count;             //总记录数
	private boolean page=false;    //分页模式
	private int pageSize=10;       //每页记录数
	private int pageCount=1;       //总页数
	private int pageNo=1;          //当前页
	public int index = 0;		   //记录指针位置

	
	private Statement internalStatement; 
	private ResultSet internalRs;
	private boolean opened=false;
	private boolean connOpened=false;

	private KyleFields fields = new KyleFields();
	private KyleLists  lists  = new KyleLists();
	private KyleNameTables temptables = new KyleNameTables();
	private ConnectionPool conn;
	
	
	
	public static void main(String args[]) throws Exception
	{
		System.out.println("id		a		b");
		System.out.println("------------------------------------");
		KyleList t = new KyleList("users");
		t.setWhere("id>1 and a like '%a%' ");
		t.setField("id,a,b");
		t.setPage(true);
		t.setPageNo(1);
		t.list();
		while (t.next())
			System.out.println(t.index + "," + 
							   t.value("id") +
							   "		"+t.value("a")+
							   "		"+t.value("b"));
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -