List of usage examples for org.apache.ibatis.mapping SqlCommandType UPDATE
SqlCommandType UPDATE
To view the source code for org.apache.ibatis.mapping SqlCommandType UPDATE.
Click Source Link
From source file:com.baomidou.mybatisplus.mapper.AutoSqlInjector.java
License:Apache License
public MappedStatement addUpdateMappedStatement(Class<?> mapperClass, Class<?> modelClass, String id, SqlSource sqlSource) {/*from w ww . ja v a2 s. co m*/ return this.addMappedStatement(mapperClass, id, sqlSource, SqlCommandType.UPDATE, modelClass, null, Integer.class, new NoKeyGenerator(), null, null); }
From source file:com.baomidou.mybatisplus.mapper.AutoSqlInjector.java
License:Apache License
/** * initUpdate/* w w w.j av a 2s . c om*/ */ private void initUpdate() { if (hasMappedStatement(SqlRunner.UPDATE)) { logger.warn("MappedStatement 'SqlRunner.Update' Already Exists"); return; } SqlSource sqlSource = languageDriver.createSqlSource(configuration, SqlRunner.SQLScript, Map.class); createUpdateMappedStatement(SqlRunner.UPDATE, sqlSource, SqlCommandType.UPDATE); }
From source file:com.baomidou.mybatisplus.MybatisDefaultParameterHandler.java
License:Apache License
/** * <p>/* w ww. j a v a 2 s . c o m*/ * ? ID * </p> * * @param ms * @param parameterObject ?? * @return */ protected static Object processBatch(MappedStatement ms, Object parameterObject) { boolean isFill = false; // ??? MetaObjectHandler metaObjectHandler = GlobalConfiguration.getMetaObjectHandler(ms.getConfiguration()); /* ???? */ if (ms.getSqlCommandType() == SqlCommandType.INSERT) { isFill = true; } else if (ms.getSqlCommandType() == SqlCommandType.UPDATE && metaObjectHandler.openUpdateFill()) { isFill = true; } if (isFill) { Collection<Object> parameters = getParameters(parameterObject); if (null != parameters) { List<Object> objList = new ArrayList<>(); for (Object parameter : parameters) { TableInfo tableInfo = TableInfoHelper.getTableInfo(parameter.getClass()); if (null != tableInfo) { objList.add(populateKeys(metaObjectHandler, tableInfo, ms, parameter)); } else { /* * ??? */ objList.add(parameter); } } return objList; } else { TableInfo tableInfo = TableInfoHelper.getTableInfo(parameterObject.getClass()); return populateKeys(metaObjectHandler, tableInfo, ms, parameterObject); } } return parameterObject; }
From source file:com.baomidou.mybatisplus.MybatisDefaultParameterHandler.java
License:Apache License
/** * <p>/*from w w w .j av a 2 s. c o m*/ * * </p> * * @param metaObjectHandler ?? * @param tableInfo ???? * @param ms MappedStatement * @param parameterObject ?? * @return Object */ protected static Object populateKeys(MetaObjectHandler metaObjectHandler, TableInfo tableInfo, MappedStatement ms, Object parameterObject) { if (null == tableInfo || StringUtils.isEmpty(tableInfo.getKeyProperty()) || null == tableInfo.getIdType()) { /* ?? */ return parameterObject; } /* */ MetaObject metaObject = ms.getConfiguration().newMetaObject(parameterObject); if (ms.getSqlCommandType() == SqlCommandType.INSERT) { if (tableInfo.getIdType().getKey() >= 2) { Object idValue = metaObject.getValue(tableInfo.getKeyProperty()); /* ID */ if (StringUtils.checkValNull(idValue)) { if (tableInfo.getIdType() == IdType.ID_WORKER) { metaObject.setValue(tableInfo.getKeyProperty(), IdWorker.getId()); } else if (tableInfo.getIdType() == IdType.UUID) { metaObject.setValue(tableInfo.getKeyProperty(), IdWorker.get32UUID()); } } } // ? if (metaObjectHandler.openInsertFill()) { metaObjectHandler.insertFill(metaObject); } } else if (ms.getSqlCommandType() == SqlCommandType.UPDATE && metaObjectHandler.openUpdateFill()) { // metaObjectHandler.updateFill(metaObject); } return metaObject.getOriginalObject(); }
From source file:com.baomidou.mybatisplus.MybatisMapperAnnotationBuilder.java
License:Apache License
void parseStatement(Method method) { Class<?> parameterTypeClass = getParameterType(method); LanguageDriver languageDriver = getLanguageDriver(method); SqlSource sqlSource = getSqlSourceFromAnnotations(method, parameterTypeClass, languageDriver); if (sqlSource != null) { Options options = method.getAnnotation(Options.class); final String mappedStatementId = type.getName() + "." + method.getName(); Integer fetchSize = null; Integer timeout = null;//from w ww. jav a2 s . c o m StatementType statementType = StatementType.PREPARED; ResultSetType resultSetType = ResultSetType.FORWARD_ONLY; SqlCommandType sqlCommandType = getSqlCommandType(method); boolean isSelect = sqlCommandType == SqlCommandType.SELECT; boolean flushCache = !isSelect; boolean useCache = isSelect; KeyGenerator keyGenerator; String keyProperty = "id"; String keyColumn = null; if (SqlCommandType.INSERT.equals(sqlCommandType) || SqlCommandType.UPDATE.equals(sqlCommandType)) { // first check for SelectKey annotation - that overrides everything else SelectKey selectKey = method.getAnnotation(SelectKey.class); if (selectKey != null) { keyGenerator = handleSelectKeyAnnotation(selectKey, mappedStatementId, getParameterType(method), languageDriver); keyProperty = selectKey.keyProperty(); } else if (options == null) { keyGenerator = configuration.isUseGeneratedKeys() ? Jdbc3KeyGenerator.INSTANCE : NoKeyGenerator.INSTANCE; } else { keyGenerator = options.useGeneratedKeys() ? Jdbc3KeyGenerator.INSTANCE : NoKeyGenerator.INSTANCE; keyProperty = options.keyProperty(); keyColumn = options.keyColumn(); } } else { keyGenerator = NoKeyGenerator.INSTANCE; } if (options != null) { if (FlushCachePolicy.TRUE.equals(options.flushCache())) { flushCache = true; } else if (FlushCachePolicy.FALSE.equals(options.flushCache())) { flushCache = false; } useCache = options.useCache(); fetchSize = options.fetchSize() > -1 || options.fetchSize() == Integer.MIN_VALUE ? options.fetchSize() : null; //issue #348 timeout = options.timeout() > -1 ? options.timeout() : null; statementType = options.statementType(); resultSetType = options.resultSetType(); } String resultMapId = null; ResultMap resultMapAnnotation = method.getAnnotation(ResultMap.class); if (resultMapAnnotation != null) { String[] resultMaps = resultMapAnnotation.value(); StringBuilder sb = new StringBuilder(); for (String resultMap : resultMaps) { if (sb.length() > 0) { sb.append(","); } sb.append(resultMap); } resultMapId = sb.toString(); } else if (isSelect) { resultMapId = parseResultMap(method); } assistant.addMappedStatement(mappedStatementId, sqlSource, statementType, sqlCommandType, fetchSize, timeout, // ParameterMapID null, parameterTypeClass, resultMapId, getReturnType(method), resultSetType, flushCache, useCache, // TODO gcode issue #577 false, keyGenerator, keyProperty, keyColumn, // DatabaseID null, languageDriver, // ResultSets options != null ? nullOrEmpty(options.resultSets()) : null); } }
From source file:com.baomidou.mybatisplus.plugins.OptimisticLockerInterceptor.java
License:Apache License
public Object intercept(Invocation invocation) throws Exception { StatementHandler statementHandler = (StatementHandler) PluginUtils.realTarget(invocation.getTarget()); MetaObject metaObject = SystemMetaObject.forObject(statementHandler); // ?UPDATE?/*from w ww . j a v a2s. c o m*/ MappedStatement ms = (MappedStatement) metaObject.getValue("delegate.mappedStatement"); if (!ms.getSqlCommandType().equals(SqlCommandType.UPDATE)) { return invocation.proceed(); } BoundSql boundSql = (BoundSql) metaObject.getValue("delegate.boundSql"); // ?,?version? Class<?> parameterClass = ms.getParameterMap().getType(); LockerCache lockerCache = versionCache.get(parameterClass); if (lockerCache != null) { if (lockerCache.lock) { processChangeSql(ms, boundSql, lockerCache); } } else { Field versionField = getVersionField(parameterClass); if (versionField != null) { Class<?> fieldType = versionField.getType(); if (!typeHandlers.containsKey(fieldType)) { throw new TypeException( "????" + fieldType.getName() + ","); } final TableField tableField = versionField.getAnnotation(TableField.class); String versionColumn = versionField.getName(); if (tableField != null) { versionColumn = tableField.value(); } LockerCache lc = new LockerCache(true, versionColumn, versionField, typeHandlers.get(fieldType)); versionCache.put(parameterClass, lc); processChangeSql(ms, boundSql, lc); } else { versionCache.put(parameterClass, LockerCache.INSTANCE); } } return invocation.proceed(); }
From source file:com.baomidou.mybatisplus.plugins.SqlExplainInterceptor.java
License:Apache License
public Object intercept(Invocation invocation) throws Throwable { /**/*from w w w. j a v a 2 s.c o m*/ * ? DELETE UPDATE ? */ MappedStatement ms = (MappedStatement) invocation.getArgs()[0]; if (ms.getSqlCommandType() == SqlCommandType.DELETE || ms.getSqlCommandType() == SqlCommandType.UPDATE) { Executor executor = (Executor) invocation.getTarget(); Configuration configuration = ms.getConfiguration(); Object parameter = invocation.getArgs()[1]; BoundSql boundSql = ms.getBoundSql(parameter); Connection connection = executor.getTransaction().getConnection(); String databaseVersion = connection.getMetaData().getDatabaseProductVersion(); if (GlobalConfiguration.getDbType(configuration).equals(DBType.MYSQL) && VersionUtils.compare(minMySQLVersion, databaseVersion)) { logger.warn("Warn: Your mysql version needs to be greater than '5.6.3' to execute of Sql Explain!"); return invocation.proceed(); } /** * SQL ? */ sqlExplain(configuration, ms, boundSql, connection, parameter); } return invocation.proceed(); }
From source file:com.chrhc.mybatis.locker.interceptor.OptimisticLocker.java
License:Apache License
@Override public Object intercept(Invocation invocation) throws Exception { String versionColumn;// ww w . ja v a2 s . co m String versionField; if (null == props || props.isEmpty()) { versionColumn = "version"; versionField = "version"; } else { versionColumn = props.getProperty("versionColumn", "version"); versionField = props.getProperty("versionField", "version"); } String interceptMethod = invocation.getMethod().getName(); if (!"prepare".equals(interceptMethod)) { return invocation.proceed(); } StatementHandler handler = (StatementHandler) PluginUtil.processTarget(invocation.getTarget()); MetaObject metaObject = SystemMetaObject.forObject(handler); MappedStatement ms = (MappedStatement) metaObject.getValue("delegate.mappedStatement"); SqlCommandType sqlCmdType = ms.getSqlCommandType(); if (sqlCmdType != SqlCommandType.UPDATE) { return invocation.proceed(); } BoundSql boundSql = (BoundSql) metaObject.getValue("delegate.boundSql"); VersionLocker vl = getVersionLocker(ms, boundSql); if (null != vl && !vl.value()) { return invocation.proceed(); } Object originalVersion = metaObject.getValue("delegate.boundSql.parameterObject." + versionField); if (originalVersion == null || Long.parseLong(originalVersion.toString()) <= 0) { throw new BindingException("value of version field[" + versionField + "]can not be empty"); } String originalSql = boundSql.getSql(); if (log.isDebugEnabled()) { log.debug("==> originalSql: " + originalSql); } originalSql = addVersionToSql(originalSql, versionColumn, originalVersion); metaObject.setValue("delegate.boundSql.sql", originalSql); if (log.isDebugEnabled()) { log.debug("==> originalSql after add version: " + originalSql); } return invocation.proceed(); }
From source file:com.jeebase.common.base.component.DataPermissionInterceptor.java
License:Apache License
/** * Physical Page Interceptor for all the queries with parameter {@link RowBounds} *///from ww w. j av a 2 s . c o m @SuppressWarnings("unchecked") @Override public Object intercept(Invocation invocation) throws Throwable { StatementHandler statementHandler = PluginUtils.realTarget(invocation.getTarget()); MetaObject metaObject = SystemMetaObject.forObject(statementHandler); // SQL ? this.sqlParser(metaObject); // rowBounds?mapper?? BoundSql boundSql = (BoundSql) metaObject.getValue("delegate.boundSql"); Object paramObj = boundSql.getParameterObject(); // ??DataPermission DataPermissionCondition dataPermissionCondition = null; if (paramObj instanceof DataPermissionCondition) { dataPermissionCondition = (DataPermissionCondition) paramObj; } else if (paramObj instanceof Map) { for (Object arg : ((Map) paramObj).values()) { if (arg instanceof DataPermissionCondition) { dataPermissionCondition = (DataPermissionCondition) arg; break; } } } /* * ????? */ if (null == dataPermissionCondition) { return invocation.proceed(); } // ?orgId?? if (StringUtils.isEmpty(dataPermissionCondition.getOrgIdAlias())) { dataPermissionCondition.setOrgIdAlias("organiaztion_id"); } String orgIdAlias = dataPermissionCondition.getOrgIdAlias(); List<String> orgIdList = dataPermissionCondition.getOrgIdList(); String userIdAlias = dataPermissionCondition.getUserIdAlias(); String userId = dataPermissionCondition.getUserId(); boolean ownQuery = dataPermissionCondition.isOwnQuery(); // ?userId?? if (ownQuery && StringUtils.isEmpty(dataPermissionCondition.getUserIdAlias())) { dataPermissionCondition.setUserIdAlias("user_id"); } // ???SELECTDELETEUPDATE MappedStatement mappedStatement = (MappedStatement) metaObject.getValue("delegate.mappedStatement"); SqlCommandType sqlCommandType = mappedStatement.getSqlCommandType(); String originalSql = boundSql.getSql(); if (SqlCommandType.SELECT.equals(sqlCommandType) || SqlCommandType.DELETE.equals(sqlCommandType) || SqlCommandType.UPDATE.equals(sqlCommandType)) { String newSql = DataPermissionUtil.convertDataPermission(originalSql, orgIdAlias, orgIdList, ownQuery, userIdAlias, userId); metaObject.setValue("delegate.boundSql.sql", newSql); } else { return invocation.proceed(); } return invocation.proceed(); }
From source file:com.mook.locker.interceptor.OptimisticLocker.java
License:Apache License
@Override
@SuppressWarnings({ "unchecked", "rawtypes" })
public Object intercept(Invocation invocation) throws Exception {
String interceptMethod = invocation.getMethod().getName();
String versionColumn = props.getProperty("versionColumn", "version");
if ("prepare".equals(interceptMethod)) {
StatementHandler handler = (StatementHandler) invocation.getTarget();
MetaObject hm = SystemMetaObject.forObject(handler);
MappedStatement ms = (MappedStatement) hm.getValue("delegate.mappedStatement");
SqlCommandType sqlCmdType = ms.getSqlCommandType();
if (sqlCmdType != SqlCommandType.UPDATE) {
return invocation.proceed();
}/*from w w w. j a v a 2 s .c om*/
BoundSql boundSql = (BoundSql) hm.getValue("delegate.boundSql");
if (hasVersionLocker(ms, boundSql)) {
return invocation.proceed();
}
Object originalVersion = hm.getValue("delegate.boundSql.parameterObject.version");
Object versionIncr = castTypeAndOptValue(originalVersion,
hm.getValue("delegate.boundSql.parameterObject"), ValueType.INCREASE);
hm.setValue("delegate.boundSql.parameterObject.version", versionIncr);
String originalSql = (String) hm.getValue("delegate.boundSql.sql");
StringBuilder builder = new StringBuilder(originalSql);
builder.append(" and ");
builder.append(versionColumn);
builder.append(" = ?");
hm.setValue("delegate.boundSql.sql", builder.toString());
if (log.isDebugEnabled()) {
log.debug("==> originalSql: " + originalSql);
}
return invocation.proceed();
} else if ("setParameters".equals(interceptMethod)) {
ParameterHandler handler = (ParameterHandler) invocation.getTarget();
MetaObject hm = SystemMetaObject.forObject(handler);
MappedStatement ms = (MappedStatement) hm.getValue("mappedStatement");
SqlCommandType sqlCmdType = ms.getSqlCommandType();
if (sqlCmdType != SqlCommandType.UPDATE) {
return invocation.proceed();
}
Configuration configuration = (Configuration) hm.getValue("configuration");
BoundSql boundSql = (BoundSql) hm.getValue("boundSql");
if (hasVersionLocker(ms, boundSql)) {
return invocation.proceed();
}
Object result = invocation.proceed();
ParameterMapping versionMapping = new ParameterMapping.Builder(configuration, versionColumn,
Object.class).build();
Object parameterObject = boundSql.getParameterObject();
MetaObject pm = configuration.newMetaObject(parameterObject);
if (parameterObject instanceof MapperMethod.ParamMap<?>) {
MapperMethod.ParamMap<?> paramMap = (MapperMethod.ParamMap<?>) parameterObject;
if (!paramMap.containsKey(versionColumn)) {
throw new TypeException("??MyBatis@Param");
}
}
Object value = pm.getValue(versionColumn);
TypeHandler typeHandler = versionMapping.getTypeHandler();
JdbcType jdbcType = versionMapping.getJdbcType();
if (value == null && jdbcType == null) {
jdbcType = configuration.getJdbcTypeForNull();
}
List<ParameterMapping> parameterMappings = boundSql.getParameterMappings();
try {
PreparedStatement ps = (PreparedStatement) invocation.getArgs()[0];
Object val = castTypeAndOptValue(value, parameterObject, ValueType.DECREASE);
typeHandler.setParameter(ps, parameterMappings.size() + 1, val, jdbcType);
} catch (TypeException e) {
throw new TypeException(
"Could not set parameters for mapping: " + parameterMappings + ". Cause: " + e, e);
} catch (SQLException e) {
throw new TypeException(
"Could not set parameters for mapping: " + parameterMappings + ". Cause: " + e, e);
}
return result;
}
return invocation.proceed();
}