
表名: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.xml1. 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);
}
}功能说明
- 数据过滤:所有查询都只返回
status = '0'的有效记录 - 排序功能:结果按照
post_sort字段排序返回 - 模糊搜索:支持根据关键词对
post_name进行模糊查询 - RESTful API:
-
GET /nametraversal/post/names- 获取所有有效岗位名称 -
GET /nametraversal/post/names/search?keyword=xxx- 根据关键词搜索岗位名称
使用注意事项
- 表名确认:代码中使用的是
sys_post表,请确保数据库中存在此表 - 状态字段:查询条件中使用了
status = '0',请确认您的业务中状态值的定义 - 权限控制:当前控制器添加了
@Anonymous注解,如需权限控制可调整
这个实现完全遵循了若依框架的规范,可以直接集成到您的项目中。
















