Как получить конкретный объект, используя SelectById (object_id) в SpringBoot-MyBatis-MySQL? - PullRequest
2 голосов
/ 21 мая 2019

Мне удалось «получить все объекты», создав оператор SELECT в бэкэнде SpringBoot-MyBatis, например:

AppRestController.java

//get full list of actors 
@GetMapping("/actors")
public List<Actor> selectAllActors(){
        return actorMapper.selectAllActors();
}

Когда вы печатаете"localhost: 9090 /ctors" в браузере, он вернет все объекты акторов из моей базы данных MySQL.Это хорошо.Теперь я хочу повысить его сложность.

Я хочу получить один объект по его 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 /ctors / 1 " в браузере, он возвращает объект актера из базы данных с id = 1 и т. Д.

Вот соответствующие файлы.

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.

enter image description here

Ответы [ 2 ]

2 голосов
/ 21 мая 2019

Измените ваше отображение get следующим образом:

@GetMapping("/actors/{id}")
public Actor selectActorById(@PathVariable(name="id") int id){
     return actorMapper.selectActorById(id);
}

Ваша {id} будет переменной пути, которая будет отображена на id параметр метода

0 голосов
/ 22 мая 2019

(Отправленное решение от имени автора вопроса) .

Вы должны включить аннотацию @PathVariable, как упомянуто @Abhijeet:

enter image description here

...