Spring Boot+mybatis项目切换sql为传参成无参

一、项目文件结构树

bash 复制代码
src/main/java/com/example/
├── controller
│   └── UserController.java
├── service
│   ├── UserService.java
│   └── impl
│       └── UserServiceImpl.java
├── mapper
│   └── UserMapper.java
└── entity
    └── User.java

src/main/resources/
├── mapper
│   └── UserMapper.xml
└── application.properties

二、改动前

  1. UserController.java
java 复制代码
@RestController
@RequestMapping("/users")
public class UserController {
    @Autowired
    private UserService userService;

    @GetMapping("/{id}")
    public User getUser(@PathVariable Long id) {
        return userService.getUserById(id);
    }
}
  1. UserService.java
java 复制代码
public interface UserService {
    User getUserById(Long id);
}
  1. UserServiceImpl.java
java 复制代码
@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private UserMapper userMapper;

    @Override
    public User getUserById(Long id) {
        return userMapper.selectUserById(id);
    }
}
  1. UserMapper.java
java 复制代码
@Mapper
public interface UserMapper {
    User selectUserById(@Param("id") Long id);
}
  1. UserMapper.xml
xml 复制代码
<mapper namespace="com.example.mapper.UserMapper">
    <select id="selectUserById" resultType="com.example.entity.User">
        SELECT * FROM user WHERE id = #{id}
    </select>
</mapper>

三、修改后

  1. UserController.java
java 复制代码
@RestController
@RequestMapping("/users")
public class UserController {
    @Autowired
    private UserService userService;

    @GetMapping
    public List<User> getAllUsers() {          // 改为返回列表,不再接收路径参数
        return userService.getAllUsers();
    }
}
  1. UserService.java
java 复制代码
public interface UserService {
    List<User> getAllUsers();                  // 方法名和返回值都改变
}
  1. UserServiceImpl.java
java 复制代码
@Service
public class UserServiceImpl implements UserService {
    @Autowired
    private UserMapper userMapper;

    @Override
    public List<User> getAllUsers() {           // 实现无参方法
        return userMapper.selectAllUsers();     // 调用 Mapper 中的无参方法
    }
}
  1. UserMapper.java
java 复制代码
@Mapper
public interface UserMapper {
    List<User> selectAllUsers();                // 方法签名去掉参数,返回列表
}
  1. UserMapper.xml
xml 复制代码
<mapper namespace="com.example.mapper.UserMapper">
    <select id="selectAllUsers" resultType="com.example.entity.User">
        SELECT * FROM user                     <!-- SQL 中去掉了 WHERE 条件 -->
    </select>
</mapper>

改的不对的话容易报错NullPointerException

一定仔细检查XML及对应的mapper文件等

相关推荐
嘻哈∠※6 小时前
0061基于 SpringBoot 的投稿与稿件处理系统设计与实现
java·spring boot·后端
麻瓜code8 小时前
【Mysql】重新学一遍 SQL 执行顺序
数据库·sql
zhougl99612 小时前
Java Spring Boot 爬虫技术全面介绍
java·spring boot·爬虫
C++、Java和Python的菜鸟14 小时前
第1章 项目前置课-Mybatis-Plus
mybatis
用户31268748772014 小时前
@Async 加了没生效?Spring Boot 异步编程全链路拆解:从线程池到自调用陷阱
java·spring boot
TELL52115 小时前
帮我生成对应的sql 以及数据库-deepseek提示词
数据库·sql
云烟成雨TD16 小时前
Micrometer 系列【25】Spring Boot Actuator | Spring MVC、Spring WebFlux 指标
java·spring boot·micrometer
xbgRS17 小时前
springBoot项目配置加载优先级
java·spring boot
云烟成雨TD17 小时前
Micrometer 系列【61】统一观测:基于 Spring Boot 的生产级演示案例 | 指标集成
spring boot·云原生·链路追踪
今天AI了吗17 小时前
从 LLM 到 Agent Skill:把 AI 底层概念串起来
数据库·人工智能·sql·深度学习·神经网络·算法·机器学习