使用mybatis进行数据库中同一张表中的父子类别查询

同一张表中的父子查询

表中parent_id与id对应
在这里插入图片描述

Category.java
package com.meutech.entity;

import java.util.List;

public class Category {
    private Integer id;
    private Integer parent_id;
    private String name;
    private List<Category> childcategory;

    public List<Category> getChildcategory() {
        return childcategory;
    }

    public void setChildcategory(List<Category> childcategory) {
        this.childcategory = childcategory;
    }

    @Override
    public String toString() {
        return "Category{" +
                "id=" + id +
                ", parent_id=" + parent_id +
                ", name='" + name + '\'' +
                ", childcategory=" + childcategory +
                '}';
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public Integer getParent_id() {
        return parent_id;
    }

    public void setParent_id(Integer parent_id) {
        this.parent_id = parent_id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Category() {
    }
}

Category.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.meutech.mapper.Categorymapper">
    <resultMap id="Base_category" type="com.meutech.entity.Category">
        <id column="pid" property="id"/>
        <result column="ppia" property="parent_id"/>
        <result column="pname" property="name"/>
        <collection property="childcategory" ofType="com.meutech.entity.Category">
            <id column="cid" property="id"/>
            <result column="cpia" property="parent_id"/>
            <result column="cname" property="name"/>
        </collection>
    </resultMap>
   <select id="Listcategory" resultMap="Base_category">
       select p.id pid,p.parent_id ppid,p.name pname,c.id cid,c.parent_id cpid,c.name cname from cmt_category p inner join cmt_category c on p.id=c.parent_id
   </select>



</mapper>
Categorymapper.java
package com.meutech.mapper;

import com.meutech.entity.Category;

import java.util.List;

public interface Categorymapper {
    List<Category> Listcategory();
}

Categorytest.java
package com.meutech.test;

import com.meutech.entity.Category;
import com.meutech.mapper.Categorymapper;
import org.apache.ibatis.io.ResolverUtil;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import java.util.List;

public class Categorytest {
    public static void main(String[] args) {
        SqlSessionFactory factory=new SqlSessionFactoryBuilder().build(ResolverUtil.Test.class.getClassLoader().getResourceAsStream("mybatis.xml"));
        SqlSession sqlSession=factory.openSession(true);
        Categorymapper categorymapper=sqlSession.getMapper(Categorymapper.class);
        List<Category> result=categorymapper.Listcategory();
        for(Category category:result){
            System.out.println(result);
        }
    }
}
运行结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

分步查询

Category.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.meutech.mapper.Categorymapper">
    
<!--    分步查询-->
    <resultMap id="category1" type="com.meutech.entity.Category">
        <id column="id" property="id"/>
        <result column="parent_id" property="parent_id"/>
        <result column="name" property="name"/>
    </resultMap>
    <select id="ListcategoryByid" resultMap="category1">
        select * from cmt_category where parent_id=#{param1}
    </select>
    <resultMap id="category2" type="com.meutech.entity.Category">
        <id column="id" property="id"/>
        <result column="parent_id" property="parent_id"/>
        <result column="name" property="name"/>
        <collection property="childcategory" select="ListcategoryByid" column="id"></collection>
    </resultMap>
    <select id="Listcategoryleaf" resultMap="category2">
        select * from cmt_category where parent_id=0
    </select>

</mapper>
Categorymapper.java
package com.meutech.mapper;

import com.meutech.entity.Category;

import java.util.List;

public interface Categorymapper {
    List<Category> Listcategory();
    List<Category> ListcategoryByid(int parent_id);
    List<Category> Listcategoryleaf();
}

  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MyBatis是一种Java持久化框架,它可以将SQL语句映射到Java方法,方便我们查询数据库。下面是使用MyBatis实现数据库查询的步骤: 1. 添加MyBatis依赖 在pom.xml文件添加以下依赖: ``` <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.7</version> </dependency> ``` 2. 配置MyBatis 在resources目录下创建mybatis-config.xml文件,并添加以下内容: ``` <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/test"/> <property name="username" value="root"/> <property name="password" value="123456"/> </dataSource> </environment> </environments> <mappers> <mapper resource="com/example/mapper/MyMapper.xml"/> </mappers> </configuration> ``` 其,driver、url、username和password是数据库连接信息,需要根据实际情况修改。 3. 创建Mapper 在com.example.mapper包下创建MyMapper.java接口,并添加以下内容: ``` public interface MyMapper { List<User> getAllUsers(); } ``` 其,User是实体类,数据库的用户。 4. 创建Mapper XML文件 在com.example.mapper包下创建MyMapper.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.example.mapper.MyMapper"> <select id="getAllUsers" resultType="com.example.entity.User"> select * from user </select> </mapper> ``` 其,resultType指定查询结果的类型。 5. 编写代码 在代码使用MyBatis查询数据库,示例如下: ``` SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("mybatis-config.xml")); try (SqlSession sqlSession = sessionFactory.openSession()) { MyMapper myMapper = sqlSession.getMapper(MyMapper.class); List<User> users = myMapper.getAllUsers(); for (User user : users) { System.out.println(user); } } ``` 其,SqlSessionFactory是MyBatis的核心类,用于创建SqlSession对象。SqlSession是与数据库交互的核心类,通过getMapper方法获取Mapper对象,并调用其的方法查询数据库。 以上就是使用MyBatis实现数据库查询的步骤。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值