当前位置: 首页>>代码示例>>Java>>正文


Java Invocation.getTarget方法代码示例

本文整理汇总了Java中org.apache.ibatis.plugin.Invocation.getTarget方法的典型用法代码示例。如果您正苦于以下问题:Java Invocation.getTarget方法的具体用法?Java Invocation.getTarget怎么用?Java Invocation.getTarget使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在org.apache.ibatis.plugin.Invocation的用法示例。


在下文中一共展示了Invocation.getTarget方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: intercept

import org.apache.ibatis.plugin.Invocation; //导入方法依赖的package包/类
public Object intercept(Invocation invocation) throws Throwable {
    /**
     * 处理 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 (GlobalConfigUtils.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();
}
 
开发者ID:Caratacus,项目名称:mybatis-plus-mini,代码行数:25,代码来源:SqlExplainInterceptor.java

示例2: intercept

import org.apache.ibatis.plugin.Invocation; //导入方法依赖的package包/类
@Override
public Object intercept(Invocation invocation) throws Throwable {
	RoutingStatementHandler handler = (RoutingStatementHandler) invocation.getTarget();
	StatementHandler delegate = (StatementHandler) ReflectUtil.getFieldValue(handler, "delegate");
	BoundSql boundSql = delegate.getBoundSql();
	Object obj = boundSql.getParameterObject();
	Page page = seekPage(obj);
	if (page != null) {
		MappedStatement mappedStatement = (MappedStatement) ReflectUtil.getFieldValue(delegate, "mappedStatement");
		Connection connection = (Connection) invocation.getArgs()[0];
		String sql = boundSql.getSql();
		this.setTotalRecord(page, mappedStatement, connection);
		String pageSql = this.getPageSql(page, sql);
		ReflectUtil.setFieldValue(boundSql, "sql", pageSql);
	}
	return invocation.proceed();
}
 
开发者ID:lemon-china,项目名称:lemon-mybatis-plus,代码行数:18,代码来源:PageInterceptor.java

示例3: intercept

import org.apache.ibatis.plugin.Invocation; //导入方法依赖的package包/类
@Override
public Object intercept(Invocation invocation) throws Throwable {
	// TODO Auto-generated method stub
	if (invocation.getTarget() instanceof RoutingStatementHandler) {
		StatementHandler statementHandler = (RoutingStatementHandler) invocation.getTarget();
		MetaObject metaStatementHandler = SystemMetaObject.forObject(statementHandler);
		MappedStatement mappedStatement = (MappedStatement) metaStatementHandler.getValue("delegate.mappedStatement");
		String mapperId = mappedStatement.getId();
		String mapperClassName = mapperId.substring(0, mapperId.lastIndexOf("."));
		Class<?> mapperClass = Class.forName(mapperClassName);
		if (isDaoMapper(mapperClass)&&mapperId.endsWith(".insertUseReturnGeneratedKeys")) {
			BaseStatementHandler baseStatementHandler = (BaseStatementHandler) metaStatementHandler.getValue("delegate");
			if ("query".equals(invocation.getMethod().getName())) {
				return handPreparedStatementHandlerQuery(invocation, baseStatementHandler);
			} else if ("prepare".equals(invocation.getMethod().getName())) {
				return handPreparedStatementHandlerPrepare(invocation, baseStatementHandler);
			}
		}
	}
	return invocation.proceed();
}
 
开发者ID:wulizhong,项目名称:mybatis-dao,代码行数:22,代码来源:DaoPlugin.java

示例4: intercept

import org.apache.ibatis.plugin.Invocation; //导入方法依赖的package包/类
/**
 * 拦截后要执行的方法
 */
@Override
public Object intercept(Invocation invocation) throws Throwable {
    Page<?> page = PageThreadLocal.getThreadLocalPage();
    if (page == null) {
        return invocation.proceed();
    }
    PageThreadLocal.removeThreadLocalPage();
    RoutingStatementHandler handler = (RoutingStatementHandler) invocation.getTarget();
    // 通过反射获取到当前RoutingStatementHandler对象的delegate属性
    StatementHandler delegate = (StatementHandler) ReflectUtil.getFieldValue(handler, "delegate");
    BoundSql boundSql = delegate.getBoundSql();
    MappedStatement mappedStatement = (MappedStatement) ReflectUtil.getFieldValue(delegate, "mappedStatement");
    // 获取当前要执行的Sql语句,也就是我们直接在Mapper映射语句中写的Sql语句
    String sql = boundSql.getSql();
    // 是否查询总页数和总数据 默认为TRUE
    if (page.getTotalFlag()) {
        // 给当前的page参数对象设置总记录数
        this.setTotalRecord(page, mappedStatement, boundSql, sql);
    }

    String pageSql = this.getPageSql(sql, page);
    // 利用反射设置当前BoundSql对应的sql属性为我们建立好的分页Sql语句
    ReflectUtil.setFieldValue(boundSql, "sql", pageSql);
    return invocation.proceed();
}
 
开发者ID:tonyruiyu,项目名称:dubbo-mock,代码行数:29,代码来源:PageInterceptor.java

示例5: intercept

import org.apache.ibatis.plugin.Invocation; //导入方法依赖的package包/类
public Object intercept(Invocation invocation) throws Throwable {
	StatementHandler statementHandler = (StatementHandler) invocation.getTarget();
	MappedStatement mappedStatement = null;
	if (statementHandler instanceof RoutingStatementHandler) {
		StatementHandler delegate = (StatementHandler) ReflectionUtils.getFieldValue(statementHandler, "delegate");
		mappedStatement = (MappedStatement) ReflectionUtils.getFieldValue(delegate, "mappedStatement");
	} else {
		mappedStatement = (MappedStatement) ReflectionUtils.getFieldValue(statementHandler, "mappedStatement");
	}
	Object parm = statementHandler.getParameterHandler().getParameterObject();
	String sql = statementHandler.getBoundSql().getSql();
	String mapperId = mappedStatement.getId();
	if (ShardHolder.getInstance().hasShard(mapperId)) {
		ShardObject shardObject = ShardHolder.getInstance().getShardObject(mapperId);
		String targetSql = ShardParser.getInstance().parse(sql, parm, shardObject);
		if (!sql.equals(targetSql)) {
			ReflectionUtils.setFieldValue(statementHandler.getBoundSql(), "sql", targetSql);
		}
	}
	return invocation.proceed();
}
 
开发者ID:PowerBin,项目名称:sharding-mybatis,代码行数:22,代码来源:ShardPlugin.java

示例6: intercept

import org.apache.ibatis.plugin.Invocation; //导入方法依赖的package包/类
@Override
public Object intercept(Invocation invocation) throws Throwable {
    /**
     * 处理 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 (GlobalConfigUtils.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();
}
 
开发者ID:baomidou,项目名称:mybatis-plus,代码行数:26,代码来源:SqlExplainInterceptor.java

示例7: intercept

import org.apache.ibatis.plugin.Invocation; //导入方法依赖的package包/类
@Override
public Object intercept(Invocation invocation) throws Throwable {
	StatementHandler statementHandler = (StatementHandler) invocation.getTarget(); 
	if(statementHandler instanceof RoutingStatementHandler){
		RoutingStatementHandler routeStatementHandler = (RoutingStatementHandler)statementHandler;
		MetaObject metaObject = SystemMetaObject.forObject(routeStatementHandler);
		int offset = Integer.valueOf(String.valueOf(metaObject.getValue("delegate.rowBounds.offset")));
		int limit = Integer.valueOf(String.valueOf(metaObject.getValue("delegate.rowBounds.limit")));
		if(offset == RowBounds.NO_ROW_OFFSET && limit == RowBounds.NO_ROW_LIMIT){
			return invocation.proceed();
		}
		String sql = String.valueOf(metaObject.getValue("delegate.boundSql.sql")).trim();
		if(StringUtils.isBlank(sql) || !sql.toLowerCase().startsWith("select")){
			return invocation.proceed();
		}
		String pagedSql = this.buildPagedSql(sql, offset, limit);
		metaObject.setValue("delegate.boundSql.sql", pagedSql);
		metaObject.setValue("delegate.rowBounds.offset", RowBounds.NO_ROW_OFFSET);
		metaObject.setValue("delegate.rowBounds.limit", RowBounds.NO_ROW_LIMIT);
	}else{
		return invocation.proceed(); 
	}
	return invocation.proceed();
}
 
开发者ID:ls960972314,项目名称:report,代码行数:25,代码来源:MybatisPagedInterceptor.java

示例8: intercept

import org.apache.ibatis.plugin.Invocation; //导入方法依赖的package包/类
@Override
public Object intercept(Invocation invocation) throws Throwable {
	RoutingStatementHandler handler = (RoutingStatementHandler) invocation.getTarget();
	Pagination pagination = getPaginationParamter(invocation);
	if (pagination == null) {
		return invocation.proceed();
	}
	BoundSql boundSql = handler.getBoundSql();
	// 获取分页sql,从hibernate拷贝而来(mysql/oracle/db2/h2/sqlserver)
	String sql = dialect.getLimitString(boundSql.getSql(), pagination);
	try {
		Field sqlField = boundSql.getClass().getDeclaredField("sql");
		if (sqlField != null) {
			sqlField.setAccessible(true);
			sqlField.set(boundSql, sql);
		}
	} catch (Exception e) {
		logger.error(e);
	}
	return invocation.proceed();
}
 
开发者ID:songkun,项目名称:spring-mybatis-jquery-2,代码行数:22,代码来源:PaginationIntercepter.java

示例9: intercept

import org.apache.ibatis.plugin.Invocation; //导入方法依赖的package包/类
@Override
public Object intercept(Invocation invocation) throws Throwable {
    StatementHandler statementHandler = (StatementHandler) invocation.getTarget();
    MappedStatement mappedStatement = null;
    if (statementHandler instanceof RoutingStatementHandler) {
        StatementHandler delegate = (StatementHandler) ReflectionUtils.getFieldValue(statementHandler, "delegate");
        mappedStatement = (MappedStatement) ReflectionUtils.getFieldValue(delegate, "mappedStatement");
    } else {
        mappedStatement = (MappedStatement) ReflectionUtils.getFieldValue(statementHandler, "mappedStatement");
    }

    String mapperId = mappedStatement.getId();
    Object params = statementHandler.getBoundSql().getParameterObject();

    handleTableName(mapperId, statementHandler, params);
    handleDataSource(mapperId);

    try {
        return invocation.proceed();
    } finally {
        DataSourceContextHolder.clearDataSourceName();
    }
}
 
开发者ID:peiliping,项目名称:excalibur,代码行数:24,代码来源:Interceptor4DB.java

示例10: intercept

import org.apache.ibatis.plugin.Invocation; //导入方法依赖的package包/类
@Override
public Object intercept(Invocation ivk) throws Throwable {
	if (ivk.getTarget().getClass()
			.isAssignableFrom(RoutingStatementHandler.class)) {
		final RoutingStatementHandler statementHandler = (RoutingStatementHandler) ivk
				.getTarget();
		final BaseStatementHandler delegate = (BaseStatementHandler) Reflection
				.getFieldValue(statementHandler, DELEGATE);
		final MappedStatement mappedStatement = (MappedStatement) Reflection
				.getFieldValue(delegate, MAPPED_STATEMENT);

		if (mappedStatement.getId().matches(SQL_PATTERN)) {
			// 拦截需要分页的SQL
			BoundSql boundSql = delegate.getBoundSql();
			// 分页SQL<select>中parameterType属性对应的实体参数,即Mapper接口中执行分页方法的参数,该参数不得为空
			Object parameterObject = boundSql.getParameterObject();
			if (null == parameterObject) {
				throw new NullPointerException("parameterObject尚未实例化!");
			} else {
				final Connection connection = (Connection) ivk.getArgs()[0];
				final String sql = boundSql.getSql();
				// 记录统计
				final int count = BaseParameter
						.getCount(sql, connection, mappedStatement,
								parameterObject, boundSql, DIALECT);
				Page page = null;
				page = convertParameter(parameterObject, page);
				page.init(count, page.getSize(), page.getLimit());
				String pagingSql = BaseParameter.generatePageSql(sql, page,
						DIALECT);
				// 将分页sql语句反射回BoundSql.
				Reflection.setFieldValue(boundSql, "sql", pagingSql);
			}
		}
	}
	return ivk.proceed();
}
 
开发者ID:jiangzongyao,项目名称:kettle_support_kettle8.0,代码行数:38,代码来源:PreparePaginationInterceptor.java

示例11: intercept

import org.apache.ibatis.plugin.Invocation; //导入方法依赖的package包/类
public Object intercept(Invocation invocation) throws Throwable {
	if (invocation.getTarget() instanceof DefaultParameterHandler) {
		DefaultParameterHandler parameterHandler = (DefaultParameterHandler) invocation
				.getTarget();

		Object paramObj = ReflectHelper
				.getValueByFieldName(parameterHandler, "parameterObject");
		if (paramObj instanceof BatchParameter) {
			// 不绑定参数,在执行阶段才绑定
			return null;
		}
	}

	return invocation.proceed();
}
 
开发者ID:wen866595,项目名称:MyBatis-batch,代码行数:16,代码来源:BatchParameterHandler.java

示例12: intercept

import org.apache.ibatis.plugin.Invocation; //导入方法依赖的package包/类
@Override
    public Object intercept(Invocation ivk) throws Throwable {
        if (ivk.getTarget().getClass().isAssignableFrom(RoutingStatementHandler.class)) {
            final RoutingStatementHandler statementHandler = (RoutingStatementHandler) ivk.getTarget();
            final BaseStatementHandler delegate = (BaseStatementHandler) Reflections.getFieldValue(statementHandler, DELEGATE);
            final MappedStatement mappedStatement = (MappedStatement) Reflections.getFieldValue(delegate, MAPPED_STATEMENT);

//            //拦截需要分页的SQL
////            if (mappedStatement.getId().matches(_SQL_PATTERN)) { 
//            if (StringUtils.indexOfIgnoreCase(mappedStatement.getId(), _SQL_PATTERN) != -1) {
                BoundSql boundSql = delegate.getBoundSql();
                //分页SQL<select>中parameterType属性对应的实体参数,即Mapper接口中执行分页方法的参数,该参数不得为空
                Object parameterObject = boundSql.getParameterObject();
                if (parameterObject == null) {
                    log.error("参数未实例化");
                    throw new NullPointerException("parameterObject尚未实例化!");
                } else {
                    final Connection connection = (Connection) ivk.getArgs()[0];
                    final String sql = boundSql.getSql();
                    //记录统计
                    final int count = SQLHelper.getCount(sql, connection, mappedStatement, parameterObject, boundSql, log);
                    Page<Object> page = null;
                    page = convertParameter(parameterObject, page);
                    page.setCount(count);
                    String pagingSql = SQLHelper.generatePageSql(sql, page, DIALECT);
                    if (log.isDebugEnabled()) {
                        log.debug("PAGE SQL:" + pagingSql);
                    }
                    //将分页sql语句反射回BoundSql.
                    Reflections.setFieldValue(boundSql, "sql", pagingSql);
                }
                
                if (boundSql.getSql() == null || "".equals(boundSql.getSql())){
                    return null;
                }
                
            }
//        }
        return ivk.proceed();
    }
 
开发者ID:EleTeam,项目名称:Shop-for-JavaWeb,代码行数:41,代码来源:PreparePaginationInterceptor.java

示例13: intercept

import org.apache.ibatis.plugin.Invocation; //导入方法依赖的package包/类
/**
 * Physical Pagination Interceptor for all the queries with parameter
 * {@link org.apache.ibatis.session.RowBounds}
 */
@Override
public Object intercept(Invocation invocation) throws Throwable {

    Object target = invocation.getTarget();
    if (target instanceof StatementHandler) {
        return super.intercept(invocation);
    } else {
        RowBounds rowBounds = (RowBounds) invocation.getArgs()[2];
        if (rowBounds == null || rowBounds == RowBounds.DEFAULT) {
            return invocation.proceed();
        }
        MappedStatement mappedStatement = (MappedStatement) invocation.getArgs()[0];
        Executor executor = (Executor) invocation.getTarget();
        Connection connection = executor.getTransaction().getConnection();
        Object parameterObject = invocation.getArgs()[1];
        BoundSql boundSql = mappedStatement.getBoundSql(parameterObject);
        String originalSql = boundSql.getSql();
        if (rowBounds instanceof Pagination) {
            Pagination page = (Pagination) rowBounds;
            if (page.isSearchCount()) {
                SqlInfo sqlInfo = SqlUtils.getCountOptimize(sqlParser, originalSql);
                super.queryTotal(overflowCurrent, sqlInfo.getSql(), mappedStatement, boundSql, page, connection);
                if (page.getTotal() <= 0) {
                    return invocation.proceed();
                }
            }
        }
    }
    return invocation.proceed();
}
 
开发者ID:baomidou,项目名称:mybatis-plus,代码行数:35,代码来源:CachePaginationInterceptor.java

示例14: intercept

import org.apache.ibatis.plugin.Invocation; //导入方法依赖的package包/类
public Object intercept(Invocation invocation) throws Throwable {
	if (invocation.getTarget() instanceof RoutingStatementHandler) {
		RoutingStatementHandler routingStatementHandler = (RoutingStatementHandler) invocation
				.getTarget();

		StatementHandler delegate = (StatementHandler) ReflectHelper
				.getValueByFieldName(routingStatementHandler, "delegate");
		if (delegate instanceof PreparedStatementHandler) {

			PreparedStatementHandler preparedStatementHandler = (PreparedStatementHandler) delegate;
			MappedStatement mappedStatement = (MappedStatement) ReflectHelper
					.getValueByFieldName(preparedStatementHandler,
							"mappedStatement");

			BoundSql boundSql = (BoundSql) ReflectHelper
					.getValueByFieldName(preparedStatementHandler,
							"boundSql");

			Object parameterObject = boundSql.getParameterObject();
			if (parameterObject instanceof BatchInsertParameter) {
				PreparedStatement ps = (PreparedStatement) invocation
						.getArgs()[0];
				int rows = ps.getUpdateCount();
				Executor executor = (Executor) ReflectHelper
						.getValueByFieldName(preparedStatementHandler,
								"executor");

				KeyGenerator keyGenerator = mappedStatement
						.getKeyGenerator();

				keyGenerator.processAfter(executor, mappedStatement, ps,
						parameterObject);
				return rows;
			}
		}
	}

	return invocation.proceed();
}
 
开发者ID:wen866595,项目名称:mybatis-batchinsert-plugin,代码行数:40,代码来源:BatchInsertStatementHandler.java

示例15: getPaginationParamter

import org.apache.ibatis.plugin.Invocation; //导入方法依赖的package包/类
/**
 * 获取Mapper方法的Pagination参数
 * 
 * @author songkun
 * @create 2014年7月5日 下午2:59:48
 * @since
 * @param invocation
 * @return
 */
@SuppressWarnings("rawtypes")
private Pagination getPaginationParamter(Invocation invocation) {
	if (invocation == null || invocation.getTarget() == null) {
		return null;
	}
	RoutingStatementHandler handler = (RoutingStatementHandler) invocation.getTarget();
	if (handler == null || handler.getParameterHandler() == null) {
		return null;
	}
	Object parameters = handler.getParameterHandler().getParameterObject();
	if (parameters == null) {
		return null;
	}
	// 如果mapper方法只有pagination参数,则直接返回
	if (parameters instanceof Pagination) {
		return (Pagination) parameters;
	}
	// 如果是多个参数,则判断有没有pagination参数
	if (parameters instanceof Map) {
		Map tmp = (Map) parameters;
		for (Iterator iterator = tmp.values().iterator(); iterator.hasNext();) {
			Object next = iterator.next();
			if (next instanceof Pagination) {
				return (Pagination) next;
			}
		}
	}
	return null;
}
 
开发者ID:songkun,项目名称:spring-mybatis-jquery-2,代码行数:39,代码来源:PaginationIntercepter.java


注:本文中的org.apache.ibatis.plugin.Invocation.getTarget方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。