Четыре сценария использования аннотации @Param в MyBatis, последний часто игнорируется!

Java MyBatis
Четыре сценария использования аннотации @Param в MyBatis, последний часто игнорируется!

Некоторые друзья считают, что 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 для вас!