我设法通过在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的数据。
答案 0 :(得分:2)
如下更改获取映射:
@GetMapping("/actors/{id}")
public Actor selectActorById(@PathVariable(name="id") int id){
return actorMapper.selectActorById(id);
}
您的{id}
将是路径变量,它将被映射到方法的id
参数
答案 1 :(得分:0)
答案 2 :(得分:0)
@GetMapping("/actors")
public Actor selectActorById(@RequestParam("id") int id){
return actorMapper.selectActorById(id);//use "localhost:9090/actors?id=1" to Visit
}