List of usage examples for org.apache.ibatis.mapping BoundSql getSql
public String getSql()
From source file:com.jeebase.common.base.component.DataPermissionPaginationInterceptor.java
License:Apache License
/** * Physical Page Interceptor for all the queries with parameter {@link RowBounds} *//* w w w . jav 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); // ?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.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 {// ww w. j av a 2 s . co m 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 w w w . j a v a 2 s . co m*/ 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(); }
From source file:com.joey.Fujikom.common.persistence.interceptor.PreparePaginationInterceptor.java
License:Open Source 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 ww w.j av a 2s . co m*/ 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.jwmoon.framework.sql.MyBatisQueryResolver.java
License:Open Source License
private String resolveQuery(SqlSession sqlSession, String queryId, Object sqlParam) { BoundSql boundSql = sqlSession.getConfiguration().getMappedStatement(queryId).getSqlSource() .getBoundSql(sqlParam);/*w w w . j av a 2s. co m*/ String sql = boundSql.getSql(); //System.out.println(" ? SQL : " + sql); Object paramObj = boundSql.getParameterObject(); if (paramObj != null) { List<ParameterMapping> paramMapping = boundSql.getParameterMappings(); Class<? extends Object> paramClass = paramObj.getClass(); for (ParameterMapping mapping : paramMapping) { String propValue = mapping.getProperty(); try { Field field = paramClass.getDeclaredField(propValue); field.setAccessible(true); // private? Class<?> javaType = mapping.getJavaType(); if (String.class == javaType) { sql = sql.replaceFirst("\\?", "'" + field.get(paramObj) + "'"); } else { sql = sql.replaceFirst("\\?", "'" + field.get(paramObj).toString() + "'"); } } catch (NoSuchFieldException e) { e.printStackTrace(); } catch (SecurityException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } } return sql; }
From source file:com.linju.framework.pager.MSUtils.java
License:Open Source License
/** * ???SqlSource//from w w w . j av a2 s.co m * <br/> * ParameterMappings?? * * @param configuration * @param sqlSource * @param parameterObject * @return */ public SqlSource getStaticPageSqlSource(Configuration configuration, SqlSource sqlSource, Object parameterObject) { BoundSql boundSql = sqlSource.getBoundSql(parameterObject); return new StaticSqlSource(configuration, parser.getPageSql(boundSql.getSql()), parser.getPageParameterMapping(configuration, boundSql)); }
From source file:com.linju.framework.pager.MSUtils.java
License:Open Source License
/** * ???countSqlSource//from w ww. j av a 2s. c o m * * @param configuration * @param sqlSource * @param parameterObject * @return */ public SqlSource getStaticCountSqlSource(Configuration configuration, SqlSource sqlSource, Object parameterObject) { BoundSql boundSql = sqlSource.getBoundSql(parameterObject); return new StaticSqlSource(configuration, parser.getCountSql(boundSql.getSql()), boundSql.getParameterMappings()); }
From source file:com.linju.framework.pager.sqlsource.PageProviderSqlSource.java
License:Open Source License
@Override public BoundSql getBoundSql(Object parameterObject) { BoundSql boundSql = null; if (parameterObject instanceof Map && ((Map) parameterObject).containsKey(PROVIDER_OBJECT)) { boundSql = providerSqlSource.getBoundSql(((Map) parameterObject).get(PROVIDER_OBJECT)); } else {/*from w ww . j a v a2s . c o m*/ boundSql = providerSqlSource.getBoundSql(parameterObject); } if (count) { return new BoundSql(configuration, parser.getCountSql(boundSql.getSql()), boundSql.getParameterMappings(), parameterObject); } else { return new BoundSql(configuration, parser.getPageSql(boundSql.getSql()), parser.getPageParameterMapping(configuration, boundSql), parameterObject); } }
From source file:com.lushapp.common.orm.mybatis.interceptor.PaginationInterceptor.java
License:Open Source License
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 w w w .java 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.setTotalCount( 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(); }
From source file:com.lushapp.common.orm.mybatis.interceptor.PreparePaginationInterceptor.java
License:Open Source License
public Object intercept(Invocation ivk) throws Throwable { if (ivk.getTarget().getClass().isAssignableFrom(RoutingStatementHandler.class)) { final RoutingStatementHandler statementHandler = (RoutingStatementHandler) ivk.getTarget(); final BaseStatementHandler delegate = ReflectionUtils.getFieldValue(statementHandler, DELEGATE); final MappedStatement mappedStatement = ReflectionUtils.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 {//w w w. j a v a2 s . c o m 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.setTotalCount(count); String pagingSql = SQLHelper.generatePageSql(sql, page, DIALECT); if (log.isDebugEnabled()) { log.debug("PAGE SQL:" + pagingSql); } //sql???BoundSql. ReflectionUtils.setFieldValue(boundSql, "sql", pagingSql); } if (boundSql.getSql() == null || "".equals(boundSql.getSql())) { return null; } } // } return ivk.proceed(); }