mybatis 获取树形结构体
·
package mybatis.pojo;
import java.util.List;
public class Menu {
private Integer id;
private String name;
private String url;
private Integer parent_id;
private List<Menu> childMenu;
public Menu() {
}
public Menu(Integer id, String name, String url, Integer parent_id, List<Menu> childMenu) {
this.id = id;
this.name = name;
this.url = url;
this.parent_id = parent_id;
this.childMenu = childMenu;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public Integer getParent_id() {
return parent_id;
}
public void setParent_id(Integer parent_id) {
this.parent_id = parent_id;
}
public List<Menu> getChildMenu() {
return childMenu;
}
public void setChildMenu(List<Menu> childMenu) {
this.childMenu = childMenu;
}
@Override
public String toString() {
return "Menu{" +
"id=" + id +
", name='" + name + '\'' +
", url='" + url + '\'' +
", parent_id=" + parent_id +
", childMenu=" + childMenu +
'}';
}
}
public interface MenuMapper {
List<Menu> selectAllTree();
}
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="mybatis.mapper.MenuMapper">
<resultMap id="treeVoMap" type="mybatis.pojo.Menu">
<id column="id" property="id" jdbcType="INTEGER" />
<result column="name" property="name" jdbcType="VARCHAR" />
<result column="url" property="url" jdbcType="VARCHAR" />
<result column="parent_id" property="parent_id" jdbcType="INTEGER" />
<collection property="childMenu" ofType="mybatis.pojo.Menu"
column="id" select="findTreeByPid"/>
</resultMap>
<!--级联查询父菜单-->
<select id="selectAllTree" resultMap="treeVoMap" >
select * from m_menu where parent_id = 0
</select>
<!--级联查询子菜单-->
<select id="findTreeByPid" resultMap="treeVoMap" >
select * from m_menu where parent_id = #{id}
</select>
</mapper>
@Test
public void test03() throws IOException {
SqlSession sqlSession = SqlSeesionUtils.getSqlSession();
MenuMapper mapper = sqlSession.getMapper(MenuMapper.class);
try {
List<Menu> menu = mapper.selectAllTree();
String str =JSON.toJSONString(menu);;
System.out.println(str);
} finally {
sqlSession.close();
}
}
源代码地下如下:
建表sql如下:
/*
Navicat MySQL Data Transfer
Source Server : mysql
Source Server Version : 50626
Source Host : localhost:3306
Source Database : test
Target Server Type : MYSQL
Target Server Version : 50626
File Encoding : 65001
Date: 2022-07-31 15:16:42
*/
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for m_menu
-- ----------------------------
DROP TABLE IF EXISTS `m_menu`;
CREATE TABLE `m_menu` (
`id` int(11) DEFAULT NULL,
`name` varchar(255) DEFAULT NULL,
`url` varchar(255) DEFAULT NULL,
`parent_id` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of m_menu
-- ----------------------------
INSERT INTO `m_menu` VALUES ('1', '系统设置', '/1', '0');
INSERT INTO `m_menu` VALUES ('1001', '菜单设置', '/1001', '1');
INSERT INTO `m_menu` VALUES ('1002', '权限设置', '/1002', '1');
INSERT INTO `m_menu` VALUES ('2', '报表', '/2', '0');
INSERT INTO `m_menu` VALUES ('2001', '销售报表', '/2001', '2');
INSERT INTO `m_menu` VALUES ('2002', '业绩报表', '/2002', '2');
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)