我设法通过在 SpringBoot-MyBatis 后端创建一个 SELECT 语句来“获取所有对象”,例如:
AppRestController.java
//get full list of actors
@GetMapping("/actors")
public List<Actor> selectAllActors(){
return actorMapper.selectAllActors();
}
当您在浏览器中键入“localhost:9090/actors”时,它将返回我的 MySQL 数据库中的所有 actor 对象。那挺好的。现在我想把它的复杂性提高一个档次。
我想通过它的 actor_id 获取单个对象,例如:
//get specific actor by actor_id. this is where im stuck
@GetMapping("/actors/id")
public Actor selectActorById(int id){
return actorMapper.selectActorById(id);
}
注意我的@GetMapping。我想做的是当我输入类似 "localhost:9090/actors/1"在浏览器中,它将从数据库中返回 id = 1 的 actor 对象,依此类推。
这是相关文件。
ActorMapper.xml
<mapper namespace="com.helios.mybatissakila.mappers.ActorMapper">
<resultMap id="ActorResultMap" type="Actor">
<id column="actor_id" property="actor_id" jdbcType="INTEGER"/>
<result column="first_name" property="first_name" />
<result column="last_name" property="last_name" />
<result column="last_update" property="last_update" />
</resultMap>
<select id="selectAllActors" resultMap="ActorResultMap">
select * from actor
</select>
<select id="selectActorById" resultMap="ActorResultMap">
select * from actor where actor_id = #{actor_id}
</select>
</mapper>
ActorMapper.java
@Mapper
public interface ActorMapper {
//this is now working
List <Actor> selectAllActors();
//this is where im stuck
Actor selectActorById(int id);
}
感谢您的帮助。 更新:
所以我确实改变了
@GetMapping("/actors/id")
public Actor selectActorById(int id){
return actorMapper.selectActorById(id);
}
到
@GetMapping("/actors/{id}")
public Actor selectActorById(Integer id){
return actorMapper.selectActorById(id);
}
显然,没有错误,但我得到一个空白屏幕。为什么?我的 MySQL 数据库中有一个数据,其 actor_id 等于 1。
请您参考如下方法:
如下更改您的获取映射:
@GetMapping("/actors/{id}")
public Actor selectActorById(@PathVariable(name="id") int id){
return actorMapper.selectActorById(id);
}
您的 {id}
将是路径变量,它将映射到方法的 id
参数