Mybatis之树形结构查询

这篇博客介绍了如何在Mybatis中实现树形结构的数据查询。从实体类的设计、mapper层接口定义到XML文件的具体配置,详细展示了单个参数查询及多个参数查询的转换方法。
摘要由CSDN通过智能技术生成

根据之前业务需求,查询使用的是懒查询,现在需要一次性查出树的所有数据,懒查询就不再适用,直接上代码:

具体格式如下:

[
    {
      "themeid": 60,
      "themename": "一级",
      "themecode": "01640401186062",
      "themelevel": 1,
      "parentthemeId": 0,
      "themetype": "1",
      "tablename": "",
      "status": 1,
      "zjm": "yj",
      "createtime": [
        2022,
        5,
        11,
        13,
        12,
        52
      ],
      "remark1": null,
      "remark2": null,
      "remark3": null,
      "list": [
        {
          "themeid": 61,
          "themename": "二级",
          "themecode": "601640401210963",
          "themelevel": 2,
          "parentthemeId": 60,
          "themetype": "1",
          "tablename": "",
          "status": 1,
          "zjm": "二级",
          "createtime": [
            2022,
            5,
            11,
            13,
            12,
            52
          ],
          "remark1": null,
          "remark2": null,
          "remark3": null,
          "list": []
            }
]

具体结构:

实体类:

@Data
public class MetaThemeTree implements Serializable {
    /**
     * 主键ID
     */
    @ApiModelProper
MyBatis查询树形结构,可以通过使用递归的方式来实现。具体步骤如下: 1. 定义一个实体类,包含树形结构节点的id、父节点id和节点名称等属性。 2. 编写Mapper.xml文件,使用递归查询方式来获取树形结构数据。 3. 在Mapper.xml文件中定义一个递归查询语句,通过连接查询子节点和父节点来获取树形结构数据。 4. 在Mapper.xml文件中定义一个查询所有节点的语句,用于查询整个树形结构的数据。 5. 在Java代码中调用Mapper接口中定义的方法来查询树形结构数据。 以下是一个简单的例子,展示如何在MyBatis查询树形结构: 1. 定义实体类TreeNode: ```java public class TreeNode { private Long id; private Long parentId; private String name; // getter和setter方法 } ``` 2. 编写Mapper.xml文件: ```xml <!-- 递归查询语句 --> <select id="selectTreeNodes" resultMap="TreeNodeMap"> with recursive cte(id, parent_id, name) as ( select id, parent_id, name from tree_node where parent_id is null union all select tn.id, tn.parent_id, tn.name from tree_node tn join cte on tn.parent_id = cte.id ) select * from cte; </select> <!-- 查询所有节点语句 --> <select id="selectAllTreeNodes" resultMap="TreeNodeMap"> select * from tree_node; </select> <resultMap id="TreeNodeMap" type="TreeNode"> <id property="id" column="id"/> <result property="parentId" column="parent_id"/> <result property="name" column="name"/> </resultMap> ``` 3. 在Java代码中调用Mapper接口中定义的方法来查询树形结构数据: ```java public interface TreeNodeMapper { List<TreeNode> selectTreeNodes(); List<TreeNode> selectAllTreeNodes(); } // 调用方式 SqlSession sqlSession = sqlSessionFactory.openSession(); TreeNodeMapper mapper = sqlSession.getMapper(TreeNodeMapper.class); List<TreeNode> treeNodes = mapper.selectTreeNodes(); List<TreeNode> allTreeNodes = mapper.selectAllTreeNodes(); sqlSession.close(); ``` 通过以上步骤,我们可以在MyBatis中轻松地查询树形结构数据。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值