Некоторые друзья считают, что MyBatis нужно добавлять аннотацию @Param только тогда, когда в методе есть несколько параметров, но на самом деле это неверное понимание. Даже если метод MyBatis имеет только один параметр, можно использовать аннотацию @Param.
Однако, прежде чем суммировать правила, вы можете почувствовать необъяснимое: иногда к параметру не нужно добавлять аннотацию @Param, а иногда ее нужно добавить, если ее не добавить, будет выдано сообщение об ошибке.
Кто-то может подумать, что в этом корень отличий между разными версиями MyBatis.Неоспоримо, что MyBatis быстро развивается, и различия между разными версиями вполне очевидны.Однако проблема добавления аннотации @Param не является горшок версии. ! Сегодня Brother Song расскажет вам об этой проблеме и о том, при каких обстоятельствах вам нужно добавить аннотацию @Param.
Прежде всего, необходимо добавить аннотацию @Param к следующим сценариям, я думаю, у всех есть консенсус:
- Первый: метод имеет несколько параметров, что требует аннотации @Param.
Например следующее:
@Mapper
public interface UserMapper {
Integer insert(@Param("username") String username, @Param("address") String address);
}
Соответствующий файл XML выглядит следующим образом:
<insert id="insert" parameterType="org.javaboy.helloboot.bean.User">
insert into user (username,address) values (#{username},#{address});
</insert>
Это наиболее распространенный сценарий, когда требуется аннотация @Param.
- Второе: параметры метода брать псевдонимы, нужна аннотация @Param
Когда нам нужно взять псевдоним для параметра, нам также понадобится аннотация @Param, например, метод определяется следующим образом:
@Mapper
public interface UserMapper {
User getUserByUsername(@Param("name") String username);
}
Соответствующее определение XML выглядит следующим образом:
<select id="getUserByUsername" parameterType="org.javaboy.helloboot.bean.User">
select * from user where username=#{name};
</select>
Честно говоря, такого рода спрос невелик, и это хлопотно.
- Третий тип: SQL в XML использует $, поэтому в параметрах также требуется аннотация @Param
символ, например, когда вы хотите передать имя столбца или имя таблицы, вы должны добавить аннотацию @Param в это время, например:
@Mapper
public interface UserMapper {
List<User> getAllUsers(@Param("order_by")String order_by);
}
Соответствующее определение XML выглядит следующим образом:
<select id="getAllUsers" resultType="org.javaboy.helloboot.bean.User">
select * from user
<if test="order_by!=null and order_by!=''">
order by ${order_by} desc
</if>
</select>
Первые три легко понять, и я думаю, что многие друзья тоже понимают.Помимо этих трех распространенных сценариев, есть особый сценарий, который часто упускается из виду.
- Четвертый — динамический SQL.Если вы используете параметры в качестве переменных в динамическом SQL, вам также потребуется аннотация @Param, даже если у вас есть только один параметр.
Если мы используем параметры в качестве условий оценки в динамическом SQL, мы также должны добавить аннотацию @Param, например следующий метод:
@Mapper
public interface UserMapper {
List<User> getUserById(@Param("id")Integer id);
}
Определенный SQL выглядит следующим образом:
<select id="getUserById" resultType="org.javaboy.helloboot.bean.User">
select * from user
<if test="id!=null">
where id=#{id}
</if>
</select>
В этом случае, даже если параметр всего один, нужно добавить аннотацию @Param, а этот случай часто игнорируется!
Ну, интересно, все ли до него дошли? Если у вас есть какие-либо вопросы, пожалуйста, оставьте сообщение для обсуждения.
Обратите внимание на общедоступную учетную запись [Jiangnan A Little Rain], сосредоточьтесь на технологиях с полным стеком, таких как Spring Boot + микросервисы и разделение интерфейса и сервера, делитесь регулярными видеоуроками, отвечайте на Java после того, как уделите внимание, и получайте Сухие товары Java тщательно приготовлены Songge для вас!