基于若依框架的岗位名称查询模块实现_java


表名:sys_post(若依自带的一个表)

目标:获取post_name中所有的名字

模块结构说明

src/
├── main/
│   ├── java/
│   │   └── com/
│   │       └── ruoyi/
│   │           └── nametraversal/
│   │               ├── controller/       # 控制器层
│   │               │   └── PostController.java
│   │               ├── service/          # 服务层
│   │               │   ├── PostService.java
│   │               │   └── impl/
│   │               │       └── PostServiceImpl.java
│   │               ├── mapper/           # 数据访问层
│   │               │   └── PostMapper.java
│   │               └── domain/           # 实体类
│   │                   └── Post.java
│   └── resources/
│       └── mapper/
│           └── nametraversal/            # MyBatis映射文件
│               └── PostMapper.xml

1. Mapper XML 文件 (PostMapper.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.ruoyi.nametraversal.mapper.PostMapper">

    <!-- 定义结果映射,将数据库列映射到Java实体属性 -->
    <resultMap type="Post" id="PostResult">
        <id     property="postId"       column="post_id"      />
        <result property="postCode"     column="post_code"    />
        <result property="postName"     column="post_name"    />
        <result property="postSort"     column="post_sort"    />
        <result property="status"       column="status"       />
        <result property="createBy"     column="create_by"    />
        <result property="createTime"   column="create_time"  />
        <result property="updateBy"     column="update_by"    />
        <result property="updateTime"   column="update_time"  />
        <result property="remark"       column="remark"       />
    </resultMap>

    <!-- 查询所有有效的岗位名称(status=0表示有效) -->
    <select id="selectAllPostNames" resultType="java.lang.String">
        SELECT post_name
        FROM sys_post
        WHERE status = '0'  <!-- 只查询状态为有效的记录 -->
        ORDER BY post_sort  <!-- 按照排序字段排序 -->
    </select>

    <!-- 根据关键词模糊查询岗位名称 -->
    <select id="selectPostNamesByKeyword" parameterType="String" resultType="java.lang.String">
        SELECT post_name
        FROM sys_post
        WHERE status = '0'  <!-- 只查询状态为有效的记录 -->
          AND post_name LIKE concat('%', #{keyword}, '%')  <!-- 使用LIKE进行模糊查询 -->
        ORDER BY post_sort  <!-- 按照排序字段排序 -->
    </select>

</mapper>

2. Mapper 接口 (PostMapper.java)

package com.ruoyi.nametraversal.mapper;

import java.util.List;

/**
 * 岗位名称数据访问接口
 * 定义了对sys_post表的查询操作
 */
public interface PostMapper {
    
    /**
     * 查询所有有效的岗位名称
     * @return 岗位名称列表,只包含状态为有效的记录
     */
    List<String> selectAllPostNames();

    /**
     * 根据关键词模糊查询岗位名称
     * @param keyword 查询关键词
     * @return 匹配的岗位名称列表,只包含状态为有效的记录
     */
    List<String> selectPostNamesByKeyword(String keyword);
}

3. Service 接口 (PostService.java)

package com.ruoyi.nametraversal.service;

import java.util.List;

/**
 * 岗位名称服务接口
 * 提供获取岗位名称的业务功能
 */
public interface PostService {
    
    /**
     * 获取所有有效的岗位名称
     * @return 岗位名称列表,按post_sort排序
     */
    List<String> getAllPostNames();

    /**
     * 根据关键词搜索岗位名称
     * @param keyword 搜索关键词,支持模糊匹配
     * @return 匹配的岗位名称列表,按post_sort排序
     */
    List<String> searchPostNames(String keyword);
}

4. Service 实现 (PostServiceImpl.java)

package com.ruoyi.nametraversal.service.impl;

import com.ruoyi.nametraversal.mapper.PostMapper;
import com.ruoyi.nametraversal.service.PostService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 岗位名称服务实现类
 * 实现了PostService接口定义的功能
 */
@Service  // 标记为Spring服务组件
public class PostServiceImpl implements PostService {

    @Autowired  // 注入Mapper依赖
    private PostMapper postMapper;

    /**
     * 获取所有有效的岗位名称
     * @return 岗位名称列表
     */
    @Override
    public List<String> getAllPostNames() {
        // 直接调用Mapper查询所有岗位名称
        return postMapper.selectAllPostNames();
    }

    /**
     * 根据关键词搜索岗位名称
     * @param keyword 搜索关键词
     * @return 匹配的岗位名称列表
     */
    @Override
    public List<String> searchPostNames(String keyword) {
        // 调用Mapper进行模糊查询
        return postMapper.selectPostNamesByKeyword(keyword);
    }
}

5. Controller (PostController.java)

package com.ruoyi.nametraversal.controller;

import com.ruoyi.common.annotation.Anonymous;
import com.ruoyi.nametraversal.service.PostService;
import com.ruoyi.common.core.controller.BaseController;
import com.ruoyi.common.core.domain.AjaxResult;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

/**
 * 岗位名称查询控制器
 * 提供获取岗位名称的RESTful API接口
 */
@RestController  // 标记为REST控制器
@Anonymous       // 允许匿名访问(根据若依框架特性)
@RequestMapping("/nametraversal/post")  // 定义基础路径
public class PostController extends BaseController {

    @Autowired  // 注入Service依赖
    private PostService postService;

    /**
     * 获取所有有效的岗位名称
     * @return AjaxResult包含岗位名称列表
     * 访问路径: GET /nametraversal/post/names
     */
    @GetMapping("/names")
    public AjaxResult getAllPostNames() {
        // 调用Service获取数据
        List<String> postNames = postService.getAllPostNames();
        // 使用BaseController提供的success方法返回成功响应
        return success(postNames);
    }

    /**
     * 根据关键词搜索岗位名称
     * @param keyword 搜索关键词
     * @return AjaxResult包含匹配的岗位名称列表
     * 访问路径: GET /nametraversal/post/names/search?keyword=xxx
     */
    @GetMapping("/names/search")
    public AjaxResult searchPostNames(@RequestParam String keyword) {
        // 调用Service进行搜索
        List<String> postNames = postService.searchPostNames(keyword);
        // 使用BaseController提供的success方法返回成功响应
        return success(postNames);
    }
}

功能说明

  1. 数据过滤:所有查询都只返回status = '0'的有效记录
  2. 排序功能:结果按照post_sort字段排序返回
  3. 模糊搜索:支持根据关键词对post_name进行模糊查询
  4. RESTful API
  • GET /nametraversal/post/names - 获取所有有效岗位名称
  • GET /nametraversal/post/names/search?keyword=xxx - 根据关键词搜索岗位名称

使用注意事项

  1. 表名确认:代码中使用的是sys_post表,请确保数据库中存在此表
  2. 状态字段:查询条件中使用了status = '0',请确认您的业务中状态值的定义
  3. 权限控制:当前控制器添加了@Anonymous注解,如需权限控制可调整

这个实现完全遵循了若依框架的规范,可以直接集成到您的项目中。