Bu sizin sorgunun sonucunda Boş koleksiyon yerine boş değer daha iyidir. Her öğe ile bir koleksiyon genellikle döngü ile çalışmaya ve bunun gibi onunla bir şeyler, bir şeyler yapmak zaman: Liste boşsa
List<User> resultList = (List<User>) sqlSession.select("statementId");
for (User u : resultList) {
//...
}
şey yapmaz hangi. Eğer boş dönerseniz
Ama, NullPointerExceptions karşı kodunuzu korumak ve bunun yerine böyle bir kod yazmak zorunda:
List<User> resultList = (List<User>) sqlSession.select("statementId");
if (resultList != null) {
for (User u : resultList) {
//...
}
}
Birinci yaklaşım genellikle daha iyidir ve MyBatis bunu böyle yapar, ama bunu zorlamak olabilir null, eğer gerçekten istediğin buysa.
Bunun için herhangi bir sorgu için MyBatis plugin ve yolunu kesmek aramaları yazıp sorgu sonucu boşsa boş geri dönebilirler. Yapılandırma eklenti olarak
: Burada
bazı kodudur
<plugins>
<plugin interceptor="pack.test.MyInterceptor" />
</plugins>
önleme kodu: çağrıları yakalamak eğer o zaman daha da interceptor kapsamını sınırlayabilir
package pack.test;
import java.util.List;
import java.util.Properties;
import org.apache.ibatis.executor.Executor;
import org.apache.ibatis.mapping.MappedStatement;
import org.apache.ibatis.plugin.Interceptor;
import org.apache.ibatis.plugin.Intercepts;
import org.apache.ibatis.plugin.Invocation;
import org.apache.ibatis.plugin.Plugin;
import org.apache.ibatis.plugin.Signature;
import org.apache.ibatis.session.ResultHandler;
import org.apache.ibatis.session.RowBounds;
@Intercepts({ @Signature(type = Executor.class, method = "query", args = {MappedStatement.class, Object.class, RowBounds.class, ResultHandler.class}) })
public class MyInterceptor implements Interceptor {
public Object intercept(Invocation invocation) throws Throwable {
Object result = invocation.proceed();
List<?> list = (List<?>) result;
return (list.size() == 0 ? null : result);
}
public Object plugin(Object target) {
return Plugin.wrap(target, this);
}
public void setProperties(Properties properties) {
}
}
Executor
yerine ResultSetHandler
.