public DefaultMutableTreeNode createNodes() {
DefaultMutableTreeNode root = new DefaultMutableTreeNode("所有类别");
Medicine_BaseInfoDAO dao = new Medicine_BaseInfoDAO();
Vector vec = dao.selectGoodsInfo();//从数据库得到所有商品信息
Vector vec2; String type = null;
for (int i = 0; i < vec.size(); i++) {
DefaultMutableTreeNode name = new DefaultMutableTreeNode((String)
vec.get(i));//new出所有的类型名作为支节点
root.add(name);
type = (String) vec.get(i);//得到所有的商品类型
vec2 = dao.selectGoodsNameBYtype(type);//根据商品类型得到所有相关类型下的所有商品信息
for (int j = 0; j < vec2.size(); j++) {
DefaultMutableTreeNode name2 = new DefaultMutableTreeNode((
String) vec2.
get(j));//new出所有的特定类型下的商品名作为子节点
name.add(name2);
} } return root;
}
此目录树根据数据库的内容循环构建, 构建内容明显过慢, 有没什么好的解决方案, 万分感谢\ selectGoodsInfo中的SQL语句select distinct Goods_fl from goods_info selectGoodsNameBYtype中的SQL语句select distinct Goods_Name from goods_info where Goods_fl=?
DefaultMutableTreeNode root = new DefaultMutableTreeNode("所有类别");
Medicine_BaseInfoDAO dao = new Medicine_BaseInfoDAO();
Vector vec = dao.selectGoodsInfo();//从数据库得到所有商品信息
Vector vec2; String type = null;
for (int i = 0; i < vec.size(); i++) {
DefaultMutableTreeNode name = new DefaultMutableTreeNode((String)
vec.get(i));//new出所有的类型名作为支节点
root.add(name);
type = (String) vec.get(i);//得到所有的商品类型
vec2 = dao.selectGoodsNameBYtype(type);//根据商品类型得到所有相关类型下的所有商品信息
for (int j = 0; j < vec2.size(); j++) {
DefaultMutableTreeNode name2 = new DefaultMutableTreeNode((
String) vec2.
get(j));//new出所有的特定类型下的商品名作为子节点
name.add(name2);
} } return root;
}
此目录树根据数据库的内容循环构建, 构建内容明显过慢, 有没什么好的解决方案, 万分感谢\ selectGoodsInfo中的SQL语句select distinct Goods_fl from goods_info selectGoodsNameBYtype中的SQL语句select distinct Goods_Name from goods_info where Goods_fl=?
特别是,如果dao.selectGoodsNameBYtype(type)里面,每次都新createPreparedStatment的话,就更慢了。
优化方法有2个:
1,selectGoodsNameBYtype里面别每次都新createPreparedStatment和close。
改成在循环外面初始化dao的selectGoodsNameBYtype用到的PreparedStatment,再循环外面close,
那么,每次运行“select distinct Goods_Name from goods_info where Goods_fl=?”的时候,
PreparedStatment只编译(不是指java编译,是指DB编译)一次,每次使用时是传type,可以加快一点。2,2句sql完全可以合成一句:
select
distinct Goods_Name, Goods_fl
from goods_info,
(select distinct Goods_fl from goods_info) t1
where goods_info.Goods_fl=t1.Goods_fl sort by t1.Goods_fl desc
那么可以生成下面样子的表:
Goods_Name | Goods_fl
-------------------------
Name11 | fl1
Name12 | fl1
Name13 | fl1
Name21 | fl2
Name22 | fl2
Name31 | fl3用一个循环去做,如果Goods_fl改变了(fl1变成fl2了),那么商品类型增加,否则只是商品名增加。