Author: cbegin
Date: Tue May 12 05:42:36 2009
New Revision: 773792
URL: http://svn.apache.org/viewvc?rev=773792&view=rev
Log:
Implemented Generated Key Support
Added:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/SqlCommandType.java
- copied, changed from r773352,
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/binding/MapperMethodType.java
Removed:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/binding/MapperMethodType.java
Modified:
ibatis/trunk/java/ibatis-3/TODO
ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/main/java/com/ibatis/sqlmap/engine/builder/Ibatis2Configuration.java
ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/main/java/com/ibatis/sqlmap/engine/builder/XmlSqlStatementParser.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/annotations/Annotations.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/binding/MapperMethod.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/SequentialMapperBuilder.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/annotation/MapperAnnotationParser.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/XMLMapperConfigParser.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/XMLStatementParser.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/ibatis-3-mapper.dtd
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/BatchExecutor.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/statement/BaseStatementHandler.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/statement/PreparedStatementHandler.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/statement/SimpleStatementHandler.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/Configuration.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/MappedStatement.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/session/SqlSession.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/session/defaults/DefaultSqlSession.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/builder/MapperConfig.xml
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/executor/BaseExecutorTest.java
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/executor/ExecutorTestHelper.java
ibatis/trunk/java/ibatis-3/version.properties
Modified: ibatis/trunk/java/ibatis-3/TODO
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/TODO?rev=773792&r1=773791&r2=773792&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/TODO (original)
+++ ibatis/trunk/java/ibatis-3/TODO Tue May 12 05:42:36 2009
@@ -4,12 +4,13 @@
Required:
-* Return selectKey or autogen key from session.insert()
+* Apply selectKey to parameterObject
Nice to Have:
-
+* Commit required option at statement level
* Add resultType automapping option for collections so a resultMap isn' t
required
* Auto result/param types detected for bound XML statements
* Named parameter parsing/merging
* commitRequired option at the statement level
* Wrap collection parameter objects in a map automatically
+* Allow lazy loading across connection boundaries
\ No newline at end of file
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/main/java/com/ibatis/sqlmap/engine/builder/Ibatis2Configuration.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/main/java/com/ibatis/sqlmap/engine/builder/Ibatis2Configuration.java?rev=773792&r1=773791&r2=773792&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/main/java/com/ibatis/sqlmap/engine/builder/Ibatis2Configuration.java
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/main/java/com/ibatis/sqlmap/engine/builder/Ibatis2Configuration.java
Tue May 12 05:42:36 2009
@@ -28,7 +28,7 @@
private Map<String, Boolean> postSelectKeyMap;
public Ibatis2Configuration() {
- setGeneratedKeysEnabled(false);
+ setUseGeneratedKeys(false);
this.flushCachePlugin = new FlushCacheInterceptor();
this.addInterceptor(flushCachePlugin);
this.postSelectKeyMap = new HashMap<String, Boolean>();
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/main/java/com/ibatis/sqlmap/engine/builder/XmlSqlStatementParser.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/main/java/com/ibatis/sqlmap/engine/builder/XmlSqlStatementParser.java?rev=773792&r1=773791&r2=773792&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/main/java/com/ibatis/sqlmap/engine/builder/XmlSqlStatementParser.java
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-compat/src/main/java/com/ibatis/sqlmap/engine/builder/XmlSqlStatementParser.java
Tue May 12 05:42:36 2009
@@ -77,8 +77,16 @@
SqlSource sqlSource = new
SqlSourceFactory(mapParser).newSqlSourceIntance(mapParser, context);
+ String nodeName = context.getNode().getNodeName();
+ SqlCommandType sqlCommandType;
+ try {
+ sqlCommandType = SqlCommandType.valueOf(nodeName.toUpperCase());
+ } catch (Exception e) {
+ sqlCommandType = SqlCommandType.UNKNOWN;
+ }
+
- MappedStatement.Builder builder = new
MappedStatement.Builder(configuration, id, sqlSource);
+ MappedStatement.Builder builder = new
MappedStatement.Builder(configuration, id, sqlSource,sqlCommandType);
builder.useCache(true);
if (!"select".equals(context.getNode().getNodeName())) {
@@ -213,7 +221,7 @@
ArrayList<ResultMap> resultMapList = new ArrayList<ResultMap>();
resultMapList.add(resultMapBuilder.build());
- MappedStatement.Builder builder = new
MappedStatement.Builder(configuration, keyStatementId, source);
+ MappedStatement.Builder builder = new
MappedStatement.Builder(configuration, keyStatementId, source,
SqlCommandType.SELECT);
builder.resultMaps(resultMapList);
configuration.setPostSelectKey(keyStatementId, runStatementFirst);
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/annotations/Annotations.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/annotations/Annotations.java?rev=773792&r1=773791&r2=773792&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/annotations/Annotations.java
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/annotations/Annotations.java
Tue May 12 05:42:36 2009
@@ -167,6 +167,10 @@
int fetchSize() default -1;
int timeout() default -1;
+
+ boolean useGeneratedKeys() default false;
+
+ String keyProperty() default "id";
}
@Retention(RetentionPolicy.RUNTIME)
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/binding/MapperMethod.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/binding/MapperMethod.java?rev=773792&r1=773791&r2=773792&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/binding/MapperMethod.java
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/binding/MapperMethod.java
Tue May 12 05:42:36 2009
@@ -1,7 +1,7 @@
package org.apache.ibatis.binding;
import org.apache.ibatis.executor.Executor;
-import org.apache.ibatis.mapping.Configuration;
+import org.apache.ibatis.mapping.*;
import org.apache.ibatis.session.SqlSession;
import java.lang.reflect.Method;
@@ -13,7 +13,7 @@
private SqlSession sqlSession;
private Configuration config;
- private MapperMethodType type;
+ private SqlCommandType type;
private String commandName;
private Method method;
@@ -36,16 +36,16 @@
public Object execute(Object[] args) throws SQLException {
Object result;
- if (MapperMethodType.INSERT == type) {
+ if (SqlCommandType.INSERT == type) {
Object param = getParam(args);
result = sqlSession.insert(commandName, param);
- } else if (MapperMethodType.UPDATE == type) {
+ } else if (SqlCommandType.UPDATE == type) {
Object param = getParam(args);
result = sqlSession.update(commandName, param);
- } else if (MapperMethodType.DELETE == type) {
+ } else if (SqlCommandType.DELETE == type) {
Object param = getParam(args);
result = sqlSession.delete(commandName, param);
- } else if (MapperMethodType.SELECT == type) {
+ } else if (SqlCommandType.SELECT == type) {
if (returnsList) {
result = executeForList(args);
} else {
@@ -78,13 +78,13 @@
private void determineCommandType() {
String methodName = method.getName();
if (methodName.startsWith("insert") || methodName.startsWith("create")) {
- type = MapperMethodType.INSERT;
+ type = SqlCommandType.INSERT;
} else if (methodName.startsWith("update") ||
methodName.startsWith("save")) {
- type = MapperMethodType.UPDATE;
+ type = SqlCommandType.UPDATE;
} else if (methodName.startsWith("delete") ||
methodName.startsWith("remove")) {
- type = MapperMethodType.DELETE;
+ type = SqlCommandType.DELETE;
} else if (methodName.startsWith("select") ||
methodName.startsWith("find")) {
- type = MapperMethodType.SELECT;
+ type = SqlCommandType.SELECT;
} else {
throw new BindingException("Unkown execution method for: " +
commandName);
}
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/SequentialMapperBuilder.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/SequentialMapperBuilder.java?rev=773792&r1=773791&r2=773792&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/SequentialMapperBuilder.java
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/SequentialMapperBuilder.java
Tue May 12 05:42:36 2009
@@ -210,13 +210,18 @@
boolean isSelect,
boolean flushCache,
boolean useCache,
- StatementType statementType) {
+ StatementType statementType,
+ SqlCommandType sqlCommandType,
+ boolean useGeneratedKeys,
+ String keyProperty) {
id = applyNamespace(id);
- MappedStatement.Builder statementBuilder = new
MappedStatement.Builder(configuration, id, sqlSource);
+ MappedStatement.Builder statementBuilder = new
MappedStatement.Builder(configuration, id, sqlSource, sqlCommandType);
statementBuilder.resource(resource);
statementBuilder.fetchSize(fetchSize);
statementBuilder.statementType(statementType);
+ statementBuilder.useGeneratedKeys(useGeneratedKeys);
+ statementBuilder.keyProperty(keyProperty);
setStatementTimeout(timeout, statementBuilder);
setStatementParameterMap(parameterMap, parameterType, statementBuilder);
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/annotation/MapperAnnotationParser.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/annotation/MapperAnnotationParser.java?rev=773792&r1=773791&r2=773792&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/annotation/MapperAnnotationParser.java
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/annotation/MapperAnnotationParser.java
Tue May 12 05:42:36 2009
@@ -164,6 +164,7 @@
}
private void parseStatement(Method method) {
+ Configuration configuration = sequentialBuilder.getConfiguration();
SqlSource sqlSource = getSqlSourceFromAnnotations(method);
if (sqlSource != null) {
Options options = method.getAnnotation(Options.class);
@@ -175,6 +176,9 @@
Integer timeout = null;
StatementType statementType = StatementType.PREPARED;
ResultSetType resultSetType = ResultSetType.FORWARD_ONLY;
+ SqlCommandType sqlCommandType = getSqlCommandType(method);
+ boolean useGeneratedKeys = configuration.isUseGeneratedKeys() &&
SqlCommandType.INSERT.equals(sqlCommandType);
+ String keyProperty = "id";
if (options != null) {
flushCache = options.flushCache();
useCache = options.useCache();
@@ -182,6 +186,8 @@
timeout = options.timeout() > -1 ? options.timeout() : null;
statementType = options.statementType();
resultSetType = options.resultSetType();
+ useGeneratedKeys = options.useGeneratedKeys();
+ keyProperty = options.keyProperty();
}
sequentialBuilder.statement(
mappedStatementId,
@@ -196,7 +202,10 @@
isSelect, // IsSelectStatement
flushCache,
useCache,
- statementType);
+ statementType,
+ sqlCommandType,
+ useGeneratedKeys,
+ keyProperty);
}
}
@@ -255,6 +264,15 @@
}
}
+ private SqlCommandType getSqlCommandType(Method method) {
+ Class[] types = {Select.class, Insert.class, Update.class, Delete.class};
+ Class type = chooseAnnotationType(method, types);
+ if (type != null) {
+ return SqlCommandType.valueOf(type.getSimpleName().toUpperCase());
+ }
+ return SqlCommandType.UNKNOWN;
+ }
+
private Class getSqlAnnotationType(Method method) {
Class[] types = {Select.class, Insert.class, Update.class, Delete.class};
return chooseAnnotationType(method, types);
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/XMLMapperConfigParser.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/XMLMapperConfigParser.java?rev=773792&r1=773791&r2=773792&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/XMLMapperConfigParser.java
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/XMLMapperConfigParser.java
Tue May 12 05:42:36 2009
@@ -134,7 +134,7 @@
configuration.setMultipleResultSetsEnabled(booleanValueOf(props.getProperty("multipleResultSetsEnabled"),
true));
configuration.setUseColumnLabel(booleanValueOf(props.getProperty("useColumnLabel"),
true));
configuration.setEnhancementEnabled(booleanValueOf(props.getProperty("enhancementEnabled"),
false));
-
configuration.setGeneratedKeysEnabled(booleanValueOf(props.getProperty("generatedKeysEnabled"),
false));
+
configuration.setUseGeneratedKeys(booleanValueOf(props.getProperty("useGeneratedKeys"),
false));
configuration.setDefaultExecutorType(ExecutorType.valueOf(stringValueOf(props.getProperty("defaultExecutorType"),
"SIMPLE")));
configuration.setDefaultStatementTimeout(integerValueOf(props.getProperty("defaultStatementTimeout"),
null));
}
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/XMLStatementParser.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/XMLStatementParser.java?rev=773792&r1=773791&r2=773792&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/XMLStatementParser.java
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/XMLStatementParser.java
Tue May 12 05:42:36 2009
@@ -1,9 +1,6 @@
package org.apache.ibatis.builder.xml;
-import org.apache.ibatis.mapping.Configuration;
-import org.apache.ibatis.mapping.ResultSetType;
-import org.apache.ibatis.mapping.SqlSource;
-import org.apache.ibatis.mapping.StatementType;
+import org.apache.ibatis.mapping.*;
import org.apache.ibatis.builder.BaseParser;
import org.apache.ibatis.builder.ParserException;
import org.apache.ibatis.builder.SequentialMapperBuilder;
@@ -41,6 +38,7 @@
Class parameterTypeClass = resolveClass(parameterType);
String resultMap = context.getStringAttribute("resultMap");
String resultType = context.getStringAttribute("resultType");
+
Class resultTypeClass = resolveClass(resultType);
String resultSetType = context.getStringAttribute("resultSetType");
StatementType statementType =
StatementType.valueOf(context.getStringAttribute("statementType",
StatementType.PREPARED.toString()));
@@ -49,9 +47,15 @@
List<SqlNode> contents = parseDynamicTags(context);
MixedSqlNode rootSqlNode = new MixedSqlNode(contents);
SqlSource sqlSource = new DynamicSqlSource(configuration, rootSqlNode);
+ String nodeName = context.getNode().getNodeName();
+ SqlCommandType sqlCommandType =
SqlCommandType.valueOf(nodeName.toUpperCase());
+
+ String keyProperty = context.getStringAttribute("keyProperty");
+ boolean useGeneratedKeys = context.getBooleanAttribute("useGeneratedKeys",
+ configuration.isUseGeneratedKeys() &&
SqlCommandType.INSERT.equals(sqlCommandType));
sequentialBuilder.statement(id, sqlSource, fetchSize, timeout,
parameterMap, parameterTypeClass,
- resultMap, resultTypeClass, resultSetTypeEnum, isSelect, flushCache,
useCache, statementType);
+ resultMap, resultTypeClass, resultSetTypeEnum, isSelect, flushCache,
useCache, statementType, sqlCommandType,useGeneratedKeys,keyProperty);
}
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/ibatis-3-mapper.dtd
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/ibatis-3-mapper.dtd?rev=773792&r1=773791&r2=773792&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/ibatis-3-mapper.dtd
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/builder/xml/ibatis-3-mapper.dtd
Tue May 12 05:42:36 2009
@@ -151,6 +151,8 @@
timeout CDATA #IMPLIED
flushCache (true|false) #IMPLIED
statementType (STATEMENT|PREPARED|CALLABLE) #IMPLIED
+keyProperty CDATA #IMPLIED
+useGeneratedKeys (true|false) #IMPLIED
>
<!ELEMENT selectKey (#PCDATA | include | prefix | where | set | foreach |
choose | if)*>
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/BatchExecutor.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/BatchExecutor.java?rev=773792&r1=773791&r2=773792&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/BatchExecutor.java
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/BatchExecutor.java
Tue May 12 05:42:36 2009
@@ -4,6 +4,8 @@
import org.apache.ibatis.executor.statement.StatementHandler;
import org.apache.ibatis.mapping.*;
import org.apache.ibatis.transaction.Transaction;
+import org.apache.ibatis.reflection.MetaObject;
+import org.apache.ibatis.type.*;
import java.sql.*;
import java.util.*;
@@ -61,6 +63,7 @@
BatchResult batchResult = batchResultList.get(i);
try {
batchResult.setUpdateCounts(stmt.executeBatch());
+ processBatchGeneratedKeys(batchResult, stmt);
} catch (BatchUpdateException e) {
StringBuffer message = new StringBuffer();
message.append(batchResult.getMappedStatement().getId())
@@ -88,6 +91,42 @@
}
}
+ protected void processBatchGeneratedKeys(BatchResult batchResult, Statement
stmt) throws SQLException {
+ MappedStatement ms = batchResult.getMappedStatement();
+ Configuration configuration = ms.getConfiguration();
+ TypeHandlerRegistry typeHandlerRegistry =
configuration.getTypeHandlerRegistry();
+ Object parameter = batchResult.getParameterObject();
+ if (parameter != null && ms.isUseGeneratedKeys()) {
+ String keyProperty = ms.getKeyProperty();
+ final MetaObject metaParam = MetaObject.forObject(parameter);
+ if (keyProperty != null && metaParam.hasSetter(keyProperty)) {
+ Class keyPropertyType = metaParam.getSetterType(keyProperty);
+ TypeHandler th = typeHandlerRegistry.getTypeHandler(keyPropertyType);
+ if (th != null) {
+ ResultSet rs = stmt.getGeneratedKeys();
+ try {
+ ResultSetMetaData rsmd = rs.getMetaData();
+ int colCount = rsmd.getColumnCount();
+ if (colCount > 0) {
+ String colName = rsmd.getColumnName(1);
+ while (rs.next()) {
+ Object value = th.getResult(rs,colName);
+ metaParam.setValue(keyProperty,value);
+ }
+ }
+ } finally {
+ try {
+ if (rs != null) rs.close();
+ } catch (Exception e) {
+ //ignore
+ }
+ }
+ }
+ }
+ }
+ }
+
+
}
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/statement/BaseStatementHandler.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/statement/BaseStatementHandler.java?rev=773792&r1=773791&r2=773792&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/statement/BaseStatementHandler.java
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/statement/BaseStatementHandler.java
Tue May 12 05:42:36 2009
@@ -5,8 +5,8 @@
import org.apache.ibatis.executor.result.ResultHandler;
import org.apache.ibatis.executor.resultset.ResultSetHandler;
import org.apache.ibatis.mapping.*;
-import org.apache.ibatis.reflection.ObjectFactory;
-import org.apache.ibatis.type.TypeHandlerRegistry;
+import org.apache.ibatis.reflection.*;
+import org.apache.ibatis.type.*;
import java.sql.*;
@@ -70,25 +70,35 @@
throws SQLException;
- protected Integer processGeneratedKeys(MappedStatement ms, Statement stmt,
Object parameter) throws SQLException {
- if (ms.getConfiguration().isGeneratedKeysEnabled()) {
- ResultSet rs = stmt.getGeneratedKeys();
- try {
- while (rs.next()) {
- Object object = rs.getObject(1);
- if (object != null) {
- return Integer.parseInt(object.toString());
+ protected void processGeneratedKeys(MappedStatement ms, Statement stmt,
Object parameter) throws SQLException {
+ if (parameter != null && ms.isUseGeneratedKeys()) {
+ String keyProperty = ms.getKeyProperty();
+ final MetaObject metaParam = MetaObject.forObject(parameter);
+ if (keyProperty != null && metaParam.hasSetter(keyProperty)) {
+ Class keyPropertyType = metaParam.getSetterType(keyProperty);
+ TypeHandler th = typeHandlerRegistry.getTypeHandler(keyPropertyType);
+ if (th != null) {
+ ResultSet rs = stmt.getGeneratedKeys();
+ try {
+ ResultSetMetaData rsmd = rs.getMetaData();
+ int colCount = rsmd.getColumnCount();
+ if (colCount > 0) {
+ String colName = rsmd.getColumnName(1);
+ while (rs.next()) {
+ Object value = th.getResult(rs,colName);
+ metaParam.setValue(keyProperty,value);
+ }
+ }
+ } finally {
+ try {
+ if (rs != null) rs.close();
+ } catch (Exception e) {
+ //ignore
+ }
}
}
- } finally {
- try {
- if (rs != null) rs.close();
- } catch (Exception e) {
- //ignore
- }
}
}
- return null;
}
protected void setStatementTimeout(Statement stmt)
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/statement/PreparedStatementHandler.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/statement/PreparedStatementHandler.java?rev=773792&r1=773791&r2=773792&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/statement/PreparedStatementHandler.java
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/statement/PreparedStatementHandler.java
Tue May 12 05:42:36 2009
@@ -18,10 +18,8 @@
PreparedStatement ps = (PreparedStatement) statement;
ps.execute();
int result = ps.getUpdateCount();
- if (mappedStatement.getConfiguration().isGeneratedKeysEnabled()) {
- Object parameterObject = boundSql.getParameterObject();
- result = processGeneratedKeys(mappedStatement, ps, parameterObject);
- }
+ Object parameterObject = boundSql.getParameterObject();
+ processGeneratedKeys(mappedStatement, ps, parameterObject);
return result;
}
@@ -40,7 +38,7 @@
protected Statement instantiateStatement(Connection connection) throws
SQLException {
String sql = boundSql.getSql();
- if (mappedStatement.getConfiguration().isGeneratedKeysEnabled()) {
+ if (mappedStatement.isUseGeneratedKeys()) {
return connection.prepareStatement(sql,
PreparedStatement.RETURN_GENERATED_KEYS);
} else if (mappedStatement.getResultSetType() != null) {
return connection.prepareStatement(sql,
mappedStatement.getResultSetType().getValue(), ResultSet.CONCUR_READ_ONLY);
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/statement/SimpleStatementHandler.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/statement/SimpleStatementHandler.java?rev=773792&r1=773791&r2=773792&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/statement/SimpleStatementHandler.java
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/executor/statement/SimpleStatementHandler.java
Tue May 12 05:42:36 2009
@@ -2,7 +2,7 @@
import org.apache.ibatis.executor.Executor;
import org.apache.ibatis.executor.result.ResultHandler;
-import org.apache.ibatis.mapping.MappedStatement;
+import org.apache.ibatis.mapping.*;
import java.sql.*;
import java.util.List;
@@ -17,15 +17,13 @@
throws SQLException {
String sql = boundSql.getSql();
Object parameterObject = boundSql.getParameterObject();
- if (mappedStatement.getConfiguration().isGeneratedKeysEnabled()) {
+ if (mappedStatement.isUseGeneratedKeys()) {
statement.execute(sql, Statement.RETURN_GENERATED_KEYS);
} else {
statement.execute(sql);
}
int result = statement.getUpdateCount();
- if (mappedStatement.getConfiguration().isGeneratedKeysEnabled()) {
- result = processGeneratedKeys(mappedStatement, statement,
parameterObject);
- }
+ processGeneratedKeys(mappedStatement, statement, parameterObject);
return result;
}
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/Configuration.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/Configuration.java?rev=773792&r1=773791&r2=773792&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/Configuration.java
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/Configuration.java
Tue May 12 05:42:36 2009
@@ -29,7 +29,7 @@
private boolean lazyLoadingEnabled = true;
private boolean enhancementEnabled = false;
private boolean multipleResultSetsEnabled = true;
- private boolean generatedKeysEnabled = false;
+ private boolean useGeneratedKeys = false;
private boolean useColumnLabel = true;
private boolean cacheEnabled = true;
private Integer defaultStatementTimeout;
@@ -98,12 +98,12 @@
this.multipleResultSetsEnabled = multipleResultSetsEnabled;
}
- public boolean isGeneratedKeysEnabled() {
- return generatedKeysEnabled;
+ public boolean isUseGeneratedKeys() {
+ return useGeneratedKeys;
}
- public void setGeneratedKeysEnabled(boolean generatedKeysEnabled) {
- this.generatedKeysEnabled = generatedKeysEnabled;
+ public void setUseGeneratedKeys(boolean useGeneratedKeys) {
+ this.useGeneratedKeys = useGeneratedKeys;
}
public ExecutorType getDefaultExecutorType() {
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/MappedStatement.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/MappedStatement.java?rev=773792&r1=773791&r2=773792&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/MappedStatement.java
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/MappedStatement.java
Tue May 12 05:42:36 2009
@@ -19,6 +19,9 @@
private List<ResultMap> resultMaps;
private boolean flushCacheRequired;
private boolean useCache;
+ private SqlCommandType sqlCommandType;
+ private boolean useGeneratedKeys;
+ private String keyProperty;
private MappedStatement() {
}
@@ -26,7 +29,7 @@
public static class Builder {
private MappedStatement mappedStatement = new MappedStatement();
- public Builder(Configuration configuration, String id, SqlSource
sqlSource) {
+ public Builder(Configuration configuration, String id, SqlSource
sqlSource, SqlCommandType sqlCommandType) {
mappedStatement.configuration = configuration;
mappedStatement.id = id;
mappedStatement.sqlSource = sqlSource;
@@ -34,6 +37,9 @@
mappedStatement.parameterMap = new ParameterMap.Builder(configuration,
"defaultParameterMap", Object.class, new ArrayList<ParameterMapping>()).build();
mappedStatement.resultMaps = new ArrayList<ResultMap>();
mappedStatement.timeout = configuration.getDefaultStatementTimeout();
+ mappedStatement.sqlCommandType = sqlCommandType;
+ mappedStatement.useGeneratedKeys = configuration.isUseGeneratedKeys()
+ && SqlCommandType.INSERT.equals(sqlCommandType);
}
public Builder resource(String resource) {
@@ -90,6 +96,16 @@
return this;
}
+ public Builder useGeneratedKeys(boolean useGeneratedKeys) {
+ mappedStatement.useGeneratedKeys = useGeneratedKeys;
+ return this;
+ }
+
+ public Builder keyProperty(String keyProperty) {
+ mappedStatement.keyProperty = keyProperty;
+ return this;
+ }
+
public MappedStatement build() {
assert mappedStatement.configuration != null;
assert mappedStatement.id != null;
@@ -100,6 +116,18 @@
}
+ public String getKeyProperty() {
+ return keyProperty;
+ }
+
+ public boolean isUseGeneratedKeys() {
+ return useGeneratedKeys;
+ }
+
+ public SqlCommandType getSqlCommandType() {
+ return sqlCommandType;
+ }
+
public String getResource() {
return resource;
}
Copied:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/SqlCommandType.java
(from r773352,
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/binding/MapperMethodType.java)
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/SqlCommandType.java?p2=ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/SqlCommandType.java&p1=ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/binding/MapperMethodType.java&r1=773352&r2=773792&rev=773792&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/binding/MapperMethodType.java
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/mapping/SqlCommandType.java
Tue May 12 05:42:36 2009
@@ -1,5 +1,6 @@
-package org.apache.ibatis.binding;
+package org.apache.ibatis.mapping;
+
+public enum SqlCommandType {
+ UNKNOWN, INSERT, UPDATE, DELETE, SELECT;
-public enum MapperMethodType {
- INSERT, UPDATE, DELETE, SELECT
}
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/session/SqlSession.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/session/SqlSession.java?rev=773792&r1=773791&r2=773792&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/session/SqlSession.java
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/session/SqlSession.java
Tue May 12 05:42:36 2009
@@ -21,9 +21,9 @@
void select(String statement, Object parameter, int offset, int limit,
ResultHandler handler);
- Object insert(String statement);
+ int insert(String statement);
- Object insert(String statement, Object parameter);
+ int insert(String statement, Object parameter);
int update(String statement);
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/session/defaults/DefaultSqlSession.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/session/defaults/DefaultSqlSession.java?rev=773792&r1=773791&r2=773792&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/session/defaults/DefaultSqlSession.java
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/main/java/org/apache/ibatis/session/defaults/DefaultSqlSession.java
Tue May 12 05:42:36 2009
@@ -65,12 +65,11 @@
}
}
- public Object insert(String statement) {
+ public int insert(String statement) {
return insert(statement, null);
}
- public Object insert(String statement, Object parameter) {
- //TODO: Return selectKey or autogen key.
+ public int insert(String statement, Object parameter) {
return update(statement, parameter);
}
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/builder/MapperConfig.xml
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/builder/MapperConfig.xml?rev=773792&r1=773791&r2=773792&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/builder/MapperConfig.xml
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/builder/MapperConfig.xml
Tue May 12 05:42:36 2009
@@ -15,8 +15,8 @@
<setting name="lazyLoadingEnabled" value="true"/>
<setting name="multipleResultSetsEnabled" value="true"/>
<setting name="useColumnLabel" value="true"/>
+ <setting name="useGeneratedKeys" value="false"/>
<setting name="enhancementEnabled" value="false"/>
- <setting name="generatedKeysEnabled" value="false"/>
<setting name="defaultExecutorType" value="SIMPLE"/>
<setting name="defaultStatementTimeout" value="25000"/>
</settings>
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/executor/BaseExecutorTest.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/executor/BaseExecutorTest.java?rev=773792&r1=773791&r2=773792&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/executor/BaseExecutorTest.java
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/executor/BaseExecutorTest.java
Tue May 12 05:42:36 2009
@@ -19,7 +19,7 @@
config = new Configuration();
config.setEnhancementEnabled(true);
config.setLazyLoadingEnabled(true);
- config.setGeneratedKeysEnabled(false);
+ config.setUseGeneratedKeys(false);
config.setMultipleResultSetsEnabled(true);
config.setUseColumnLabel(true);
config.setDefaultStatementTimeout(5000);
@@ -64,24 +64,22 @@
public void shouldInsertNewAuthorWithAutoKey() throws Exception {
DataSource ds = createBlogDataSource();
Connection connection = ds.getConnection();
- config.setGeneratedKeysEnabled(true);
- try {
- Executor executor = createExecutor(new JdbcTransaction(connection,
false));
- Author author = new Author(-1, "someone", "******",
"[email protected]", null, Section.NEWS);
- MappedStatement insertStatement =
ExecutorTestHelper.prepareInsertAuthorMappedStatementWithAutoKey(config);
- MappedStatement selectStatement =
ExecutorTestHelper.prepareSelectOneAuthorMappedStatement(config);
- int id = executor.update(insertStatement, author);
- if (id != BatchExecutor.BATCH_UPDATE_RETURN_VALUE) {
- author.setId(id);
- List<Author> authors = executor.query(selectStatement, id,
Executor.NO_ROW_OFFSET, Executor.NO_ROW_LIMIT, Executor.NO_RESULT_HANDLER);
- executor.flushStatements();
- executor.rollback(true);
- assertEquals(1, authors.size());
- assertEquals(author.toString(), authors.get(0).toString());
- assertTrue(id >= 10000);
- }
- } finally {
- config.setGeneratedKeysEnabled(false);
+ Executor executor = createExecutor(new JdbcTransaction(connection, false));
+ Author author = new Author(-1, "someone", "******", "[email protected]",
null, Section.NEWS);
+ MappedStatement insertStatement =
ExecutorTestHelper.prepareInsertAuthorMappedStatementWithAutoKey(config);
+ MappedStatement selectStatement =
ExecutorTestHelper.prepareSelectOneAuthorMappedStatement(config);
+ int rows = executor.update(insertStatement, author);
+ assertTrue(rows > 0 || rows == BatchExecutor.BATCH_UPDATE_RETURN_VALUE);
+ if (rows == BatchExecutor.BATCH_UPDATE_RETURN_VALUE) {
+ executor.flushStatements();
+ }
+ assertTrue(-1 != author.getId());
+ if (author.getId() != BatchExecutor.BATCH_UPDATE_RETURN_VALUE) {
+ List<Author> authors = executor.query(selectStatement, author.getId(),
Executor.NO_ROW_OFFSET, Executor.NO_ROW_LIMIT, Executor.NO_RESULT_HANDLER);
+ executor.rollback(true);
+ assertEquals(1, authors.size());
+ assertEquals(author.toString(), authors.get(0).toString());
+ assertTrue(author.getId() >= 10000);
}
}
Modified:
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/executor/ExecutorTestHelper.java
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/executor/ExecutorTestHelper.java?rev=773792&r1=773791&r2=773792&view=diff
==============================================================================
---
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/executor/ExecutorTestHelper.java
(original)
+++
ibatis/trunk/java/ibatis-3/ibatis-3-core/src/test/java/org/apache/ibatis/executor/ExecutorTestHelper.java
Tue May 12 05:42:36 2009
@@ -26,7 +26,7 @@
public static MappedStatement prepareInsertAuthorMappedStatement(final
Configuration config) {
final TypeHandlerRegistry registry = config.getTypeHandlerRegistry();
- MappedStatement ms = new MappedStatement.Builder(config, "insertAuthor",
new StaticSqlSource("INSERT INTO author
(id,username,password,email,bio,favourite_section) values(?,?,?,?,?,?)"))
+ MappedStatement ms = new MappedStatement.Builder(config, "insertAuthor",
new StaticSqlSource("INSERT INTO author
(id,username,password,email,bio,favourite_section) values(?,?,?,?,?,?)"),
SqlCommandType.INSERT)
.parameterMap(
new ParameterMap.Builder(
config, "defaultParameterMap", Author.class,
@@ -46,7 +46,7 @@
public static MappedStatement
prepareInsertAuthorMappedStatementWithAutoKey(final Configuration config) {
final TypeHandlerRegistry registry = config.getTypeHandlerRegistry();
- MappedStatement ms = new MappedStatement.Builder(config, "insertAuthor",
new StaticSqlSource("INSERT INTO author
(username,password,email,bio,favourite_section) values(?,?,?,?,?)"))
+ MappedStatement ms = new MappedStatement.Builder(config, "insertAuthor",
new StaticSqlSource("INSERT INTO author
(username,password,email,bio,favourite_section) values(?,?,?,?,?)"),
SqlCommandType.INSERT)
.parameterMap(
new ParameterMap.Builder(config, "defaultParameterMap",
Author.class, new ArrayList<ParameterMapping>() {
{
@@ -58,13 +58,15 @@
}
}).build())
.cache(authorCache)
+ .useGeneratedKeys(true)
+ .keyProperty("id")
.build();
return ms;
}
public static MappedStatement prepareInsertAuthorProc(final Configuration
config) {
final TypeHandlerRegistry registry = config.getTypeHandlerRegistry();
- MappedStatement ms = new MappedStatement.Builder(config,
"insertAuthorProc", new StaticSqlSource("{call insertAuthor(?,?,?,?)}"))
+ MappedStatement ms = new MappedStatement.Builder(config,
"insertAuthorProc", new StaticSqlSource("{call insertAuthor(?,?,?,?)}"),
SqlCommandType.INSERT)
.parameterMap(new ParameterMap.Builder(config, "defaultParameterMap",
Author.class,
new ArrayList<ParameterMapping>() {
{
@@ -80,7 +82,7 @@
public static MappedStatement prepareUpdateAuthorMappedStatement(final
Configuration config) {
final TypeHandlerRegistry registry = config.getTypeHandlerRegistry();
- MappedStatement ms = new MappedStatement.Builder(config, "updateAuthor",
new StaticSqlSource("UPDATE author SET username = ?, password = ?, email = ?,
bio = ? WHERE id = ?"))
+ MappedStatement ms = new MappedStatement.Builder(config, "updateAuthor",
new StaticSqlSource("UPDATE author SET username = ?, password = ?, email = ?,
bio = ? WHERE id = ?"), SqlCommandType.UPDATE)
.parameterMap(new ParameterMap.Builder(config, "defaultParameterMap",
Author.class,
new ArrayList<ParameterMapping>() {
{
@@ -97,7 +99,7 @@
public static MappedStatement prepareDeleteAuthorMappedStatement(final
Configuration config) {
final TypeHandlerRegistry registry = config.getTypeHandlerRegistry();
- MappedStatement ms = new MappedStatement.Builder(config, "deleteAuthor",
new StaticSqlSource("DELETE FROM author WHERE id = ?"))
+ MappedStatement ms = new MappedStatement.Builder(config, "deleteAuthor",
new StaticSqlSource("DELETE FROM author WHERE id = ?"), SqlCommandType.DELETE)
.parameterMap(new ParameterMap.Builder(config, "defaultParameterMap",
Author.class,
new ArrayList<ParameterMapping>() {
{
@@ -124,7 +126,7 @@
}
}).build();
- MappedStatement ms = new MappedStatement.Builder(config, "selectAuthor",
new StaticSqlSource("SELECT * FROM author WHERE id = ?"))
+ MappedStatement ms = new MappedStatement.Builder(config, "selectAuthor",
new StaticSqlSource("SELECT * FROM author WHERE id = ?"), SqlCommandType.SELECT)
.parameterMap(new ParameterMap.Builder(config, "defaultParameterMap",
Author.class,
new ArrayList<ParameterMapping>() {
{
@@ -142,7 +144,7 @@
public static MappedStatement
prepareSelectAllAuthorsAutoMappedStatement(final Configuration config) {
final TypeHandlerRegistry registry = config.getTypeHandlerRegistry();
- return new MappedStatement.Builder(config, "selectAuthorAutoMap", new
StaticSqlSource("SELECT * FROM author ORDER BY id"))
+ return new MappedStatement.Builder(config, "selectAuthorAutoMap", new
StaticSqlSource("SELECT * FROM author ORDER BY id"), SqlCommandType.SELECT)
.resultMaps(new ArrayList<ResultMap>() {
{
add(new ResultMap.Builder(config, "defaultResultMap",
Author.class, new ArrayList() {
@@ -157,7 +159,7 @@
public static MappedStatement
prepareSelectOneAuthorMappedStatementWithConstructorResults(final Configuration
config) {
final TypeHandlerRegistry registry = config.getTypeHandlerRegistry();
- MappedStatement ms = new MappedStatement.Builder(config, "selectAuthor",
new StaticSqlSource("SELECT * FROM author WHERE id = ?"))
+ MappedStatement ms = new MappedStatement.Builder(config, "selectAuthor",
new StaticSqlSource("SELECT * FROM author WHERE id = ?"), SqlCommandType.SELECT)
.parameterMap(new ParameterMap.Builder(config, "defaultParameterMap",
Author.class,
new ArrayList<ParameterMapping>() {
{
@@ -189,7 +191,7 @@
public static MappedStatement prepareSelectTwoSetsOfAuthorsProc(final
Configuration config) {
final TypeHandlerRegistry registry = config.getTypeHandlerRegistry();
- MappedStatement ms = new MappedStatement.Builder(config,
"selectTwoSetsOfAuthors", new StaticSqlSource("{call
selectTwoSetsOfAuthors(?,?)}"))
+ MappedStatement ms = new MappedStatement.Builder(config,
"selectTwoSetsOfAuthors", new StaticSqlSource("{call
selectTwoSetsOfAuthors(?,?)}"), SqlCommandType.SELECT)
.statementType(StatementType.CALLABLE)
.parameterMap(new ParameterMap.Builder(
config, "defaultParameterMap", Author.class,
@@ -219,7 +221,7 @@
public static MappedStatement prepareSelectAuthorViaOutParams(final
Configuration config) {
final TypeHandlerRegistry registry = config.getTypeHandlerRegistry();
- MappedStatement ms = new MappedStatement.Builder(config,
"selectAuthorViaOutParams", new StaticSqlSource("{call
selectAuthorViaOutParams(?,?,?,?,?)}"))
+ MappedStatement ms = new MappedStatement.Builder(config,
"selectAuthorViaOutParams", new StaticSqlSource("{call
selectAuthorViaOutParams(?,?,?,?,?)}"), SqlCommandType.SELECT)
.statementType(StatementType.CALLABLE)
.parameterMap(new ParameterMap.Builder(config, "defaultParameterMap",
Author.class,
new ArrayList<ParameterMapping>() {
@@ -245,7 +247,7 @@
}
}).build();
config.addResultMap(discriminatorResultMap);
- MappedStatement ms = new MappedStatement.Builder(config, "selectProducts",
new StaticSqlSource("SELECT * FROM product"))
+ MappedStatement ms = new MappedStatement.Builder(config, "selectProducts",
new StaticSqlSource("SELECT * FROM product"), SqlCommandType.SELECT)
.resultMaps(new ArrayList<ResultMap>() {
{
add(new ResultMap.Builder(config, "defaultResultMap",
HashMap.class, new ArrayList<ResultMapping>() {
@@ -273,7 +275,7 @@
public static MappedStatement
createInsertAuthorWithIDof99MappedStatement(final Configuration config) {
final TypeHandlerRegistry registry = config.getTypeHandlerRegistry();
- MappedStatement ms = new MappedStatement.Builder(config, "insertAuthor",
new StaticSqlSource("INSERT INTO author (id,username,password,email,bio)
values(99,'someone','******','[email protected]',null)"))
+ MappedStatement ms = new MappedStatement.Builder(config, "insertAuthor",
new StaticSqlSource("INSERT INTO author (id,username,password,email,bio)
values(99,'someone','******','[email protected]',null)"),
SqlCommandType.INSERT)
.statementType(StatementType.STATEMENT)
.parameterMap(new ParameterMap.Builder(config, "defaultParameterMap",
Author.class,
new ArrayList<ParameterMapping>()).build())
@@ -284,7 +286,7 @@
public static MappedStatement
createSelectAuthorWithIDof99MappedStatement(final Configuration config) {
final TypeHandlerRegistry registry = config.getTypeHandlerRegistry();
- MappedStatement ms = new MappedStatement.Builder(config, "selectAuthor",
new StaticSqlSource("SELECT * FROM author WHERE id = 99"))
+ MappedStatement ms = new MappedStatement.Builder(config, "selectAuthor",
new StaticSqlSource("SELECT * FROM author WHERE id = 99"),
SqlCommandType.SELECT)
.statementType(StatementType.STATEMENT)
.parameterMap(new ParameterMap.Builder(config, "defaultParameterMap",
Author.class, new ArrayList<ParameterMapping>()).build())
.resultMaps(new ArrayList<ResultMap>() {
@@ -333,7 +335,7 @@
}
}).build();
- return new MappedStatement.Builder(config, "selectBlogById", sqlSource)
+ return new MappedStatement.Builder(config, "selectBlogById", sqlSource,
SqlCommandType.SELECT)
.parameterMap(parameterMap)
.resultMaps(new ArrayList<ResultMap>() {
{
@@ -373,7 +375,7 @@
}
}).build();
- return new MappedStatement.Builder(config, "selectBlogByIdAndAuthor",
sqlSource)
+ return new MappedStatement.Builder(config, "selectBlogByIdAndAuthor",
sqlSource, SqlCommandType.SELECT)
.parameterMap(parameterMap)
.resultMaps(new ArrayList<ResultMap>() {
{
@@ -440,7 +442,7 @@
add(new ResultMapping.Builder(config,
"comments").nestedResultMapId(commentResultMap.getId()).build());
}
}).build();
- return new MappedStatement.Builder(config, "selectPostsForBlog", sqlSource)
+ return new MappedStatement.Builder(config, "selectPostsForBlog",
sqlSource, SqlCommandType.SELECT)
.parameterMap(parameterMap)
.resultMaps(new ArrayList<ResultMap>() {
{
@@ -508,7 +510,7 @@
}).build();
- return new MappedStatement.Builder(config, "selectPostsForBlog", sqlSource)
+ return new MappedStatement.Builder(config, "selectPostsForBlog",
sqlSource, SqlCommandType.SELECT)
.parameterMap(parameterMap)
.resultMaps(new ArrayList<ResultMap>() {
{
@@ -583,7 +585,7 @@
}).build();
- return new MappedStatement.Builder(config, "selectPostsForBlog", sqlSource)
+ return new MappedStatement.Builder(config, "selectPostsForBlog",
sqlSource, SqlCommandType.SELECT)
.parameterMap(parameterMap)
.resultMaps(new ArrayList<ResultMap>() {
{
Modified: ibatis/trunk/java/ibatis-3/version.properties
URL:
http://svn.apache.org/viewvc/ibatis/trunk/java/ibatis-3/version.properties?rev=773792&r1=773791&r2=773792&view=diff
==============================================================================
--- ibatis/trunk/java/ibatis-3/version.properties (original)
+++ ibatis/trunk/java/ibatis-3/version.properties Tue May 12 05:42:36 2009
@@ -1,5 +1,5 @@
-#Build version info
-#Sat May 09 22:58:12 MDT 2009
-version=3.0.0
-buildDate=2009/05/09 22\:58
-buildNum=154
+#Build version info
+#Mon May 11 23:39:12 MDT 2009
+version=3.0.0
+buildDate=2009/05/11 23\:39
+buildNum=156