List of usage examples for org.apache.ibatis.mapping BoundSql getParameterObject
public Object getParameterObject()
From source file:com.funtl.framework.smoke.core.commons.persistence.interceptor.PreparePaginationInterceptor.java
License:Apache License
@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);/*from w w w . ja v a2s . com*/ 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(); }
From source file:com.github.ibole.infrastructure.persistence.db.mybatis.pagination.PaginationInterceptor.java
License:Apache License
private BoundSql copyFromBoundSql(MappedStatement ms, BoundSql boundSql, String sql) { BoundSql newBoundSql = new BoundSql(ms.getConfiguration(), sql, boundSql.getParameterMappings(), boundSql.getParameterObject()); for (ParameterMapping mapping : boundSql.getParameterMappings()) { String prop = mapping.getProperty(); if (boundSql.hasAdditionalParameter(prop)) { newBoundSql.setAdditionalParameter(prop, boundSql.getAdditionalParameter(prop)); }// w ww. j a va2 s . co m } return newBoundSql; }
From source file:com.hj.blog.common.orm.PageInterceptor.java
License:Apache License
@Override public Object intercept(Invocation invocation) throws Throwable { if (invocation.getTarget() instanceof RoutingStatementHandler) { RoutingStatementHandler statementHandler = (RoutingStatementHandler) invocation.getTarget(); StatementHandler delegate = (StatementHandler) ReflectUtils.getFieldValue(statementHandler, "delegate"); BoundSql boundSql = delegate.getBoundSql(); Object parameterObject = boundSql.getParameterObject(); if (!(parameterObject instanceof MapperMethod.ParamMap)) { return invocation.proceed(); }/*from w ww . jav a 2 s.c o m*/ MapperMethod.ParamMap paramMap = (MapperMethod.ParamMap) parameterObject; if (!paramMap.containsKey(PAGE_PARAM_NAME)) { return invocation.proceed(); } Object pageObject = paramMap.get(PAGE_PARAM_NAME); dataThreadLocal.set(pageObject); if (pageObject instanceof DigitalPage) { DigitalPage page = (DigitalPage) pageObject; MappedStatement mappedStatement = (MappedStatement) ReflectUtils.getFieldValue(delegate, "mappedStatement"); Connection connection = (Connection) invocation.getArgs()[0]; String sql = boundSql.getSql(); setTotalCount(page, parameterObject, mappedStatement, connection); ReflectUtils.setFieldValue(boundSql, "sql", getDigitalPageSql(page, sql)); } else if (pageObject instanceof DropDownPage) { DropDownPage page = (DropDownPage) pageObject; String sql = boundSql.getSql(); ReflectUtils.setFieldValue(boundSql, "sql", getDropDownPageSql(page, sql)); } return invocation.proceed(); } else if (invocation.getTarget() instanceof ResultSetHandler) { Object parameterObject = dataThreadLocal.get(); dataThreadLocal.remove(); Object data = invocation.proceed(); if (parameterObject == null) { return data; } if (!(parameterObject instanceof DigitalPage) && !(parameterObject instanceof DropDownPage)) { return data; } Class<?> clazz = parameterObject.getClass(); ReflectUtils.setFieldValueWithSetterMethod(parameterObject, data, clazz, clazz.getDeclaredField("data")); if (parameterObject instanceof DropDownPage) { List<?> dataList = (List<?>) data; if (!CollectionUtils.isEmpty(dataList)) { String[] orderColumnArray = ((DropDownPage) parameterObject).getOrderColumn().split(","); String orderColumn = orderColumnArray[orderColumnArray.length - 1]; String[] orderColumnNameArray = orderColumn.split("_"); StringBuffer stringBuffer = new StringBuffer(orderColumnNameArray[0].toLowerCase()); for (int i = 1; i < orderColumnNameArray.length; i++) { stringBuffer.append(orderColumnNameArray[i].substring(0, 1).toUpperCase()); if (orderColumnNameArray[i].length() > 1) { stringBuffer.append(orderColumnNameArray[i].substring(1)); } } Object offset = ReflectUtils.getFieldValue(dataList.get(dataList.size() - 1), stringBuffer.toString()); if (ObjectUtils.isNull(offset)) { throw new RuntimeException( "please check the property name of " + orderColumn + " is right."); } ReflectUtils.setFieldValueWithSetterMethod(parameterObject, offset, clazz, clazz.getDeclaredField("offset")); } } return data; } return invocation.proceed(); }
From source file:com.huang.rp.common.persistence.PageInterceptor.java
License:Apache License
/** * ??//w ww . ja v a2 s . c o m */ @SuppressWarnings({ "rawtypes", "unchecked", "unused" }) @Override public Object intercept(Invocation invocation) throws Throwable { RoutingStatementHandler handler = (RoutingStatementHandler) invocation.getTarget(); StatementHandler delegate = (StatementHandler) ReflectionUtils.getFieldValue(handler, "delegate"); BoundSql boundSql = delegate.getBoundSql(); Object obj = boundSql.getParameterObject(); String sqls = boundSql.getSql(); if (obj instanceof QueryFilter) { QueryFilter queryFilter = (QueryFilter) obj; MappedStatement mappedStatement = (MappedStatement) ReflectionUtils.getFieldValue(delegate, "mappedStatement"); Connection connection = (Connection) invocation.getArgs()[0]; String sql = boundSql.getSql(); this.setTotalRecord(queryFilter, mappedStatement, connection); String pageSql = this.getPageSql(queryFilter, sql); ReflectionUtils.setFieldValue(boundSql, "sql", pageSql); QueryFilter.setLocal(queryFilter); } return invocation.proceed(); }
From source file:com.huang.rp.common.persistence.PageInterceptor.java
License:Apache License
/** * ??page// www .j ava2s .co m */ private void setTotalRecord(QueryFilter filter, MappedStatement mappedStatement, Connection connection) { BoundSql boundSql = mappedStatement.getBoundSql(filter); String sql = boundSql.getSql(); String countSql = this.getCountSql(sql); List<ParameterMapping> parameterMappings = boundSql.getParameterMappings(); BoundSql countBoundSql = new BoundSql(mappedStatement.getConfiguration(), countSql, parameterMappings, boundSql.getParameterObject()); MetaObject metaParameters = (MetaObject) ReflectionUtils.getFieldValue(boundSql, "metaParameters"); ReflectionUtils.setFieldValue(countBoundSql, "metaParameters", metaParameters); ParameterHandler parameterHandler = new DefaultParameterHandler(mappedStatement, filter, countBoundSql); PreparedStatement pstmt = null; ResultSet rs = null; try { pstmt = connection.prepareStatement(countSql); parameterHandler.setParameters(pstmt); rs = pstmt.executeQuery(); if (rs.next()) { int totalRecord = rs.getInt(1); filter.setRecords(totalRecord); int rows = filter.getRows(); // int total = totalRecord / rows; total = totalRecord % rows == 0 ? total : total + 1; filter.setTotal(total); } } catch (SQLException e) { e.printStackTrace(); } finally { try { if (rs != null) rs.close(); if (pstmt != null) pstmt.close(); } catch (SQLException e) { e.printStackTrace(); } } }
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 www.j av a 2 s .c om*/ @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.jeebase.common.base.component.DataPermissionPaginationInterceptor.java
License:Apache License
/** * Physical Page Interceptor for all the queries with parameter {@link RowBounds} *///from w ww. j av a 2 s .co 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); // ?SELECT? MappedStatement mappedStatement = (MappedStatement) metaObject.getValue("delegate.mappedStatement"); if (!SqlCommandType.SELECT.equals(mappedStatement.getSqlCommandType())) { return invocation.proceed(); } // rowBounds?mapper?? BoundSql boundSql = (BoundSql) metaObject.getValue("delegate.boundSql"); Object paramObj = boundSql.getParameterObject(); String originalSql = boundSql.getSql(); // ??? // ??DataPermission DataPermissionPage dataPermissionPage = null; if (paramObj instanceof DataPermissionPage) { dataPermissionPage = (DataPermissionPage) paramObj; } else if (paramObj instanceof Map) { for (Object arg : ((Map) paramObj).values()) { if (arg instanceof DataPermissionPage) { dataPermissionPage = (DataPermissionPage) arg; break; } } } if (null != dataPermissionPage) { // ?orgId?? if (StringUtils.isEmpty(dataPermissionPage.getOrgIdAlias())) { dataPermissionPage.setOrgIdAlias("organiaztion_id"); } String orgIdAlias = dataPermissionPage.getOrgIdAlias(); List<String> orgIdList = dataPermissionPage.getOrgIdList(); String userIdAlias = dataPermissionPage.getUserIdAlias(); String userId = dataPermissionPage.getUserId(); boolean ownQuery = dataPermissionPage.isOwnQuery(); // ?userId?? if (ownQuery && StringUtils.isEmpty(dataPermissionPage.getUserIdAlias())) { dataPermissionPage.setUserIdAlias("user_id"); } // ???SELECTDELETEUPDATE SqlCommandType sqlCommandType = mappedStatement.getSqlCommandType(); if (SqlCommandType.SELECT.equals(sqlCommandType)) { originalSql = DataPermissionUtil.convertDataPermission(originalSql, orgIdAlias, orgIdList, ownQuery, userIdAlias, userId); } } // ???? // ??page IPage page = null; if (paramObj instanceof IPage) { page = (IPage) paramObj; } else if (paramObj instanceof Map) { for (Object arg : ((Map) paramObj).values()) { if (arg instanceof IPage) { page = (IPage) arg; break; } } } /* * ??? size ? 0 */ if (null == page || page.getSize() < 0) { return invocation.proceed(); } Connection connection = (Connection) invocation.getArgs()[0]; DbType dbType = StringUtils.isNotEmpty(dialectType) ? DbType.getDbType(dialectType) : JdbcUtils.getDbType(connection.getMetaData().getURL()); boolean orderBy = true; if (page.isSearchCount()) { SqlInfo sqlInfo = SqlParserUtils.getOptimizeCountSql(page.optimizeCountSql(), sqlParser, originalSql); orderBy = sqlInfo.isOrderBy(); this.queryTotal(overflow, sqlInfo.getSql(), mappedStatement, boundSql, page, connection); // if (page.getTotal() <= 0) { // return invocation.proceed(); // } } String buildSql = concatOrderBy(originalSql, page, orderBy); DialectModel model = DialectFactory.buildPaginationSql(page, buildSql, dbType, dialectClazz); Configuration configuration = mappedStatement.getConfiguration(); List<ParameterMapping> mappings = new ArrayList<>(boundSql.getParameterMappings()); Map<String, Object> additionalParameters = (Map<String, Object>) metaObject .getValue("delegate.boundSql.additionalParameters"); model.consumers(mappings, configuration, additionalParameters); metaObject.setValue("delegate.boundSql.sql", model.getDialectSql()); metaObject.setValue("delegate.boundSql.parameterMappings", mappings); return invocation.proceed(); }
From source file:com.jeebase.common.base.component.DataPermissionPaginationInterceptor.java
License:Apache License
/** * ?//w w w. j a v a2s . c o m * * @param sql count sql * @param mappedStatement MappedStatement * @param boundSql BoundSql * @param page IPage * @param connection Connection */ protected void queryTotal(boolean overflowCurrent, String sql, MappedStatement mappedStatement, BoundSql boundSql, IPage page, Connection connection) { try (PreparedStatement statement = connection.prepareStatement(sql)) { DefaultParameterHandler parameterHandler = new MybatisDefaultParameterHandler(mappedStatement, boundSql.getParameterObject(), boundSql); parameterHandler.setParameters(statement); long total = 0; try (ResultSet resultSet = statement.executeQuery()) { if (resultSet.next()) { total = resultSet.getLong(1); } } page.setTotal(total); /* * */ long pages = page.getPages(); if (overflowCurrent && page.getCurrent() > pages) { // ? page.setCurrent(1); } } catch (Exception e) { throw ExceptionUtils.mpe("Error: Method queryTotal execution error of sql : \n %s \n", e, sql); } }
From source file:com.jhcz.trade.framework.plugin.mybatis.PagePlugin.java
License:Open Source License
public Object intercept(Invocation ivk) throws Throwable { if (ivk.getTarget() instanceof RoutingStatementHandler) { RoutingStatementHandler statementHandler = (RoutingStatementHandler) ivk.getTarget(); BaseStatementHandler delegate = (BaseStatementHandler) ReflectHelper .getValueByFieldName(statementHandler, "delegate"); MappedStatement mappedStatement = (MappedStatement) ReflectHelper.getValueByFieldName(delegate, "mappedStatement"); // 1???.*query.* 2??page? // if (mappedStatement.getId().matches(pageSqlId)) { // ?SQL BoundSql boundSql = delegate.getBoundSql(); // SQL<select>parameterType??Mapper??,?? Object parameterObject = boundSql.getParameterObject(); if (parameterObject == null) { // throw new // NullPointerException("boundSql.getParameterObject() is null!"); return ivk.proceed(); } else {// www.j a v a2s . c om PageView pageView = null; if (parameterObject instanceof PageView) { // ?Pages pageView = (PageView) parameterObject; } else if (parameterObject instanceof Map) { for (Entry entry : (Set<Entry>) ((Map) parameterObject).entrySet()) { if (entry.getValue() instanceof PageView) { pageView = (PageView) entry.getValue(); break; } } if (pageView == null) { return ivk.proceed(); } } else { // ??Pages pageView = ReflectHelper.getValueByFieldType(parameterObject, PageView.class); if (pageView == null) { return ivk.proceed(); } } String sql = boundSql.getSql(); PreparedStatement countStmt = null; ResultSet rs = null; try { // Connection connection = (Connection) ivk.getArgs()[0]; String countSql = "select count(1) from (" + sql + ") tmp_count"; countStmt = connection.prepareStatement(countSql); ReflectHelper.setValueByFieldName(boundSql, "sql", countSql); DefaultParameterHandler parameterHandler = new DefaultParameterHandler(mappedStatement, parameterObject, boundSql); parameterHandler.setParameters(countStmt); rs = countStmt.executeQuery(); int count = 0; if (rs.next()) { count = ((Number) rs.getObject(1)).intValue(); } pageView.setRowCount(count); } finally { try { rs.close(); } catch (Exception e) { } try { countStmt.close(); } catch (Exception e) { } } String pageSql = generatePagesSql(sql, pageView); ReflectHelper.setValueByFieldName(boundSql, "sql", pageSql); // sql???BoundSql. } // } } return ivk.proceed(); }
From source file:com.joey.Fujikom.common.persistence.interceptor.PaginationInterceptor.java
License:Open Source License
@Override public Object intercept(Invocation invocation) throws Throwable { final MappedStatement mappedStatement = (MappedStatement) invocation.getArgs()[0]; // //?SQL //// if (mappedStatement.getId().matches(_SQL_PATTERN)) { // if (StringUtils.indexOfIgnoreCase(mappedStatement.getId(), _SQL_PATTERN) != -1) { Object parameter = invocation.getArgs()[1]; BoundSql boundSql = mappedStatement.getBoundSql(parameter); Object parameterObject = boundSql.getParameterObject(); //??/*from ww w .ja v a 2 s. c om*/ Page<Object> page = null; if (parameterObject != null) { page = convertParameter(parameterObject, page); } // if (page != null && page.getPageSize() != -1) { if (StringUtils.isBlank(boundSql.getSql())) { return null; } String originalSql = boundSql.getSql().trim(); // page.setCount(SQLHelper.getCount(originalSql, null, mappedStatement, parameterObject, boundSql, log)); // ?? String pageSql = SQLHelper.generatePageSql(originalSql, page, DIALECT); // if (log.isDebugEnabled()) { // log.debug("PAGE SQL:" + StringUtils.replace(pageSql, "\n", "")); // } invocation.getArgs()[2] = new RowBounds(RowBounds.NO_ROW_OFFSET, RowBounds.NO_ROW_LIMIT); BoundSql newBoundSql = new BoundSql(mappedStatement.getConfiguration(), pageSql, boundSql.getParameterMappings(), boundSql.getParameterObject()); MappedStatement newMs = copyFromMappedStatement(mappedStatement, new BoundSqlSqlSource(newBoundSql)); invocation.getArgs()[0] = newMs; } // } return invocation.proceed(); }