Skip to content

Commit

Permalink
使用BoundSql替换PrepareSql
Browse files Browse the repository at this point in the history
  • Loading branch information
liangyanghe committed Sep 2, 2016
1 parent 5fbf02c commit e91c616
Show file tree
Hide file tree
Showing 49 changed files with 675 additions and 545 deletions.
45 changes: 45 additions & 0 deletions src/main/java/org/jfaster/mango/binding/BoundSql.java
@@ -0,0 +1,45 @@
package org.jfaster.mango.binding;

import org.jfaster.mango.type.TypeHandler;

import java.util.List;

/**
* @author ash
*/
public class BoundSql {

private String sql;
private List<Object> args;
private List<TypeHandler<?>> typeHandlers;

public BoundSql(String sql, List<Object> args, List<TypeHandler<?>> typeHandlers) {
this.sql = sql;
this.args = args;
this.typeHandlers = typeHandlers;
}

public String getSql() {
return sql;
}

public void setSql(String sql) {
this.sql = sql;
}

public List<Object> getArgs() {
return args;
}

public void setArgs(List<Object> args) {
this.args = args;
}

public List<TypeHandler<?>> getTypeHandlers() {
return typeHandlers;
}

public void setTypeHandlers(List<TypeHandler<?>> typeHandlers) {
this.typeHandlers = typeHandlers;
}
}
Expand Up @@ -16,7 +16,7 @@

package org.jfaster.mango.binding;

import org.jfaster.mango.util.jdbc.PreparedSql;
import org.jfaster.mango.type.TypeHandler;

import javax.annotation.Nullable;
import java.util.*;
Expand All @@ -32,6 +32,7 @@ public class DefaultInvocationContext implements InvocationContext {

private final StringBuilder sql = new StringBuilder();
private final List<Object> args = new LinkedList<Object>();
private final List<TypeHandler<?>> typeHandlers = new LinkedList<TypeHandler<?>>();

private String globalTable;

Expand Down Expand Up @@ -98,13 +99,14 @@ public void writeToSqlBuffer(String str) {
}

@Override
public void appendToArgs(Object obj) {
public void appendToArgs(Object obj, TypeHandler<?> typeHandler) {
args.add(obj);
typeHandlers.add(typeHandler);
}

@Override
public PreparedSql getPreparedSql() {
return new PreparedSql(sql.toString(), args);
public BoundSql getBoundSql() {
return new BoundSql(sql.toString(), args, typeHandlers);
}

@Override
Expand Down
Expand Up @@ -16,7 +16,7 @@

package org.jfaster.mango.binding;

import org.jfaster.mango.util.jdbc.PreparedSql;
import org.jfaster.mango.type.TypeHandler;

import javax.annotation.Nullable;
import java.util.List;
Expand All @@ -42,9 +42,9 @@ public interface InvocationContext {

public void writeToSqlBuffer(String str);

public void appendToArgs(Object obj);
public void appendToArgs(Object obj, TypeHandler<?> typeHandler);

public PreparedSql getPreparedSql();
public BoundSql getBoundSql();

public List<Object> getParameterValues();

Expand Down
4 changes: 2 additions & 2 deletions src/main/java/org/jfaster/mango/interceptor/Interceptor.java
Expand Up @@ -16,7 +16,7 @@

package org.jfaster.mango.interceptor;

import org.jfaster.mango.util.jdbc.PreparedSql;
import org.jfaster.mango.binding.BoundSql;
import org.jfaster.mango.util.jdbc.SQLType;

import java.util.List;
Expand All @@ -26,6 +26,6 @@
*/
public interface Interceptor {

public void intercept(PreparedSql preparedSql, List<Parameter> parameters, SQLType sqlType);
public void intercept(BoundSql preparedSql, List<Parameter> parameters, SQLType sqlType);

}
Expand Up @@ -16,7 +16,7 @@

package org.jfaster.mango.interceptor;

import org.jfaster.mango.util.jdbc.PreparedSql;
import org.jfaster.mango.binding.BoundSql;
import org.jfaster.mango.util.jdbc.SQLType;

import java.util.LinkedList;
Expand All @@ -34,7 +34,7 @@ public void addInterceptor(Interceptor interceptor) {
interceptors.add(interceptor);
}

public void intercept(PreparedSql preparedSql, List<Parameter> parameters, SQLType sqlType) {
public void intercept(BoundSql preparedSql, List<Parameter> parameters, SQLType sqlType) {
if (getInterceptors() != null) {
for (Interceptor interceptor : getInterceptors()) {
interceptor.intercept(preparedSql, parameters, sqlType);
Expand Down
Expand Up @@ -16,7 +16,7 @@

package org.jfaster.mango.interceptor;

import org.jfaster.mango.util.jdbc.PreparedSql;
import org.jfaster.mango.binding.BoundSql;
import org.jfaster.mango.util.jdbc.SQLType;
import org.jfaster.mango.binding.InvocationContext;
import org.jfaster.mango.descriptor.ParameterDescriptor;
Expand All @@ -43,7 +43,7 @@ public InvocationInterceptorChain(InterceptorChain interceptorChain,
this.sqlType = sqlType;
}

public void intercept(PreparedSql preparedSql, InvocationContext context) {
public void intercept(BoundSql preparedSql, InvocationContext context) {
if (interceptorChain.getInterceptors() != null) {
List<Object> parameterValues = context.getParameterValues();
List<Parameter> parameters = new ArrayList<Parameter>(parameterValues.size());
Expand Down
Expand Up @@ -16,7 +16,7 @@

package org.jfaster.mango.interceptor;

import org.jfaster.mango.util.jdbc.PreparedSql;
import org.jfaster.mango.binding.BoundSql;
import org.jfaster.mango.util.jdbc.SQLType;

import java.util.List;
Expand All @@ -27,12 +27,12 @@
public abstract class QueryInterceptor implements Interceptor {

@Override
public void intercept(PreparedSql preparedSql, List<Parameter> parameters, SQLType sqlType) {
public void intercept(BoundSql preparedSql, List<Parameter> parameters, SQLType sqlType) {
if (!sqlType.needChangeData()) {
interceptQuery(preparedSql, parameters);
}
}

public abstract void interceptQuery(PreparedSql preparedSql, List<Parameter> parameters);
public abstract void interceptQuery(BoundSql preparedSql, List<Parameter> parameters);

}
Expand Up @@ -16,7 +16,7 @@

package org.jfaster.mango.interceptor;

import org.jfaster.mango.util.jdbc.PreparedSql;
import org.jfaster.mango.binding.BoundSql;
import org.jfaster.mango.util.jdbc.SQLType;

import java.util.List;
Expand All @@ -27,12 +27,12 @@
public abstract class UpdateInterceptor implements Interceptor {

@Override
public void intercept(PreparedSql preparedSql, List<Parameter> parameters, SQLType sqlType) {
public void intercept(BoundSql preparedSql, List<Parameter> parameters, SQLType sqlType) {
if (sqlType.needChangeData()) {
interceptUpdate(preparedSql, parameters, sqlType);
}
}

public abstract void interceptUpdate(PreparedSql preparedSql, List<Parameter> parameters, SQLType sqlType);
public abstract void interceptUpdate(BoundSql preparedSql, List<Parameter> parameters, SQLType sqlType);

}
18 changes: 8 additions & 10 deletions src/main/java/org/jfaster/mango/jdbc/JdbcOperations.java
Expand Up @@ -16,6 +16,7 @@

package org.jfaster.mango.jdbc;

import org.jfaster.mango.binding.BoundSql;
import org.jfaster.mango.jdbc.exception.DataAccessException;
import org.jfaster.mango.mapper.RowMapper;

Expand All @@ -28,30 +29,27 @@
*/
public interface JdbcOperations {

public <T> T queryForObject(DataSource ds, String sql, Object[] args, RowMapper<T> rowMapper)
public <T> T queryForObject(DataSource ds, BoundSql boundSql, RowMapper<T> rowMapper)
throws DataAccessException;

public <T> List<T> queryForList(DataSource ds, String sql, Object[] args,
public <T> List<T> queryForList(DataSource ds, BoundSql boundSql,
ListSupplier listSupplier, RowMapper<T> rowMapper)
throws DataAccessException;

public <T> Set<T> queryForSet(DataSource ds, String sql, Object[] args,
public <T> Set<T> queryForSet(DataSource ds, BoundSql boundSql,
SetSupplier setSupplier, RowMapper<T> rowMapper)
throws DataAccessException;

public <T> Object queryForArray(DataSource ds, String sql, Object[] args, RowMapper<T> rowMapper)
public <T> Object queryForArray(DataSource ds, BoundSql boundSql, RowMapper<T> rowMapper)
throws DataAccessException;

public int update(DataSource ds, String sql, Object[] args)
public int update(DataSource ds, BoundSql boundSql)
throws DataAccessException;

public int update(DataSource ds, String sql, Object[] args, GeneratedKeyHolder holder)
public int update(DataSource ds, BoundSql boundSql, GeneratedKeyHolder holder)
throws DataAccessException;

public int[] batchUpdate(DataSource ds, String sql, List<Object[]> batchArgs)
throws DataAccessException;

public int[] batchUpdate(DataSource ds, List<String> sqls, List<Object[]> batchArgs)
public int[] batchUpdate(DataSource ds, List<BoundSql> boundSql)
throws DataAccessException;

}

0 comments on commit e91c616

Please sign in to comment.