最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mybatis遞歸 一對(duì)多的實(shí)現(xiàn)方法示例

 更新時(shí)間:2018年08月07日 08:47:25   作者:陳灬大灬海  
這篇文章主要給大家介紹了關(guān)于mybatis遞歸 一對(duì)多實(shí)現(xiàn)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

前言

今天需要做一個(gè)功能,根據(jù)專業(yè),有不同的章節(jié),章節(jié)下面有對(duì)應(yīng)的習(xí)題,

由于只有這么兩級(jí),可以不用使用遞歸,直接查詢父集,之后foreach查詢子集放入對(duì)應(yīng)的list集合。

雖然實(shí)現(xiàn)了,感覺畢竟,太low。

有同事跟我說(shuō)可以使用mybatis的遞歸實(shí)現(xiàn),就學(xué)習(xí)了下。

對(duì)應(yīng)的bean里面需要有對(duì)應(yīng)的list<bean> lists的引用。

直接上代碼

對(duì)應(yīng)的sql語(yǔ)句

CREATE TABLE `goods_category` (
 `goodscateid` int(11) NOT NULL AUTO_INCREMENT,
 `name` varchar(255) DEFAULT NULL,
 `parentid` int(11) DEFAULT NULL,
 `description` varchar(255) DEFAULT NULL,
 `displayorder` int(11) DEFAULT NULL,
 `commissionrate` double DEFAULT NULL,
 `enabled` int(11) DEFAULT NULL,
 PRIMARY KEY (`goodscateid`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;

/*Data for the table `goods_category` */
insert into `goods_category`(`goodscateid`,`name`,`parentid`,`description`,`displayorder`,`commissionrate`,`enabled`) values (1,'java',0,'111',NULL,NULL,NULL),(2,'spring',1,'222',NULL,NULL,NULL),(3,'springmvc',1,'333',NULL,NULL,NULL),(4,'struts',1,'444',NULL,NULL,NULL),(5,'jdbc',0,'555',NULL,NULL,NULL),(6,'hibernate',5,'666',NULL,NULL,NULL),(7,'mybatis',5,'777',NULL,NULL,NULL),(8,'jdbctemplate',5,'888',NULL,NULL,NULL),(9,'beanfactory',3,'999',NULL,NULL,NULL),(10,'factorybean',3,'000',NULL,NULL,NULL);

實(shí)體類

@JsonIgnoreProperties({"displayorder","commissionrate","enabled"})
public class GoodsCategoryVo {
 private Integer goodscateid;
 private String name;
 private Integer parentid;
 private String description;
 private Integer displayorder;
 private Double commissionrate;
 private Integer enabled;
 private List<GoodsCategoryVo> catelist;
get 。。。 set。。。 tostring。。。

dao層

public interface GoodsMapper {
 List<GoodsCategoryVo> getCategory(Integer pid);
}

mapper.xml

<resultMap id="getSelf" type="com.bscc.beans.GoodsCategoryVo">
  <id column="goodscateid" property="goodscateid"></id>
  <result column="name" property="name"></result>
  <collection property="catelist" select="getCategory"
   column="goodscateid"></collection>
  <!--查到的cid作為下次的pid -->
 </resultMap>

 <select id="getCategory" resultMap="getSelf">
  select * from goods_category where parentid=#{pid}
  ORDER BY displayorder,goodscateid
 </select>

之后直接訪問(wèn)對(duì)應(yīng)的方法,即可查詢出來(lái)

@RequestMapping("/getGoodsList")
 @ResponseBody
 public List<GoodsCategoryVo> getGoodsList(){
  // pid指定為0
  List<GoodsCategoryVo> list = goodsMapper.getCategory(0);
  return list;
 }

結(jié)果,可以使用json在線工具 ,也可以使用這個(gè)工具

[
 {
  "goodscateid": 1,
  "name": "java",
  "parentid": 0,
  "description": "111",
  "catelist": [
   {
    "goodscateid": 2,
    "name": "spring",
    "parentid": 1,
    "description": "222",
    "catelist": []
   },
   {
    "goodscateid": 3,
    "name": "springmvc",
    "parentid": 1,
    "description": "333",
    "catelist": [
     {
      "goodscateid": 9,
      "name": "beanfactory",
      "parentid": 3,
      "description": "999",
      "catelist": []
     },
     {
      "goodscateid": 10,
      "name": "factorybean",
      "parentid": 3,
      "description": "000",
      "catelist": []
     }
    ]
   },
   {
    "goodscateid": 4,
    "name": "struts",
    "parentid": 1,
    "description": "444",
    "catelist": []
   }
  ]
 },
 {
  "goodscateid": 5,
  "name": "jdbc",
  "parentid": 0,
  "description": "555",
  "catelist": [
   {
    "goodscateid": 6,
    "name": "hibernate",
    "parentid": 5,
    "description": "666",
    "catelist": []
   },
   {
    "goodscateid": 7,
    "name": "mybatis",
    "parentid": 5,
    "description": "777",
    "catelist": []
   },
   {
    "goodscateid": 8,
    "name": "jdbctemplate",
    "parentid": 5,
    "description": "888",
    "catelist": []
   }
  ]
 }
]

mybatis遞歸就是這么的簡(jiǎn)單。

說(shuō)下mybatis一對(duì)多實(shí)現(xiàn)

對(duì)應(yīng)的bean

public class Dept {
 private Integer id;
 private String deptName;
 private String locAdd;
 private List<Emp> emps
@JsonIgnoreProperties("dept")
public class Emp {
 private Integer id;
 private String name;
 private Dept dept;

dao層

public interface DeptMapper {
 public Dept getDeptById(Integer id);
}
public interface EmpMapper {
 public Emp getEmpByDeptId(Integer deptId); 
}

mapper.xml文件

<mapper namespace="com.bscc.mapper.DeptMapper">
 <resultMap id="DeptResultMap" type="com.bscc.beans.Dept">
 <id property="id" column="id"/>
 <result property="deptName" column="deptName"/>
 <result property="locAdd" column="locAdd"/>
 <!-- private List<Emp> emps; column="id"寫被集合對(duì)象主鍵,select按照外鍵鍵查詢,通過(guò)deptid查出emp給dept--> 
 <collection property="emps" column="id" ofType="Emp" select="com.bscc.mapper.EmpMapper.getEmpByDeptId"/>
 </resultMap>
 <select id="getDeptById" parameterType="Integer" resultMap="DeptResultMap">
  select * from tbl_dept where id=#{id}
 </select>
</mapper>
<mapper namespace="com.bscc.mapper.EmpMapper">
 <resultMap id="EmpResultMap" type="com.bscc.beans.Emp">
 <id property="id" column="id"/>
 <result property="name" column="name"/>
 </resultMap>
 <select id="getEmpByDeptId" parameterType="Integer" resultMap="EmpResultMap">
 select * from tbl_emp where deptId=#{deptId}
 </select>
</mapper>

對(duì)應(yīng)的controller方法

@RequestMapping("/getDeptById")
 @ResponseBody
 public Dept getDeptById() {
  Dept deptById = deptMapper.getDeptById(1);
  return deptById;
 }

無(wú)非就是比簡(jiǎn)單查詢復(fù)雜一些罷了。

代碼目錄

OK?。?!

對(duì)應(yīng)的github地址

https://github.com/chywx/MavenProject6oneToMany (本地下載

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。

相關(guān)文章

  • 詳解lombok @Getter @Setter 使用注意事項(xiàng)

    詳解lombok @Getter @Setter 使用注意事項(xiàng)

    這篇文章主要介紹了詳解lombok @Getter @Setter 使用注意事項(xiàng),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • 利用MyBatis進(jìn)行不同條件的like模糊查詢的方法

    利用MyBatis進(jìn)行不同條件的like模糊查詢的方法

    這篇文章主要介紹了利用MyBatis進(jìn)行不同條件的like模糊查詢,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08
  • Java字符串如何轉(zhuǎn)化date

    Java字符串如何轉(zhuǎn)化date

    Java字符串轉(zhuǎn)換為Date對(duì)象,通常需要使用SimpleDateFormat類,該類提供了日期格式化和解析的方法,但需要注意日期格式模式的選擇、異常處理和線程安全性
    2025-02-02
  • java實(shí)現(xiàn)ModbusCRC16校驗(yàn)的示例代碼

    java實(shí)現(xiàn)ModbusCRC16校驗(yàn)的示例代碼

    本文介紹了使用Java實(shí)現(xiàn)ModbusCRC16校驗(yàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-11-11
  • ireport數(shù)據(jù)表格報(bào)表的簡(jiǎn)單使用

    ireport數(shù)據(jù)表格報(bào)表的簡(jiǎn)單使用

    這篇文章給大家介紹了如何畫一個(gè)報(bào)表模板,這里介紹下畫表格需要用到的組件,文中通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2021-10-10
  • Spring與Hibernate整合事務(wù)管理的理解

    Spring與Hibernate整合事務(wù)管理的理解

    這篇文章主要介紹了Spring與Hibernate整合事務(wù)管理的理解的相關(guān)資料,需要的朋友可以參考下
    2016-09-09
  • java數(shù)據(jù)結(jié)構(gòu)基礎(chǔ):循環(huán)鏈表和棧

    java數(shù)據(jù)結(jié)構(gòu)基礎(chǔ):循環(huán)鏈表和棧

    這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)之循環(huán)鏈表、棧的實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了Java數(shù)據(jù)結(jié)構(gòu)中循環(huán)鏈表、棧、的功能、定義及使用方法,需要的朋友可以參考下
    2021-08-08
  • java使用JMF實(shí)現(xiàn)音樂(lè)播放功能

    java使用JMF實(shí)現(xiàn)音樂(lè)播放功能

    這篇文章主要為大家詳細(xì)介紹了java使用JMF實(shí)現(xiàn)音樂(lè)播放的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • Java設(shè)計(jì)模式之橋接模式詳解(Bridge Pattern)

    Java設(shè)計(jì)模式之橋接模式詳解(Bridge Pattern)

    橋接模式是一種結(jié)構(gòu)型設(shè)計(jì)模式,旨在將抽象部分與其實(shí)現(xiàn)部分分離,從而使兩者可以獨(dú)立地變化,橋接模式通過(guò)組合關(guān)系代替繼承關(guān)系,將抽象和實(shí)現(xiàn)解耦,使代碼更具擴(kuò)展性和維護(hù)性
    2025-02-02
  • Java實(shí)現(xiàn)文件分割和文件合并實(shí)例

    Java實(shí)現(xiàn)文件分割和文件合并實(shí)例

    本篇文章主要介紹了Java實(shí)現(xiàn)文件分割和文件合并實(shí)例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-08-08

最新評(píng)論

衡阳县| 北安市| 霸州市| 普安县| 阆中市| 班戈县| 湾仔区| 商丘市| 河西区| 北宁市| 巴林右旗| 江陵县| 漯河市| 望城县| 洛宁县| 苍南县| 卓资县| 迭部县| 韶关市| 扬州市| 东光县| 师宗县| 时尚| 苗栗市| 九江市| 墨脱县| 汽车| 政和县| 江永县| 嘉义市| 上犹县| 屯门区| 平邑县| 天等县| 天柱县| 广河县| 灵石县| 宜都市| 白玉县| 平邑县| 谷城县|