我设法通过在 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 参数


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!