Add support for returning ResultSet to jdbcmapper

This commit is contained in:
Travis Burtrum 2017-06-19 23:50:59 -04:00
parent dca6249667
commit 220a26c334
2 changed files with 26 additions and 1 deletions

View File

@ -132,7 +132,10 @@ public class CompileTimeResultSetMapper {
return false;
}
//IFJAVA8_END
else {
else if(types.isAssignable(returnTypeMirror, resultSetType)) {
toResultSet(w, closePs);
return false;
} else {
toObject(w, keys, returnTypeMirror, cal, cleaner, reflectionFields);
}
return true;
@ -154,6 +157,15 @@ public class CompileTimeResultSetMapper {
getRowMapper(keys, returnTypeMirror, resultSetName, cal, null, null, reflectionFields).gen(w, returnTypeMirror.toString());
}
private void toResultSet(final Writer w, final boolean closePs) throws IOException {
w.append("\t\t\treturn ");
if(closePs)
w.append("new com.moparisthebest.jdbc.StatementClosingResultSet(rs, ps)");
else
w.append("rs");
w.append(";\n");
}
public void toObject(final Writer w, final String[] keys, final TypeMirror returnTypeMirror, final String cal, final String cleaner, final ReflectionFields reflectionFields) throws IOException, ClassNotFoundException {
w.write("\t\t\tif(rs.next()) {\n");
writeObject(w, keys, returnTypeMirror, cal, reflectionFields);

View File

@ -8,6 +8,7 @@ import com.moparisthebest.jdbc.dto.Person;
import com.moparisthebest.jdbc.util.ResultSetIterable;
import java.io.Closeable;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Time;
import java.sql.Timestamp;
@ -29,6 +30,12 @@ import java.time.*;
)
public interface PersonDAO extends Closeable {
@JdbcMapper.SQL("CREATE TABLE person (person_no NUMERIC, first_name VARCHAR(40), last_name VARCHAR(40), birth_date TIMESTAMP)")
void createTablePerson();
@JdbcMapper.SQL("INSERT INTO person (person_no, birth_date, last_name, first_name) VALUES ({personNo}, {birthDate}, {firstName}, {lastName})")
int insertPerson(long personNo, Date birthDate, String firstName, String lastName);
@JdbcMapper.SQL("UPDATE person SET first_name = {firstName} WHERE last_name = {lastName}")
int setFirstName(String firstName, String lastName);
@ -41,6 +48,12 @@ 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 first_name, last_name FROM person WHERE last_name = {lastName}")
ResultSet getPeopleResultSet(String lastName) throws SQLException;
@JdbcMapper.SQL(value = "SELECT first_name, last_name FROM person WHERE last_name = {lastName}", cachePreparedStatement = JdbcMapper.OptionalBool.TRUE)
ResultSet getPeopleResultSetCached(String lastName) throws SQLException;
@JdbcMapper.SQL("SELECT first_name FROM person WHERE person_no = {personNo}")
String getFirstName(long personNo) throws SQLException;