從mysql查詢機構表用java解析成機構樹
資料庫表:
對應實體:
@Entity
@Table(name = "t_sys_org")
public class SysOrgDTO {
private Long id;
private String name;
private Long parentId;
@Transient
private List<SysOrgDTO> childOrg = new ArrayList<SysOrgDTO>();
}
Controller層:
@RestController
@RequestMapping ("/api/sys/org")
public class OrgController extends BaseController{
@Autowired
private OrgBO orgBO;
/**
*機構樹
* @param orgId
* @return
*/
@RequestMapping(value = "/getOrgTree",method = RequestMethod.GET)
@ApiOperation(value = "機構樹",notes="機構樹")
@ApiImplicitParams({
@ApiImplicitParam (name = "orgId",value = "機構id",dataType = "Long",paramType = "query")
})
@ApiResponses(value = {@ApiResponse(code = 200,message = "機構樹")})
public JsonMessage<String> getOrgTree(@RequestParam(value = "orgId",required = false) Long orgId){
return JsonMessage.successed(JsonUtil.toDefaultJSONString(orgBO.generateTreeNode(orgId),SysOrgDTO.getDefaultJsonFilter()));
}
}
Service層:
@Service
public class OrgBO {
@Autowired
private SysOrgBO sysOrgBO;
/**
* 生成機構樹
* @param rootId
* @return
*/
public List<SysOrgDTO> generateTreeNode(Long rootId){
List<SysOrgDTO> root = new ArrayList<SysOrgDTO>();
if (rootId != null){
//找到所有一級機構
root = sysOrgBO.findAll(new NumberCondition("id",rootId,NumberCondition.Handler.EQUAL));
}else {
root = sysOrgBO.findAll(new NumberCondition("parentId",0,NumberCondition.Handler.EQUAL));
}
//為一級機構設定子機構
for(SysOrgDTO org:root){
org.setChildOrg(getChildNode(org.getId()));
}
return root;
}
/**
* 根據父id查詢所有子機構
* @param nodeId
* @return
*/
public List<SysOrgDTO> getChildNode(Long nodeId){
//根據父id查詢子機構
List<SysOrgDTO> childNodeList = sysOrgBO.findAll(new NumberCondition("parentId",nodeId,NumberCondition.Handler.EQUAL));
//子機構下的子機構
for(SysOrgDTO org:childNodeList){
org.setChildOrg(getChildNode(org.getId()));//遞迴
}
if (childNodeList.size() == 0){
return null;
}
return childNodeList;
}
}
這樣返回的是一個list集合。
相關推薦
從mysql查詢機構表用java解析成機構樹
資料庫表: 對應實體: @Entity @Table(name = "t_sys_org") public class SysOrgDTO { private Long id;
從Mysql查詢的結果,寫入txt檔案中,每個欄位用|分隔,下一條資料要換行
1.首先建立檔案 public static boolean createFile(String fileName, List<?> dtoList, Class<?> clazz, String path) { logger.debug("createF
mysql 查詢鎖表
時間 name log 了吧 不能 tro ble code 邏輯 1)使用情景“判斷通過後寫入數據庫”,這個一般是不會有問題的, 但並發訪問的時候就不太好搞。因為寫入(insert)是需要時間的,假設現在有兩個並發請求,(假設第一個訪問是最後一個符合條件的寫入請求,按照邏
Navicat從mysql導完整表(包括表結構與其中數據)到另一臺機器的mysql中
網上 操作 數據表 tail 研究 新的 完成 新建 文件 碰到一個需要把數據表從本地mysql導入到服務器的mysql中的問題,在網上搜了下,沒有發現說的很清楚的操作,很多操作都是利用命令行來實現,自己研究了一下,發現Navicat有自己的導入導出功能,可以比較容易的實現
mysql查詢哪個表資料量最大
use information_schema;select table_name,table_rows from tables where table_schema='cargo_new' order by table_rows desc limit 3 -- cargo_new (選擇資料庫)
mysql查詢資料庫表
使用sql語句查詢mysql指定表字段。 可以方便整理資料庫表的說明文件。 我在工作中整理了部分sql作為記錄。 可以用在以後的mysql文件匯出工具裡。 以下為具體內容: 使用sql查詢指定資料庫表名和表說明。 SELECT TABLE_NAME as tabl
使用MySQL查詢一個表的多列資料資訊,其中一列使用Max(),存在的坑
1、背景:查詢資料庫表資料,根據指定條件篩選出滿足條件的資料,此例返回滿足條件的兩條資料 2、需求:想在滿足條件的多條資料中篩選出其中fversion列值最大對應的完整記錄 3、實現: 3.1、在指定欄位上使用Max(),產生問題-造成查詢的資料錯亂,返回的資訊只有fversion列值滿足條件,f
mybatis+springmvc出現無法從mysql查詢中文資料問題
之前簡單弄一個從資料庫查詢的jsp頁面發現查詢中文資料時報編碼錯誤,簡單來說解決方法有幾種: 一.資料庫連線問題 我用的是jdbc.properties,正確的url: jdbc.url=jdbc:mysql://localhost:3306/db_studen
詳細步驟!!!idea+springboot+mybatis+jsp+bootstrap實現從mysql查詢出資料並顯示(原始碼)
實現效果: 資料庫對應資料: 開發環境: IntelliJ IDEA 2017.2.5 x64 java version "1.8.0_151" x64 mysql 6.0.11-alpha-community x64 步驟: 1.建立工程: file--new-
一個用JAVA解析Excel的程式舉例
實體類 public class ali { private String FSTR_SCATSID; private String FSTR_DESC; private String FSTR_DATE; private String NUM_TI
一個用JAVA解析TXT格式文字文件的程式舉例
實體類 package txt; public class AliDataRecord { private String FSTR_SCATSID; private String FSTR_DESC; private String FSTR_DATE;
MySQL 查詢一個表中存在,卻不在另外一個表中存在的資料
介紹我瞭解的兩種方法:(1) NOT IN ,簡單易懂,相對效率低:SELECT DISTINCT A.ID FROM A WHERE A.ID NOT IN (SELECT ID FROM B)(2)速度快,效率高,但是邏輯理解有點複雜:SELECT * FROM B WH
MYSQL查詢A表不在B表中的記錄
A表的NAME欄位和B表的NAME欄位相同,查詢 A表中NAME項不在B表中的NAME項的記錄。 select name from A where name not in (select name from B) 或者 select A.NAME from A l
mysql查詢一個表中欄位相同的資料
SELECT * FROM `education_student_tmp_from_crp` a WHERE (a.stu_no) IN ( SELECT stu_no FROM
mysql 批量修改表中欄位資料成不同的值 用一個表更新另一個表的方法
首先mysql更新資料的某個欄位,一般這樣寫: UPDATE mytable SET myfield = 'value' WHERE other_field = 'other_value'; 也可以這樣用in指定要更新的記錄: UPDATE mytable SET myfield = 'value
Jvm之用java解析class檔案
前言: 身為一個java程式設計師,怎麼能不瞭解JVM呢,倘若想學習JVM,那就又必須要了解Class檔案,Class之於虛擬機器,就如魚之於水,虛擬機器因為Class而有了生命。《深入理解java虛擬機器》中花了一整個章節來講解Class檔案,可是看完後,一直都還是迷
mysql 查詢兩表使用join on和使用子查詢in的比較
有兩個表 promotion_full_reduction base_user_favorite_item 現在要查詢使用者收藏的商品中參加促銷了的商品個數,有兩種寫法,一種是使用in子查詢: SELECT COUNT(1) FROM pr
mysql查詢一個表自增主鍵的下一個主鍵值:
Mysql的INFORMATION_SCHEMA資料庫包含了一些表和檢視,提供了訪問資料庫元資料的方式。 元資料是關於資料的資料,如資料庫名或表名,列的資料型別,或訪問許可權等。有些時候用於表述該資訊的其他術語包括“資料詞典”和“系統目錄”。 下面對一些重要的資料字典表做一些說明:SCHEMATA表:提供了關
MySQL查詢資料庫表是否存在
SELECT COUNT(1) FROM information_schema.tables WHERE table_schema='shihou_event' AND table_name = tableName information_schema資料庫是MySQL自
linux用java解析html出現中文亂碼問題
一,用java解析html文件遇到的問題 在windows環境下用BufferedReader讀取utf-8的html檔案時,沒有任何亂碼問題,但是在linux環境下讀取的時候就出現亂碼了,不知道什麼問題引起的。 後來用FileInputStream讀取,用new Str