加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Flex4之Tree开发【三】——与JAVA后台交互的树,实现增删改查

发布时间:2020-12-15 05:14:21 所属栏目:百科 来源:网络整理
导读:? 今天的第三篇文章,把我两天学习的Flex4树的最重要的与实际开发相关的示例总结一下,实现与JAVA后台交互操作也就是增删改功能 第一:首先是MXML主要代码 Xml代码 ? SPAN ? style = "FONT-SIZE:?medium" ? xml ? version = "1.0" ? encoding = "utf-8" ? ??
?

今天的第三篇文章,把我两天学习的Flex4树的最重要的与实际开发相关的示例总结一下,实现与JAVA后台交互操作也就是增删改功能

第一:首先是MXML主要代码

Xml代码

?

  1. <SPAN?style="FONT-SIZE:?medium"><?xml?version="1.0"?encoding="utf-8"?>??
  2. <s:Group?xmlns:fx="http://ns.adobe.com/mxml/2009"? ??
  3. ?????????xmlns:s="library://ns.adobe.com/flex/spark"? ??
  4. ?????????xmlns:mx="library://ns.adobe.com/flex/mx"?width="100%"?height="100%"??
  5. ?????????creationComplete="init()">??
  6. ????<fx:Script>??
  7. ????????<![CDATA[ ?
  8. ????????????import?mx.controls.Alert; ?
  9. ????????????import?mx.rpc.events.ResultEvent; ?
  10. ????????????import?mx.utils.URLUtil; ?
  11. ????????????protected?function?init():void{ ?
  12. ????????????????listResult.convertDataToXml(); ?
  13. ????????????} ?
  14. ????????????var?xmlList:XML; ?
  15. ????????????protected?function?listResult_resultHandler(event:ResultEvent):void ?
  16. ????????????{ ?
  17. ????????????????xmlList=XML(event.result.toString()); ?
  18. ????????????????mytree.dataProvider=xmlList; ?
  19. ???????????????? ?
  20. ????????????} ?
  21. ???????????? ?
  22. ????????????protected?function?tree1_clickHandler(event:MouseEvent):void ?
  23. ????????????{ ?
  24. ????????????????if(mytree.selectedItem.hasOwnProperty("@value"?)) ?
  25. ????????????????{? ?
  26. ???????????????????? ?
  27. ????????????????????var?u:URLRequest=new?URLRequest(mytree.selectedItem.@value); ?
  28. ????????????????????//navigateToURL(new?URLRequest(mytree.selectedItem.@value));? ?
  29. ????????????????????navigateToURL(u); ?
  30. ????????????????}?else ?
  31. ????????????????{? ?
  32. ????????????????????//没有那就展开,如果展开了就收缩 ?
  33. ????????????????????mytree.expandItem(mytree.selectedItem,!mytree.isItemOpen(mytree.selectedItem),true); ?
  34. ????????????????}? ?
  35. ????????????} ?
  36. ????????????var?child:XML; ?
  37. ????????????//添加兄弟节点 ?
  38. ????????????protected?function?addBefore():void ?
  39. ????????????{ ?
  40. ????????????????var?xml:XML=mytree.selectedItem?as?XML; ?
  41. ????????????????var?text:String=nextName.text; ?
  42. ????????????????if(xml!=null?&&?text.length>0)?{ ?
  43. ????????????????????var?parent:XML=xml.parent(); ?
  44. ????????????????????if(parent!=null)?{ ?
  45. ????????????????????????child=new?XML("<node?foddersortName=""?foddersortId=""??parentid=""?/>"); ?
  46. ????????????????????????child.@foddersortName=text; ?
  47. ????????????????????????parent.insertChildBefore(xml,child); ?
  48. ????????????????????????var?v:URLVariables?=?new?URLVariables("method=add&editName="+text+"&parentId="+parent.@foddersortId);?? ?
  49. ????????????????????????/*? ?
  50. ????????????????????????也可以是这种方式 ?
  51. ????????????????????????var?vars:?URLVariables?=?new?URLVariables?(); ?
  52. ????????????????????????vars["varName"]?=?varValue;?//把参数键,值对放到vars对象中. ?
  53. ????????????????????????vars["var2Name"]?=?var2Value;? ?
  54. ????????????????????????*/?? ?
  55. ????????????????????????var?r:URLRequest?=?new?URLRequest();?? ?
  56. ????????????????????????r.url?=?"http://localhost:8080/FlexBlazeDS/treeOperate.do";?? ?
  57. ????????????????????????r.method?=?URLRequestMethod.POST;?? ?
  58. ????????????????????????r.data?=?v;?? ?
  59. ???????????????????????? ?
  60. ????????????????????????var?l:URLLoader?=?new?URLLoader();?????????? ?
  61. ????????????????????????l.load(r);?? ?
  62. ???????????????????????? ?
  63. ????????????????????????l.addEventListener(Event.COMPLETE,txtCompleteHandler); ?
  64. ????????????????????}?else?{ ?
  65. ????????????????????????Alert.show("不能选中根节点"); ?
  66. ????????????????????} ?
  67. ????????????????}?else?{ ?
  68. ????????????????????Alert.show("需要先选中节点和填入文字"); ?
  69. ????????????????} ?
  70. ????????????} ?
  71. ???????????? ?
  72. ????????????private?function?txtCompleteHandler(e:Event):void?? ?
  73. ????????????{?? ?
  74. ???????????????? ?
  75. ????????????????var?l:URLLoader?=?URLLoader(e.target);?? ?
  76. ????????????????var?o:Object?=?URLUtil.stringToObject(l.data,";",true); ?
  77. ????????????????var?result:String=o.result; ?
  78. ????????????????var?operateId:String=o.operateId; ?
  79. ????????????????if(operateId!=null){ ?
  80. ????????????????????//Alert.show(o.operateId); ?
  81. ????????????????????//每次添加完毕节点后,就需要将刚插入数据库中的最大的ID查询出来赋给刚刚新增的XML节点的属性中 ?
  82. ????????????????????child.@foddersortId=operateId; ?
  83. ????????????????} ?
  84. ???????????????? ?
  85. ????????????????if(result=="update"){ ?
  86. ????????????????????Alert.show("更新成功!"); ?
  87. ????????????????}else?if(result=="delete"){ ?
  88. ????????????????????Alert.show("删除成功!"); ?
  89. ????????????????}else?if(result=="add"){ ?
  90. ????????????????????Alert.show("新增成功!"); ?
  91. ????????????????}else{ ?
  92. ????????????????????Alert.show("操作失败!"); ?
  93. ????????????????} ?
  94. ???????????????? ?
  95. ????????????}?? ?
  96. ???????????? ?
  97. ???????????? ?
  98. ????????????protected?function?addAfter():void ?
  99. ????????????{ ?
  100. ????????????????var?xml:XML=mytree.selectedItem?as?XML; ?
  101. ????????????????var?text:String=nextName.text; ?
  102. ????????????????if(xml!=null?&&?text.length>0)?{ ?
  103. ????????????????????var?parent:XML=xml.parent(); ?
  104. ????????????????????if(parent!=null)?{ ?
  105. ????????????????????????child=new?XML("<node?foddersortName=""?foddersortId=""??parentid=""?/>"); ?
  106. ????????????????????????child.@foddersortName=text; ?
  107. ????????????????????????parent.insertChildAfter(xml,child); ?
  108. ???????????????????????? ?
  109. ????????????????????????var?v:URLVariables?=?new?URLVariables("method=add&editName="+text+"&parentId="+parent.@foddersortId);?? ?
  110. ????????????????????????/*? ?
  111. ????????????????????????也可以是这种方式 ?
  112. ????????????????????????var?vars:?URLVariables?=?new?URLVariables?(); ?
  113. ????????????????????????vars["varName"]?=?varValue;?//把参数键,txtCompleteHandler); ?
  114. ????????????????????}?else?{ ?
  115. ????????????????????????Alert.show("不能选中根节点"); ?
  116. ????????????????????} ?
  117. ????????????????}?else?{ ?
  118. ????????????????????Alert.show("需要先选中节点和填入文字"); ?
  119. ????????????????} ?
  120. ????????????} ?
  121. ???????????? ?
  122. ????????????protected?function?addSon():void ?
  123. ????????????{ ?
  124. ????????????????var?xml:XML=mytree.selectedItem?as?XML; ?
  125. ????????????????var?text:String=nextName.text; ?
  126. ????????????????if(xml!=null?&&?text.length>0)?{ ?
  127. ????????????????????var?parent:XML=xml.parent(); ?
  128. ????????????????????child=new?XML("<node?foddersortName=""?foddersortId=""??parentid=""?/>"); ?
  129. ????????????????????child.@foddersortName=text; ?
  130. ????????????????????xml.appendChild(child); ?
  131. ????????????????????mytree.expandChildrenOf(xml,true); ?
  132. ???????????????????? ?
  133. ????????????????????var?v:URLVariables?=?new?URLVariables("method=add&editName="+text+"&parentId="+xml.@foddersortId);?? ?
  134. ????????????????????/*? ?
  135. ????????????????????也可以是这种方式 ?
  136. ????????????????????var?vars:?URLVariables?=?new?URLVariables?(); ?
  137. ????????????????????vars["varName"]?=?varValue;?//把参数键,值对放到vars对象中. ?
  138. ????????????????????vars["var2Name"]?=?var2Value;? ?
  139. ????????????????????*/?? ?
  140. ????????????????????var?r:URLRequest?=?new?URLRequest();?? ?
  141. ????????????????????r.url?=?"http://localhost:8080/FlexBlazeDS/treeOperate.do";?? ?
  142. ????????????????????r.method?=?URLRequestMethod.POST;?? ?
  143. ????????????????????r.data?=?v;?? ?
  144. ???????????????????? ?
  145. ????????????????????var?l:URLLoader?=?new?URLLoader();?????????? ?
  146. ????????????????????l.load(r);?? ?
  147. ???????????????????? ?
  148. ????????????????????l.addEventListener(Event.COMPLETE,txtCompleteHandler); ?
  149. ????????????????}?else?{ ?
  150. ????????????????????Alert.show("需要先选中节点和填入文字"); ?
  151. ????????????????}??????????? ?
  152. ????????????} ?
  153. ????????????protected?function?editNode():void ?
  154. ????????????{ ?
  155. ????????????????var?xml:XML=mytree.selectedItem?as?XML; ?
  156. ????????????????var?text:String=nextName.text; ?
  157. ????????????????if(xml!=null?&&?text.length>0)?{ ?
  158. ????????????????????xml.@foddersortName=text; ?
  159. ????????????????}?else?{ ?
  160. ????????????????????Alert.show("需要先选中节点和填入文字"); ?
  161. ????????????????} ?
  162. ???????????????? ?
  163. ????????????????var?v:URLVariables?=?new?URLVariables("method=update&editName="+text+"&parentId="+xml.@foddersortId);?? ?
  164. ????????????????/*? ?
  165. ????????????????也可以是这种方式 ?
  166. ????????????????var?vars:?URLVariables?=?new?URLVariables?(); ?
  167. ????????????????vars["varName"]?=?varValue;?//把参数键,值对放到vars对象中. ?
  168. ????????????????vars["var2Name"]?=?var2Value;? ?
  169. ????????????????*/?? ?
  170. ????????????????var?r:URLRequest?=?new?URLRequest();?? ?
  171. ????????????????r.url?=?"http://localhost:8080/FlexBlazeDS/treeOperate.do";?? ?
  172. ????????????????r.method?=?URLRequestMethod.POST;?? ?
  173. ????????????????r.data?=?v;?? ?
  174. ???????????????? ?
  175. ????????????????var?l:URLLoader?=?new?URLLoader();?????????? ?
  176. ????????????????l.load(r);?? ?
  177. ???????????????? ?
  178. ????????????????l.addEventListener(Event.COMPLETE,txtCompleteHandler); ?
  179. ????????????} ?
  180. ????????????protected?function?deleteNode():void ?
  181. ????????????{ ?
  182. ????????????????var?xml:XML=mytree.selectedItem?as?XML; ?
  183. ????????????????if(xml!=null)?{ ?
  184. ????????????????????var?list:Array=mytree.selectedItems?as?Array; ?
  185. ????????????????????for(var?k:int=0;k<list.length;k++)?{ ?
  186. ????????????????????????xml=list[k]?as?XML; ?
  187. ????????????????????????var?parent:XML=xml.parent(); ?
  188. ????????????????????????if(parent!=null)?{ ?
  189. ????????????????????????????var?children:XMLList=parent.children(); ?
  190. ????????????????????????????for(var?i:int=0;i<children.length();i++)?{ ?
  191. ????????????????????????????????if(children[i]==xml)?{ ?
  192. ????????????????????????????????????delete?children[i]; ?
  193. ????????????????????????????????????var?v:URLVariables?=?new?URLVariables("method=delete&parentId="+xml.@foddersortId);?? ?
  194. ????????????????????????????????????/*? ?
  195. ????????????????????????????????????也可以是这种方式 ?
  196. ????????????????????????????????????var?vars:?URLVariables?=?new?URLVariables?(); ?
  197. ????????????????????????????????????vars["varName"]?=?varValue;?//把参数键,值对放到vars对象中. ?
  198. ????????????????????????????????????vars["var2Name"]?=?var2Value;? ?
  199. ????????????????????????????????????*/?? ?
  200. ????????????????????????????????????var?r:URLRequest?=?new?URLRequest();?? ?
  201. ????????????????????????????????????r.url?=?"http://localhost:8080/FlexBlazeDS/treeOperate.do";?? ?
  202. ????????????????????????????????????r.method?=?URLRequestMethod.POST;?? ?
  203. ????????????????????????????????????r.data?=?v;?? ?
  204. ???????????????????????????????????? ?
  205. ????????????????????????????????????var?l:URLLoader?=?new?URLLoader();?????????? ?
  206. ????????????????????????????????????l.load(r);?? ?
  207. ???????????????????????????????????? ?
  208. ????????????????????????????????????l.addEventListener(Event.COMPLETE,txtCompleteHandler); ?
  209. ????????????????????????????????????break; ?
  210. ????????????????????????????????} ?
  211. ????????????????????????????} ?
  212. ????????????????????????}?else?{ ?
  213. ????????????????????????????Alert.show("不能选中根节点"); ?
  214. ????????????????????????} ?
  215. ????????????????????} ?
  216. ????????????????}?else?{ ?
  217. ????????????????????Alert.show("需要先选中节点"); ?
  218. ????????????????}??????????? ?
  219. ????????????} ?
  220. ????????????protected?function?selectNode():void ?
  221. ????????????{ ?
  222. ????????????????var?text:String=nextName.text; ?
  223. ????????????????if(text.length>0)?{ ?
  224. ????????????????????var?items:Array=[]; ?
  225. ????????????????????var?list:XMLList=new?XMLList(); ?
  226. ????????????????????list[0]=mytree.dataProvider[0];????????????? ?
  227. ????????????????????searchItems(list,text,items); ?
  228. ????????????????????mytree.selectedItems=items; ?
  229. ????????????????}?else?{ ?
  230. ????????????????????Alert.show("输入查找的文字"); ?
  231. ????????????????} ?
  232. ????????????} ?
  233. ????????????private?function?searchItems(list:XMLList,find:String,items:Array):void?{ ?
  234. ????????????????for(var?i:int=0;i<list.length();i++)?{ ?
  235. ????????????????????var?one:XML=list[i]; ?
  236. ????????????????????var?label:String=one.@foddersortName; ?
  237. ????????????????????if(label!=null?&&?label.indexOf(find)>=0)?{ ?
  238. ????????????????????????items.push(one); ?
  239. ????????????????????} ?
  240. ????????????????????searchItems(one.children(),find,items); ?
  241. ????????????????} ?
  242. ????????????} ?
  243. ???????????? ?
  244. ???????????? ?
  245. ???????????? ?
  246. ????????????protected?function?closeAll():void{ ?
  247. ????????????????mytree.openItems=[]; ?
  248. ???????????????? ?
  249. ????????????} ?
  250. ???????????? ?
  251. ????????????protected?function?openAll():void{ ?
  252. ????????????????mytree.expandChildrenOf(mytree.selectedItem,true); ?
  253. ????????????} ?
  254. ???????????? ?
  255. ???????????? ?
  256. ???????????? ?
  257. ???????????? ?
  258. ????????]]>??
  259. ????</fx:Script>??
  260. ????<fx:Declarations>??
  261. ????????<!--?将非可视元素(例如服务、值对象)放在此处?-->??
  262. ????????<s:RemoteObject?destination="findName"?id="listResult"?result="listResult_resultHandler(event)"/>??
  263. ????</fx:Declarations>??
  264. ????<s:TextInput?id="nextName"?x="432"?y="40"??/>??
  265. ????<mx:Tree?x="30"?y="10"?width="264"?height="600"?id="mytree"??showRoot="false"?labelField="@foddersortName"?></mx:Tree>??
  266. ????<s:Button?x="443"?y="82"?label="增加为哥"?click="addBefore()"/>??
  267. ????<s:Button?x="443"?y="111"?label="增加为弟"?click="addAfter()"/>??
  268. ????<s:Button?x="444"?y="144"?click="addSon()"?label="增加为孩子"/>??
  269. ????<s:Button?x="444"?y="178"?click="editNode()"?label="修改节点"/>??
  270. ????<s:Button?x="444"?y="211"?click="deleteNode()"?label="删除节点"/>??
  271. ????<s:Button?x="443"?y="244"?click="selectNode()"?label="选择节点"/>??
  272. ????<s:Button?x="443"?y="277"?click="closeAll()"?label="全部收缩"/>??
  273. ????<s:Button?x="443"?y="306"?click="openAll()"?label="全部展开"/>??
  274. </s:Group>??
  275. </SPAN>??

?

这里写的是组件形式,在主程序中调用下文件名,如这个叫做FlexTree.mxml,其位于components目录下

那么在主程序中应该这样写

?<components:FlexTree/>

就是这么一小行代码就可以执行主程序显示树了

?

第二:web-info/flex/remoteConfig.xml中关键配置

<destination id="findName" >
???? <properties>
??????? <source>com.jadetrust.test.FindTreeNode</source>
???? </properties>
???? </destination>

?

第三:后台两个主要处理程序,一个是用来查询所有树节点拼装XML的程序FindTreeNode.java

Java代码

?

  1. <SPAN?style="FONT-SIZE:?medium">//把数据库中的无限级联表中数据拼装成一个XML文档 ??
  2. ????public?String?convertDataToXml() ??
  3. ????{ ??
  4. ???????UserService?sf=new?UserService(); ??
  5. ???????List<TCategory>?cates=sf.findCategoriesAll(); ??
  6. ???????System.out.println(cates); ??
  7. ???????List<TCategory>?listTop=sf.findCategoriesTop(); ??
  8. ???????String?treedata="<?xml?version='1.0'?encoding='utf-8'?>n<node?foddersortId='0'?foddersortName='所有分类'>n"; ??
  9. ??????for(TCategory?cate:listTop){ ??
  10. ????????treedata=treedata+"<node?foddersortId='"+cate.getCateId()?+"'?foddersortName='"+cate.getName()+"'>n"; ??
  11. ????????treedata=CreateXmlNode(cates,cate.getCateId(),treedata); ??
  12. ????????treedata=treedata+"</node>n"; ??
  13. ????} ??
  14. ????treedata=treedata+"</node>n"; ??
  15. ???? ??
  16. ??
  17. ????System.out.println(treedata); ??
  18. ????return?treedata; ??
  19. ????} ??
  20. ????/** ?
  21. ????*?递归解析list?–>?Xml ?
  22. ????*/??
  23. ????public?String?CreateXmlNode(List<TCategory>?list,int?nodepid,String?cratedata){ ??
  24. ????for?(int?a=0;a<list.size();a++) ??
  25. ????{ ??
  26. ????TCategory?cate=list.get(a); ??
  27. ???? ??
  28. ????if(cate.getTCategory()==null?||?cate.getTCategory().equals("")){ ??
  29. ?????? ??
  30. ????}else{ ??
  31. ????if?(cate.getTCategory().getCateId()==nodepid){ ??
  32. ????if(cate.getTCategories()!=null){ ??
  33. ????cratedata=cratedata+"<node?foddersortId='"+cate.getCateId()?+"'?foddersortName='"+cate.getName()+"'?parentid='"+cate.getTCategory().getCateId()+"'>n"; ??
  34. ????cratedata=CreateXmlNode(list,cratedata); ??
  35. ????cratedata=cratedata+"</node>n"; ??
  36. ????}else{ ??
  37. ????cratedata=cratedata+"<node?foddersortId='"+cate.getCateId()+"'foddersortName='"+cate.getName()+"'?parentid='"+cate.getTCategory().getCateId()+"'/>n"; ??
  38. ????} ??
  39. ????} ??
  40. ????} ??
  41. ????} ??
  42. ????return?cratedata; ??
  43. ????} ??
  44. ????</SPAN>??

?

还有一个处理增删改的servleet程序

?

Java代码

?

  1. <SPAN?style="FONT-SIZE:?medium">public?void?doPost(HttpServletRequest?request,?HttpServletResponse?response) ??
  2. ????????????throws?ServletException,?IOException?{ ??
  3. ????????System.out.println("执行了树操作。。。。。。。。。。。。。。。"); ??
  4. ????????request.setCharacterEncoding("utf-8"); ??
  5. ?????????String?childName=request.getParameter("editName"); ??
  6. ?????????String?parentId=request.getParameter("parentId"); ??
  7. ?????????String?method=request.getParameter("method"); ??
  8. ????????UserService?sf=new?UserService(); ??
  9. ?????????response.setCharacterEncoding("utf-8"); ??
  10. ?????????try{ ??
  11. ?????????if(method.equals("delete")){ ??
  12. ?????????????System.out.println("此次删除的ID为"+parentId); ??
  13. ??????????????if(parentId!=null){ ??
  14. ??????????????????TCategory?cate1=sf.findById(parentId); ??
  15. ??????????????????System.out.println(cate1); ??
  16. ??????????????????sf.delete(cate1); ??
  17. ??????????????????response.getWriter().write("result=delete"); ??
  18. ??????????????} ??
  19. ????????????? ??
  20. ?????????}else?if(method.equals("update")){ ??
  21. ?????????????System.out.println("此次更新的ID为"+parentId); ??
  22. ?????????????if(childName!=null&&parentId!=null){ ??
  23. ??????????????????TCategory?cate1=sf.findById(parentId); ??
  24. ??????????????????cate1.setName(childName); ??
  25. ??????????????????System.out.println(cate1); ??
  26. ??????????????????sf.update(cate1); ??
  27. ??????????????????response.getWriter().write("result=update"); ??
  28. ?????????????} ??
  29. ?????????}else?if(method.equals("add")){ ??
  30. ??????????????if(childName!=null&&parentId!=null){ ??
  31. ??????????????????TCategory?category=new?TCategory(); ??
  32. ?????????????????????category.setName(childName); ??
  33. ?????????????????????TCategory?cate1=sf.findById(parentId); ??
  34. ?????????????????????category.setTCategory(cate1); ??
  35. ?????????????????????sf.add(category); ??
  36. ?????????????????????Integer?lastId=sf.findLastId(); ??
  37. ?????????????????????response.getWriter().write("result=add;operateId="+lastId); ??
  38. ??????????????} ??
  39. ?? ??
  40. ?????????} ??
  41. ?????????}catch(Exception?e){ ??
  42. ?????????????System.out.println(e.toString()); ??
  43. ??????????????response.getWriter().write("result=error"); ??
  44. ?????????} ??
  45. ????}</SPAN>??

?

第三,就是介绍相关的数据库表的结构了MYSQL

CREATE TABLE `t_category` (
? `name` varchar(255) DEFAULT NULL,
? `parent_id` int(11) DEFAULT NULL,
? `cate_id` int(11) NOT NULL AUTO_INCREMENT,
? PRIMARY KEY (`cate_id`),
? KEY `parent_id` (`parent_id`),
? CONSTRAINT `t_category_ibfk_1` FOREIGN KEY (`parent_id`) REFERENCES `t_category` (`cate_id`)
) ENGINE=InnoDB AUTO_INCREMENT=59 DEFAULT CHARSET=utf8;

?

对应的Category实体类

?

Java代码

?

  1. <SPAN?style="FONT-SIZE:?medium">package?com.jadetrust.dao; ??
  2. ??
  3. import?java.util.ArrayList; ??
  4. import?java.util.HashSet; ??
  5. import?java.util.List; ??
  6. import?java.util.Set; ??
  7. ??
  8. import?javax.persistence.CascadeType; ??
  9. import?javax.persistence.Column; ??
  10. import?javax.persistence.Entity; ??
  11. import?javax.persistence.FetchType; ??
  12. import?javax.persistence.GeneratedValue; ??
  13. import?javax.persistence.Id; ??
  14. import?javax.persistence.JoinColumn; ??
  15. import?javax.persistence.ManyToOne; ??
  16. import?javax.persistence.OneToMany; ??
  17. import?javax.persistence.Table; ??
  18. ??
  19. /** ?
  20. ?*?TCategory?entity.?@author?MyEclipse?Persistence?Tools ?
  21. ?*/??
  22. @Entity??
  23. @Table(name?=?"t_category",?catalog?=?"test") ??
  24. public?class?TCategory?implements?java.io.Serializable?{ ??
  25. ??
  26. ????//?Fields ??
  27. ??
  28. ????@Override??
  29. ????public?String?toString()?{ ??
  30. ????????return?"[?cateId="?+?cateId?+?",?name="?+?name?+?"]"; ??
  31. ????} ??
  32. ??
  33. ????private?Integer?cateId; ??
  34. ????private?TCategory?TCategory; ??
  35. ????private?String?name; ??
  36. ????private?Set<TCategory>?TCategories?=?new?HashSet<TCategory>(0); ??
  37. ??
  38. ????//?Constructors ??
  39. ??
  40. ????/**?default?constructor?*/??
  41. ????public?TCategory()?{ ??
  42. ????} ??
  43. ??
  44. ????/**?full?constructor?*/??
  45. ????public?TCategory(TCategory?TCategory,?String?name,??
  46. ????????????Set<TCategory>?TCategories)?{ ??
  47. ????????this.TCategory?=?TCategory; ??
  48. ????????this.name?=?name; ??
  49. ????????this.TCategories?=?TCategories; ??
  50. ????} ??
  51. ??
  52. ????//?Property?accessors ??
  53. ????@Id??
  54. ????@GeneratedValue??
  55. ????@Column(name?=?"cate_id",?unique?=?true,?nullable?=?false) ??
  56. ????public?Integer?getCateId()?{ ??
  57. ????????return?this.cateId; ??
  58. ????} ??
  59. ??
  60. ????public?void?setCateId(Integer?cateId)?{ ??
  61. ????????this.cateId?=?cateId; ??
  62. ????} ??
  63. ??
  64. ????@ManyToOne(fetch?=?FetchType.LAZY) ??
  65. ????@JoinColumn(name?=?"parent_id") ??
  66. ????public?TCategory?getTCategory()?{ ??
  67. ????????return?this.TCategory; ??
  68. ????} ??
  69. ??
  70. ????public?void?setTCategory(TCategory?TCategory)?{ ??
  71. ????????this.TCategory?=?TCategory; ??
  72. ????} ??
  73. ??
  74. ????@Column(name?=?"name") ??
  75. ????public?String?getName()?{ ??
  76. ????????return?this.name; ??
  77. ????} ??
  78. ??
  79. ????public?void?setName(String?name)?{ ??
  80. ????????this.name?=?name; ??
  81. ????} ??
  82. ??
  83. ????@OneToMany(cascade?=?CascadeType.ALL,?fetch?=?FetchType.LAZY,?mappedBy?=?"TCategory") ??
  84. ????public?Set<TCategory>?getTCategories()?{ ??
  85. ????????return?this.TCategories; ??
  86. ????} ??
  87. ??
  88. ????public?void?setTCategories(Set<TCategory>?TCategories)?{ ??
  89. ????????this.TCategories?=?TCategories; ??
  90. ????} ??
  91. ???? ??
  92. ???? ??
  93. ?????????????????????????????????????? ??
  94. }</SPAN>??

?

第四:具体数据库操作类UserService

Java代码

?

  1. <SPAN?style="FONT-SIZE:?medium">package?com.jadetrust.service.impl; ??
  2. ??
  3. import?java.util.ArrayList; ??
  4. import?java.util.HashMap; ??
  5. import?java.util.List; ??
  6. import?java.util.Map; ??
  7. import?java.util.Set; ??
  8. ??
  9. import?org.hibernate.Session; ??
  10. import?org.hibernate.Transaction; ??
  11. ??
  12. import?com.jadetrust.common.HibernateSessionFactory; ??
  13. import?com.jadetrust.dao.TCategory; ??
  14. ??
  15. public?class?UserService?{ ??
  16. ??
  17. ????public?void?add(TCategory?cate){ ??
  18. ????????Session?session=HibernateSessionFactory.getSession(); ??
  19. ????????Transaction?tc=session.beginTransaction(); ??
  20. ????????session.save(cate); ??
  21. ????????tc.commit(); ??
  22. ????????session.close(); ??
  23. ???????? ??
  24. ????} ??
  25. ????public?void?delete(TCategory?cate){ ??
  26. ????????Session?session=HibernateSessionFactory.getSession(); ??
  27. ????????Transaction?tc=session.beginTransaction(); ??
  28. ????????session.delete(cate); ??
  29. ????????tc.commit(); ??
  30. ????????session.close(); ??
  31. ????} ??
  32. ????public?void?update(TCategory?cate){ ??
  33. ????????Session?session=HibernateSessionFactory.getSession(); ??
  34. ????????Transaction?tc=session.beginTransaction(); ??
  35. ????????session.merge(cate); ??
  36. ????????tc.commit(); ??
  37. ????????session.close(); ??
  38. ????} ??
  39. ????public?TCategory?findById(String?id){ ??
  40. ????????String?hql?=?"from?TCategory?where?cateId=:id"; ??
  41. ????????return?(TCategory)HibernateSessionFactory.getSession().createQuery(hql).setString("id",?id).uniqueResult(); ??
  42. ????} ??
  43. ???? ??
  44. ????public?List<TCategory>?findChildCategories(String?id)?{ ??
  45. ????????if(id.equals("cate_root")||id==null||id.equals("?")){ ??
  46. ?????????????return?findCategoriesTop(); ??
  47. ????????}else{ ??
  48. ????????????return?HibernateSessionFactory.getSession(). ??
  49. ????????????createQuery("from?TCategory?cate?where?cate.TCategory.cateId=:id").setString("id",?id).list(); ??
  50. ????????} ??
  51. ????} ??
  52. ????public?List<TCategory>?findCategoriesTop()?{ ??
  53. ????????System.out.println("查询顶级父目录................."); ??
  54. ????????String?hql?=?"select?distinct?cate,childs?from?TCategory?cate?left?join?fetch?cate.TCategories?childs?where?cate.TCategory.cateId?is?null"; ??
  55. ????????return?HibernateSessionFactory.getSession().createQuery(hql).list(); ??
  56. ????} ??
  57. ????public?List<TCategory>?findCategoriesAll()?{ ??
  58. ????????System.out.println("查询顶级父目录................."); ??
  59. ????????String?hql?=?"from?TCategory"; ??
  60. ????????return?HibernateSessionFactory.getSession().createQuery(hql).list(); ??
  61. ????} ??
  62. ????public?List<Map<String,String>>?findNameById(String?id){ ??
  63. ????????List<Map<String,String>>?names=new?ArrayList<Map<String,String>>(); ??
  64. ???????? ??
  65. ????????UserService?sf=new?UserService(); ??
  66. ????????Set<TCategory>?cates=sf.findById(id).getTCategories(); ??
  67. ????????for(TCategory?cate:cates){ ??
  68. ????????????Map<String,String>?maps=new?HashMap<String,String>(); ??
  69. ????????????maps.put("CATALOGSID",?cate.getCateId().toString()); ??
  70. ????????????maps.put("CATALOGNAME",?cate.getName()); ??
  71. ????????????names.add(maps); ??
  72. ????????} ??
  73. ????????return?names; ??
  74. ???????? ??
  75. ????} ??
  76. ???? ??
  77. ????public?Integer?findLastId(){ ??
  78. ????????String?hql="select?max(cateId)?from?TCategory"; ??
  79. ????????return?(Integer)HibernateSessionFactory.getSession().createQuery(hql).uniqueResult(); ??
  80. ????} ??
  81. }</SPAN>??

?

这个示例只用了Hibernate,至于这个HibernateSessionFactory,它是利用MyEclipse反转数据库自动生成的,如果不知道可以参考我之前关于数据库反转的文章

?

相关视图



?


?


?

这个是选择节点,输入插入内容,点击选择节点按钮

?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读