在 MyBatis 中,為了避免 SQL 硬編碼,我們可以使用以下方法:
<!-- UserMapper.xml -->
<mapper namespace="com.example.mapper.UserMapper">
<select id="selectUsers" resultType="com.example.model.User">
SELECT * FROM users
</select>
</mapper>
然后在 Mapper 接口中引用這個 SQL 語句:
// UserMapper.java
public interface UserMapper {
List<User> selectUsers();
}
@Select
注解來定義 SQL 語句。這樣可以避免在 XML 配置文件中重復編寫相同的 SQL 語句。例如:// UserMapper.java
public interface UserMapper {
@Select("SELECT * FROM users")
List<User> selectUsers();
}
<if>
、<choose>
等,可以根據不同的條件生成不同的 SQL 語句。這樣可以避免硬編碼,提高代碼的可讀性和可維護性。例如:<!-- UserMapper.xml -->
<mapper namespace="com.example.mapper.UserMapper">
<select id="selectUsers" resultType="com.example.model.User">
SELECT * FROM users
<where>
<if test="id != null">
AND id = #{id}
</if>
<if test="name != null">
AND name = #{name}
</if>
</where>
</select>
</mapper>
然后在 Mapper 接口中調用這個方法:
// UserMapper.java
public interface UserMapper {
List<User> selectUsers(@Param("id") Integer id, @Param("name") String name);
}
通過以上方法,我們可以有效地減少 MyBatis 中的 SQL 硬編碼,提高代碼的可維護性和可讀性。