Heim > Java > javaLernprogramm > So implementieren Sie eine Baumstrukturabfrage mit Springboot + Mybatis Plus

So implementieren Sie eine Baumstrukturabfrage mit Springboot + Mybatis Plus

WBOY
Freigeben: 2023-05-21 17:01:06
nach vorne
2541 Leute haben es durchsucht

Hintergrund

Im tatsächlichen Entwicklungsprozess ist es häufig erforderlich, den Knotenbaum abzufragen und die Liste der untergeordneten Knoten basierend auf dem angegebenen Knoten abzurufen Der Baum ist für den Notfall unten aufgeführt.

Nutzungsszenarien

kann für Datenstrukturen mit hierarchischen Beziehungen wie Systemabteilungsorganisationen, Produktklassifizierungen, Stadtbeziehungen usw. verwendet werden; #🎜 🎜#Designidee


Rekursives Modell


Das heißt, Wurzelknoten, Zweigknoten, Blattknoten, das Datenmodell ist wie folgt :

# 🎜🎜#

idcodenameparent_code# 🎜🎜##🎜 🎜 #110000PC# 🎜🎜#220000手机0#🎜 🎜## ?? 🎜##🎜 🎜##🎜 🎜# 410002HP. NOTEBOOK10000#🎜🎜 ##🎜🎜 #5#🎜 🎜# 1000101 Implementierungscode#🎜 🎜## 🎜 🎜#Tabellendaten
INSERT INTO `tree_table`(`code`, `name`, `parent_code`) VALUES ("10000", "电脑", "0");
INSERT INTO `tree_table`(`code`, `name`, `parent_code`) VALUES ("10001", "联想笔记本", "10000");
INSERT INTO `tree_table`(`code`, `name`, `parent_code`) VALUES ("10002", "惠普笔记本", "10000");
INSERT INTO `tree_table`(`code`, `name`, `parent_code`) VALUES ("1000101", "联想拯救者", "10001");
INSERT INTO `tree_table`(`code`, `name`, `parent_code`) VALUES ("1000102", "联想小新系列", "10001");
Nach dem Login kopieren
#🎜 🎜#
@Data
@TableName("tree_table")
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class TreeTable {

    /**
     * 主键ID
     */
    @TableId(type = IdType.AUTO)
    private Integer id;
    /**
     * 编码
     */
    private String code;
    /**
     * 名称
     */
    private String name;
    /**
     * 父级编码
     */
    private String parentCode;

    /**
     * 子节点
     */
    @TableField(exist = false)
    private List<TreeTable> childNode;
}
Nach dem Login kopieren
mybatismapper
public interface TreeTableMapper extends BaseMapper<TreeTable> {
    /**
     * 获取树形结构数据
     *
     * @return 树形结构
     */
    public List<TreeTable> noteTree();
}
Nach dem Login kopieren
#🎜 🎜## 🎜🎜 #noteTree: Alle übergeordneten Knotendaten abrufen; Wenn Sie Mapper-XML bei Verwendung von mybatis nicht laden können, muss die folgende Konfiguration zu pom.xml hinzugefügt werden:
# 🎜🎜# 0
Lenovo #🎜🎜 ##🎜 🎜# 1000102 Lenovo Xiaoxin-Serie 10001
Tabellenstruktur
CREATE TABLE `tree_table` (
  `id` int NOT NULL AUTO_INCREMENT COMMENT "主键ID",
  `code` varchar(10) NOT NULL COMMENT "编码",
  `name` varchar(20) NOT NULL COMMENT "名称",
  `parent_code` varchar(10)  NOT NULL COMMENT "父级编码",
  PRIMARY KEY (`id`) USING BTREE
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT="树形结构测试表";
Nach dem Login kopieren
Entity
xml
<?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="com.springboot.example.mysqltree.mapper.TreeTableMapper">
    <resultMap id="BaseResultMap" type="com.springboot.example.mysqltree.model.entity.TreeTable">
        <result column="id" property="id"/>
        <result column="code" property="code"/>
        <result column="name" property="name"/>
        <result column="parent_code" property="parentCode"/>
    </resultMap>
    <resultMap id="NodeTreeResult" type="com.springboot.example.mysqltree.model.entity.TreeTable"
               extends="BaseResultMap">
        <collection property="childNode" column="code" ofType="com.springboot.example.mysqltree.model.entity.TreeTable"
                    javaType="java.util.ArrayList" select="nextNoteTree">

        </collection>
    </resultMap>

    <sql id="Base_Column_List">
                id,
                code,
                `name`,
                parent_code
    </sql>
   
    <select id="nextNoteTree" resultMap="NodeTreeResult">
        select
        <include refid="Base_Column_List"/>
        from tree_table
        where parent_code=#[code]
    </select>
    <select id="noteTree" resultMap="NodeTreeResult">
        select
        <include refid="Base_Column_List"/>
        from tree_table
        where parent_code="0"
    </select>
</mapper>
Nach dem Login kopieren
nextNoteTree: Schleife, um untergeordnete Knotendaten abzurufen, bis der Blattknoten endet; 🎜🎜## 🎜🎜#Spalte: Der Spaltenname der zugehörigen Tabelle; 🎜🎜#
@Slf4j
@Component
public class TreeTableCommandLineRunner implements CommandLineRunner {
    @Resource
    private TreeTableMapper treeTableMapper;

    @Override
    public void run(String... args) throws Exception {
        log.info(JSONUtil.toJsonPrettyStr(treeTableMapper.noteTree()));
    }
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonSo implementieren Sie eine Baumstrukturabfrage mit Springboot + Mybatis Plus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage