MyBatis 的注解方式支持動態 SQL,但是相對于 XML 配置文件來說,注解方式在處理復雜的動態 SQL 時可能會顯得有些局限。不過,你可以使用 MyBatis 提供的一些注解來實現簡單的動態 SQL 功能,例如:@If
, @Choose
, @Where
, @Set
等。
以下是一個使用 MyBatis 注解實現動態 SQL 的簡單示例:
import org.apache.ibatis.annotations.*;
import org.apache.ibatis.type.JdbcType;
public interface UserMapper {
@Select("SELECT * FROM user WHERE id = #{id}")
User getUserById(@Param("id") int id);
@Select<script>" +
"SELECT * FROM user" +
<where>" +
" <if test='name != null'>AND name = #{name}</if>" +
" <if test='age != null'>AND age = #{age}</if>" +
"</where>" +
"</script>")
List<User> getUsersByCondition(@Param("name") String name, @Param("age") Integer age);
}
在這個示例中,我們定義了一個 UserMapper
接口,其中包含兩個方法:getUserById
和 getUsersByCondition
。getUserById
方法用于根據用戶 ID 查詢用戶信息,而 getUsersByCondition
方法則用于根據用戶名和年齡查詢用戶信息。通過使用 <if>
標簽,我們可以實現動態地添加查詢條件。
需要注意的是,雖然 MyBatis 的注解方式支持動態 SQL,但在處理復雜的動態 SQL 時,建議使用 XML 配置文件來實現,因為 XML 配置文件提供了更豐富的動態 SQL 標簽和功能。