1、 在注解上不能直接使用动态的SQL,需要在其前后加入 <script>与</script>
@Select("<script>select id, username , birth_day from user "
+ "<where>"
+ "<if test=\"username != null\">username = #{username}</if>"
+ "</where>"
+ "</script>")
List<User> getByQuery(UserQuery userQuery);
2、使用SqlProvider方式
@SelectProvider(type=UserQueryMapperProvider.class, method="getByQuery")
List<User> getByQuery(UserQuery userQuery);
class UserQueryMapperProvider{
public String getByQuery(UserQuery userQuery){
StringBuilder builder = new StringBuilder();
builder.append("select id, username , birth_day from user ");
if (userQuery != null && userQuery.getUsername() != null) {
builder.append("where username = #{username}");
}
return builder.toString();
}
}