一、我们所需要的基本环境

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.6.3</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.duing</groupId>
    <artifactId>springboot-mybatis-demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springboot-mybatis-demo</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency><!--web模块-->
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency><!--boot整合mybatis所需要的包-->
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.2</version>
        </dependency>

        <dependency><!--热部署-->
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency><!--mysql使用的包,这里记住要和自己的数据库一致-->
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</version>
        </dependency>
        <dependency><!--阿里巴巴的数据库连接池-->
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.8</version>
        </dependency>

        <dependency><!--lombok注解-->
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency><!--测试-->
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <excludes>
                        <exclude>
                            <groupId>org.projectlombok</groupId>
                            <artifactId>lombok</artifactId>
                        </exclude>
                    </excludes>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

这是我的目录结构
在这里插入图片描述

1.2、配置application.yml

server:
  port: 8080
spring:
  application:
    name: mybadis-demo-8080
  datasource: #这是MySQL所使用的配置
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/his09?useSSL=true&useUnicode=true&characterEncoding=utf8
    username: root
    password: 123456

#这是mybatis所使用的配置
mybatis:
  type-aliases-package: com.duing.entity
  mapper-locations: classpath*:mappers/*.xml
  #使用mybatis有两个重要的配置:1:mapper-locations:告诉mybatisSQL的映射文件在这里
  #2:type-aliases-package:告诉mybatis对应的实体类位置

1.3、在mappers文件加下新增一个mapper.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="这里写数据操作层dao/mapper">

</mapper>

到这里我们的准备工作就做好了,下面我们就可以编写代码了

二,开始写代码了

FunController

package com.duing.controller;

import com.duing.entity.Fun;
import com.duing.service.FunService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
@RequestMapping("/fun")
public class FunController {

    @Autowired
    private FunService service;

    @GetMapping("/")
   public List<Fun> selectAll(){
       return service.selectAll();
    }
    @GetMapping("/{fid}")
    public Fun selectFid(@PathVariable("fid") Integer fid){
        return service.selectFid(fid);
    }

    //通过json的格式返回层级关系
    @GetMapping("/Hierarchy")
    public List<Fun> selectHierarchy(){
        return service.selectHierarchy();
    }
}

FunService

package com.duing.service;

import com.duing.entity.Fun;
import com.duing.mapper.FunMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.List;

@Service
public class FunService {

    @Autowired
    private FunMapper mapper;

   public List<Fun> selectAll(){
     return mapper.selectAll();
    }

    public Fun selectFid(Integer fid){
     return mapper.selectFid(fid);
    }


    public List<Fun> selectHierarchy(){
        List<Fun> funBos =new ArrayList<>();

        List<Fun> fun = mapper.selectAll();
        for (Fun fun1 : fun) {
            if (fun1.getPid()==-1){
                List<Fun> hierarchy = Hierarchy(fun1.getFid(), fun);//子类的属性

                fun1.setFunList(hierarchy);
                funBos.add(fun1);
            }
        }
        return funBos;
    }

    private List<Fun> Hierarchy(Integer fid,List<Fun> fun){
        List<Fun> funBos =new ArrayList<>();
        for (Fun fun1 : fun) {
            if (fun1.getPid()==fid){
             funBos.add(fun1);
            }
        }

        return funBos;
    }

}

FunMapper

package com.duing.mapper;

import com.duing.entity.Fun;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface FunMapper {

    List<Fun> selectAll();//查询全部

    Fun selectFid(Integer fid);//通过id查询

}

Fun

package com.duing.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.Date;
import java.util.List;

//权限类
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Fun {

    private Integer fid;
    private String fname;
    private Integer ftype;
    private String furl;
    private Integer pid;
    private String auth_flag;
    private Date  create_time;
    private Integer create_user;
    private Date update_time;
    private Integer update_user;
    private Integer delete_flag;

    private String yl1;
    private String yl2;

    private List<Fun> funList;

    public Fun(Integer fid, String fname, Integer ftype, String furl, Integer pid, String auth_flag, Date create_time, Integer create_user, Date update_time, Integer update_user, Integer delete_flag, String yl1, String yl2) {
        this.fid = fid;
        this.fname = fname;
        this.ftype = ftype;
        this.furl = furl;
        this.pid = pid;
        this.auth_flag = auth_flag;
        this.create_time = create_time;
        this.create_user = create_user;
        this.update_time = update_time;
        this.update_user = update_user;
        this.delete_flag = delete_flag;
        this.yl1 = yl1;
        this.yl2 = yl2;
    }
}

tfunMapper.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.duing.mapper.FunMapper">
      <!-- property对 应实体类的属性名称,column为数据库字段名
    <resultMap id="sso" type="com.duing.securityssoserver.entity.MyUsername">
        <id column="" property=""/>
        <result column="" property=""/>
    </resultMap>-->
    <select id="selectAll" resultType="com.duing.entity.Fun">
        SELECT `fid`,`fname`,`ftype`,`furl`,`pid`,`auth_flag`,`create_time`,
               `create_user`,`update_time`,`update_user`,`delete_flag`,
               `yl1`,`yl2`FROM `t_fun`
    </select>

    <select id="selectFid" resultType="com.duing.entity.Fun">
        SELECT `fid`,`fname`,`ftype`,`furl`,`pid`,`auth_flag`,`create_time`,
               `create_user`,`update_time`,`update_user`,`delete_flag`,`yl1`,`yl2`
        FROM `t_fun`
        WHERE `fid`=#{fid}
    </select>

</mapper>

写完之后的目录结构是这样的
在这里插入图片描述
这是我在gitee上的代码可以下载下来看一看
boot-mybatis

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐