Skip to content

Commit

Permalink
Merge pull request #39 from yuu-nkjm/develop
Browse files Browse the repository at this point in the history
Add ParameterizedSql and Command
  • Loading branch information
yuu-nkjm authored Apr 28, 2021
2 parents 0bf85c1 + bb1fca0 commit 65d68c5
Show file tree
Hide file tree
Showing 111 changed files with 2,251 additions and 2,264 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ The latest release is available at [Maven Central Repository](https://mvnreposit
<dependency>
<groupId>org.nkjmlab</groupId>
<artifactId>sorm4j</artifactId>
<version>1.3.11</version>
<version>1.3.12</version>
</dependency>
```

Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.nkjmlab</groupId>
<artifactId>sorm4j</artifactId>
<version>1.3.11</version>
<version>1.3.12</version>
<name>sorm4j</name>
<description>Simple micro Object-Relation Mapper for Java</description>
<url>https://github.com/yuu-nkjm/sorm4j</url>
Expand Down
25 changes: 25 additions & 0 deletions src/main/java/org/nkjmlab/sorm4j/BasicCommand.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package org.nkjmlab.sorm4j;

import java.util.Map;
import org.nkjmlab.sorm4j.sql.helper.Command;
import org.nkjmlab.sorm4j.sql.helper.NamedParameterCommand;
import org.nkjmlab.sorm4j.sql.helper.OrderedParameterCommand;

public interface BasicCommand extends Command {

OrderedParameterCommand addParameter(Object parameter);

OrderedParameterCommand addParameter(Object... parameters);

NamedParameterCommand bindAll(Map<String, Object> keyValuePairOfNamedParameters);

NamedParameterCommand bind(String key, Object value);

NamedParameterCommand bindBean(Object bean);

static BasicCommand from(OrmConnection conn, String sql) {
return new BasicCommandImpl(conn, sql);
}


}
49 changes: 49 additions & 0 deletions src/main/java/org/nkjmlab/sorm4j/BasicCommandImpl.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package org.nkjmlab.sorm4j;

import java.util.Map;
import org.nkjmlab.sorm4j.internal.sql.AbstractCommand;
import org.nkjmlab.sorm4j.sql.ParameterizedSql;
import org.nkjmlab.sorm4j.sql.helper.NamedParameterCommand;
import org.nkjmlab.sorm4j.sql.helper.OrderedParameterCommand;

public class BasicCommandImpl extends AbstractCommand implements BasicCommand {

private final String sql;

public BasicCommandImpl(OrmConnection conn, String sql) {
super(conn);
this.sql = sql;
}

@Override
public OrderedParameterCommand addParameter(Object parameter) {
return OrderedParameterCommand.from(conn, sql).addParameter(parameter);
}

@Override
public OrderedParameterCommand addParameter(Object... parameters) {
return OrderedParameterCommand.from(conn, sql).addParameter(parameters);
}

@Override
public NamedParameterCommand bindAll(Map<String, Object> keyValuePairOfNamedParameters) {
return NamedParameterCommand.from(conn, sql).bindAll(keyValuePairOfNamedParameters);
}

@Override
public NamedParameterCommand bind(String key, Object value) {
return NamedParameterCommand.from(conn, sql).bind(key, value);
}

@Override
public NamedParameterCommand bindBean(Object bean) {
return NamedParameterCommand.from(conn, sql).bindBean(bean);
}

@Override
protected ParameterizedSql parse() {
return ParameterizedSql.from(sql);
}


}
47 changes: 5 additions & 42 deletions src/main/java/org/nkjmlab/sorm4j/OrmConnection.java
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
package org.nkjmlab.sorm4j;

import org.nkjmlab.sorm4j.sql.NamedParameterQuery;
import org.nkjmlab.sorm4j.sql.NamedParameterRequest;
import org.nkjmlab.sorm4j.sql.OrderedParameterQuery;
import org.nkjmlab.sorm4j.sql.OrderedParameterRequest;
import org.nkjmlab.sorm4j.sql.SelectQuery;
import org.nkjmlab.sorm4j.annotation.Experimental;
import org.nkjmlab.sorm4j.typed.TypedOrmConnection;

/**
* Main API for object relation mapping. The api consists of {@link OrmReader}, {@link OrmUpdater},
Expand All @@ -18,47 +15,12 @@ public interface OrmConnection extends OrmReader, OrmUpdater, OrmMapReader, SqlE


/**
* Creates a {@link NamedParameterQuery} from SQL string.
*
* @param <T>
* @param objectClass
* @param sql
* @return
*/
<T> NamedParameterQuery<T> createNamedParameterQuery(Class<T> objectClass, String sql);

/**
* Creates a {@link NamedParameterRequest} from SQL string.
* Creates a {@link BasicCommand} from SQL string.
*
* @param sql
* @return
*/
NamedParameterRequest createNamedParameterRequest(String sql);

/**
* Creates a {@link OrderedParameterQuery} from SQL string.
*
* @param <T>
* @param objectClass
* @param sql
*/
<T> OrderedParameterQuery<T> createOrderedParameterQuery(Class<T> objectClass, String sql);

/**
* Creates a {@link OrderedParameterRequest} from SQL string.
*
* @param sql
* @return
*/
OrderedParameterRequest createOrderedParameterRequest(String sql);


/**
* Creates a {@link SelectQuery}.
*
* @return
*/
<T> SelectQuery<T> createSelectQuery(Class<T> objectClass);
BasicCommand createCommand(String sql);


/**
Expand All @@ -68,6 +30,7 @@ public interface OrmConnection extends OrmReader, OrmUpdater, OrmMapReader, SqlE
* @param objectClass
* @return
*/
@Experimental
<T> TypedOrmConnection<T> type(Class<T> objectClass);

/**
Expand Down
18 changes: 9 additions & 9 deletions src/main/java/org/nkjmlab/sorm4j/OrmMapReader.java
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@
import java.util.Map;
import org.nkjmlab.sorm4j.extension.SormOptions;
import org.nkjmlab.sorm4j.extension.ResultSetConverter;
import org.nkjmlab.sorm4j.extension.SqlParameterSetter;
import org.nkjmlab.sorm4j.extension.SqlParametersSetter;
import org.nkjmlab.sorm4j.sql.LazyResultSet;
import org.nkjmlab.sorm4j.sql.SqlStatement;
import org.nkjmlab.sorm4j.sql.ParameterizedSql;


/**
Expand All @@ -24,7 +24,7 @@ public interface OrmMapReader {
* @param sql
* @return
*/
Map<String, Object> readMapFirst(SqlStatement sql);
Map<String, Object> readMapFirst(ParameterizedSql sql);

/**
* Reads a first row from the database by mapping the results of the SQL query into an instance of
Expand All @@ -34,7 +34,7 @@ public interface OrmMapReader {
* correspondence defined in {@link ResultSetConverter#toSingleMap(SormOptions, ResultSet, List, List)}.
* <p>
* Parameters will be set according with the correspondence defined in
* {@link SqlParameterSetter#setParameters(SormOptions, PreparedStatement, Object... )}
* {@link SqlParametersSetter#setParameters(SormOptions, PreparedStatement, Object... )}
*
* @param sql with ordered parameter. The other type parameters (e.g. named parameter, list
* parameter) could not be used.
Expand All @@ -48,7 +48,7 @@ public interface OrmMapReader {
* @param sql
* @return
*/
LazyResultSet<Map<String, Object>> readMapLazy(SqlStatement sql);
LazyResultSet<Map<String, Object>> readMapLazy(ParameterizedSql sql);

/**
* Returns an {@link LazyResultSet} instance containing data from the execution of the provided
Expand All @@ -58,7 +58,7 @@ public interface OrmMapReader {
* correspondence defined in {@link ResultSetConverter#toSingleMap(SormOptions, ResultSet, List, List)}.
* <p>
* Parameters will be set according with the correspondence defined in
* {@link SqlParameterSetter#setParameters(SormOptions, PreparedStatement, Object... )}
* {@link SqlParametersSetter#setParameters(SormOptions, PreparedStatement, Object... )}
*
* @param sql with ordered parameter. The other type parameters (e.g. named parameter, list
* parameter) could not be used.
Expand All @@ -72,7 +72,7 @@ public interface OrmMapReader {
* @param sql
* @return
*/
List<Map<String, Object>> readMapList(SqlStatement sql);
List<Map<String, Object>> readMapList(ParameterizedSql sql);

/**
* Reads a list of objects from the database by mapping the SQL execution results to instances of
Expand All @@ -82,7 +82,7 @@ public interface OrmMapReader {
* correspondence defined in {@link ResultSetConverter#toSingleMap(SormOptions, ResultSet, List, List)}.
* <p>
* Parameters will be set according with the correspondence defined in
* {@link SqlParameterSetter#setParameters(SormOptions, PreparedStatement, Object... )}
* {@link SqlParametersSetter#setParameters(SormOptions, PreparedStatement, Object... )}
*
* @param sql with ordered parameter. The other type parameters (e.g. named parameter, list
* parameter) could not be used.
Expand All @@ -96,7 +96,7 @@ public interface OrmMapReader {
* @param sql
* @return
*/
Map<String, Object> readMapOne(SqlStatement sql);
Map<String, Object> readMapOne(ParameterizedSql sql);

/**
* Reads a first row from the database by mapping the results of the SQL query into an instance of
Expand Down
20 changes: 10 additions & 10 deletions src/main/java/org/nkjmlab/sorm4j/OrmReader.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@
import org.nkjmlab.sorm4j.annotation.Experimental;
import org.nkjmlab.sorm4j.annotation.OrmColumnAliasPrefix;
import org.nkjmlab.sorm4j.extension.SormOptions;
import org.nkjmlab.sorm4j.extension.SqlParameterSetter;
import org.nkjmlab.sorm4j.extension.SqlParametersSetter;
import org.nkjmlab.sorm4j.sql.LazyResultSet;
import org.nkjmlab.sorm4j.sql.SqlStatement;
import org.nkjmlab.sorm4j.sql.ParameterizedSql;
import org.nkjmlab.sorm4j.sql.tuple.Tuple2;
import org.nkjmlab.sorm4j.sql.tuple.Tuple3;

Expand Down Expand Up @@ -65,7 +65,7 @@ public interface OrmReader {
* @param sql
* @return
*/
<T> T readFirst(Class<T> objectClass, SqlStatement sql);
<T> T readFirst(Class<T> objectClass, ParameterizedSql sql);

/**
* Reads an object from the database.
Expand All @@ -87,13 +87,13 @@ public interface OrmReader {
* @param sql
* @return
*/
<T> LazyResultSet<T> readLazy(Class<T> objectClass, SqlStatement sql);
<T> LazyResultSet<T> readLazy(Class<T> objectClass, ParameterizedSql sql);

/**
* Returns an {@link LazyResultSet}. It is able to convert to Stream, List, and so on.
* <p>
* Parameters will be set according with the correspondence defined in
* {@link SqlParameterSetter#setParameters(SormOptions,PreparedStatement, Object[])}
* {@link SqlParametersSetter#setParameters(SormOptions,PreparedStatement, Object[])}
*
*
*/
Expand All @@ -110,15 +110,15 @@ public interface OrmReader {
* @return
*/

<T> List<T> readList(Class<T> objectClass, SqlStatement sql);
<T> List<T> readList(Class<T> objectClass, ParameterizedSql sql);

/**
* Reads a list of objects from the database by mapping the results of the parameterized SQL query
* into instances of the given object class. Only the columns returned from the SQL query will be
* set into the object instance.
* <p>
* Parameters will be set according with the correspondence defined in
* {@link SqlParameterSetter#setParameters(SormOptions, PreparedStatement, Object[])}
* {@link SqlParametersSetter#setParameters(SormOptions, PreparedStatement, Object[])}
*
*/
<T> List<T> readList(Class<T> objectClass, String sql, Object... parameters);
Expand All @@ -131,7 +131,7 @@ public interface OrmReader {
* @param sql
* @return
*/
<T> T readOne(Class<T> objectClass, SqlStatement sql);
<T> T readOne(Class<T> objectClass, ParameterizedSql sql);

/**
* Reads only one object from the database.
Expand Down Expand Up @@ -176,7 +176,7 @@ <T1, T2> List<Tuple2<T1, T2>> readTupleList(Class<T1> t1, Class<T2> t2, String s
* @return
*/
@Experimental
<T1, T2> List<Tuple2<T1, T2>> readTupleList(Class<T1> t1, Class<T2> t2, SqlStatement sql);
<T1, T2> List<Tuple2<T1, T2>> readTupleList(Class<T1> t1, Class<T2> t2, ParameterizedSql sql);

/**
* Reads results as List of {@link Tuple3} for reading JOIN SQL results typically.
Expand Down Expand Up @@ -212,7 +212,7 @@ <T1, T2, T3> List<Tuple3<T1, T2, T3>> readTupleList(Class<T1> t1, Class<T2> t2,
*/
@Experimental
<T1, T2, T3> List<Tuple3<T1, T2, T3>> readTupleList(Class<T1> t1, Class<T2> t2, Class<T3> t3,
SqlStatement sql);
ParameterizedSql sql);


}
2 changes: 2 additions & 0 deletions src/main/java/org/nkjmlab/sorm4j/OrmTransaction.java
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package org.nkjmlab.sorm4j;

import org.nkjmlab.sorm4j.typed.TypedOrmTransaction;

/**
* An transaction with object relation mapping.
*
Expand Down
Loading

0 comments on commit 65d68c5

Please sign in to comment.