diff --git a/jdbcmapper/src/main/java/com/moparisthebest/jdbc/codegen/CompileTimeResultSetMapper.java b/jdbcmapper/src/main/java/com/moparisthebest/jdbc/codegen/CompileTimeResultSetMapper.java index d551d13..8896f2c 100644 --- a/jdbcmapper/src/main/java/com/moparisthebest/jdbc/codegen/CompileTimeResultSetMapper.java +++ b/jdbcmapper/src/main/java/com/moparisthebest/jdbc/codegen/CompileTimeResultSetMapper.java @@ -2,6 +2,7 @@ package com.moparisthebest.jdbc.codegen; import com.moparisthebest.jdbc.Finishable; import com.moparisthebest.jdbc.ResultSetMapper; +import com.moparisthebest.jdbc.TypeMappingsFactory; import com.moparisthebest.jdbc.util.ResultSetIterable; import javax.annotation.processing.ProcessingEnvironment; @@ -171,7 +172,12 @@ public class CompileTimeResultSetMapper { writeObject(w, keys, returnTypeMirror, cal, reflectionFields); w.write("\t\t\t\treturn "); // this does not clean null on purpose, neither does CleaningResultSetMapper - clean(w, cleaner).write(";\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n"); + clean(w, cleaner).write(";\n\t\t\t} else {\n\t\t\t\treturn "); + if(returnTypeMirror.getKind().isPrimitive()) + w.append(TypeMappingsFactory.getInstance().fixNull(typeMirrorToClass(returnTypeMirror)).toString()); // todo: ok, but could be better + else + w.append("null"); + w.append(";\n\t\t\t}\n"); } private void toResultSetIterable(final Writer w, final String[] keys, final TypeMirror returnTypeMirror, final String cal, final String cleaner, final boolean closePs, final ReflectionFields reflectionFields) throws IOException, ClassNotFoundException { diff --git a/jdbcmapper/src/test/java/com/moparisthebest/jdbc/codegen/PersonDAO.java b/jdbcmapper/src/test/java/com/moparisthebest/jdbc/codegen/PersonDAO.java index b45e9e6..fbb7c4a 100644 --- a/jdbcmapper/src/test/java/com/moparisthebest/jdbc/codegen/PersonDAO.java +++ b/jdbcmapper/src/test/java/com/moparisthebest/jdbc/codegen/PersonDAO.java @@ -48,6 +48,9 @@ public interface PersonDAO extends Closeable { @JdbcMapper.SQL("UPDATE person SET first_name = {firstName} WHERE person_no = {personNo}") void setFirstNameBlob(@JdbcMapper.Blob String firstName, long personNo) throws SQLException; + @JdbcMapper.SQL("SELECT person_no FROM person WHERE last_name = {lastName}") + long getPersonNo(String lastName) throws SQLException; + @JdbcMapper.SQL("SELECT first_name, last_name FROM person WHERE last_name = {lastName}") ResultSet getPeopleResultSet(String lastName) throws SQLException; diff --git a/presto-sqlparser/src/test/java/com/moparisthebest/jdbc/codegen/PrestoPersonDAO.java b/presto-sqlparser/src/test/java/com/moparisthebest/jdbc/codegen/PrestoPersonDAO.java index f5633f9..fd46e85 100644 --- a/presto-sqlparser/src/test/java/com/moparisthebest/jdbc/codegen/PrestoPersonDAO.java +++ b/presto-sqlparser/src/test/java/com/moparisthebest/jdbc/codegen/PrestoPersonDAO.java @@ -48,6 +48,9 @@ public interface PrestoPersonDAO extends PersonDAO { @JdbcMapper.SQL("UPDATE person SET first_name = {firstName} WHERE person_no = {personNo}") void setFirstNameBlob(@JdbcMapper.Blob String firstName, long personNo) throws SQLException; + @JdbcMapper.SQL("SELECT person_no FROM person WHERE last_name = {lastName}") + long getPersonNo(String lastName) throws SQLException; + @JdbcMapper.SQL("SELECT first_name, last_name FROM person WHERE last_name = {lastName}") ResultSet getPeopleResultSet(String lastName) throws SQLException;