com.qfedu.fmmall.dao.CategoryMapper.java
package com.qfedu.fmmall.dao;
import com.qfedu.fmmall.entity.Category;
import com.qfedu.fmmall.entity.CategoryVO;
import com.qfedu.fmmall.general.GeneralDAO;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface CategoryMapper extends GeneralDAO<Category> {
// 1.连接查询
public List<CategoryVO> selectAllCategories();
/**
* 根据 parentId 查询 子分类
* @param parentId
* @return
*/
// 2.子查询
public List<CategoryVO> selectAllCategories2(int parentId);
}
mappers/CategoryMapper.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.qfedu.fmmall.dao.CategoryMapper">
<resultMap id="categoryVOMap2" type="com.qfedu.fmmall.entity.CategoryVO">
<id column="category_id" jdbcType="INTEGER" property="categoryId" />
<result column="category_name" jdbcType="VARCHAR" property="categoryName" />
<result column="category_level" jdbcType="INTEGER" property="categoryLevel" />
<result column="parent_id" jdbcType="INTEGER" property="parentId" />
<result column="category_icon" jdbcType="VARCHAR" property="categoryIcon" />
<result column="category_slogan" jdbcType="VARCHAR" property="categorySlogan" />
<result column="category_pic" jdbcType="VARCHAR" property="categoryPic" />
<result column="category_bg_color" jdbcType="VARCHAR" property="categoryBgColor" />
<collection property="categories" column="category_id" select="com.qfedu.fmmall.dao.CategoryMapper.selectAllCategories2"/>
</resultMap>
<!-- 根据 父级分类的 id, 查询 子集分类-->
<!-- 子查询-->
<select id="selectAllCategories2" resultMap="categoryVOMap2">
select
category_id,
category_name,
category_level,
parent_id,
category_icon,
category_slogan,
category_pic,
category_bg_color
from category
where parent_id = #{parentId}
</select>
</mapper>
测试
package com.qfedu.fmmall;
import com.qfedu.fmmall.dao.CategoryMapper;
import com.qfedu.fmmall.entity.Category;
import com.qfedu.fmmall.entity.CategoryVO;
import org.junit.jupiter.api.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import java.util.List;
@RunWith(SpringRunner.class)
@SpringBootTest(classes = ApiApplication.class)
class ApiApplicationTests {
@Autowired
private CategoryMapper categoryMapper;
@Test
void contextLoads() {
List<CategoryVO> categoryVOS = categoryMapper.selectAllCategories2(0);
for(CategoryVO c1 : categoryVOS) {
System.out.println(c1);
for(CategoryVO c2 : c1.getCategories()) {
System.out.println("\t" + c2);
for(CategoryVO c3 : c2.getCategories()) {
System.out.println("\t" + c3);
}
}
}
}
// @Test
// void contextLoads() {
// List<CategoryVO> categoryVOS = categoryMapper.selectAllCategories();
// for(CategoryVO c1 : categoryVOS) {
// System.out.println(c1);
// for(CategoryVO c2 : c1.getCategories()) {
// System.out.println("\t" + c2);
// for(CategoryVO c3 : c2.getCategories()) {
// System.out.println("\t" + c3);
// }
// }
// }
// }
}
tkMapper 解决不了 这样相对复杂的
这样的 , 还需要 手写