List of usage examples for org.apache.ibatis.mapping BoundSql getSql
public String getSql()
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 w w .j a v a2 s . c om*/ 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.hj.blog.common.orm.PageInterceptor.java
License:Apache License
private void setTotalCount(DigitalPage page, Object parameterObject, MappedStatement mappedStatement, Connection connection) {//from w w w.j a va 2s .c om BoundSql boundSql = mappedStatement.getBoundSql(parameterObject); String sql = boundSql.getSql(); String countSql = getTotalCountSql(sql); List<ParameterMapping> parameterMappings = boundSql.getParameterMappings(); BoundSql countBoundSql = new BoundSql(mappedStatement.getConfiguration(), countSql, parameterMappings, parameterObject); ParameterHandler parameterHandler = new DefaultParameterHandler(mappedStatement, parameterObject, countBoundSql); PreparedStatement preparedStatement = null; ResultSet resultSet = null; try { preparedStatement = connection.prepareStatement(countSql); parameterHandler.setParameters(preparedStatement); resultSet = preparedStatement.executeQuery(); if (resultSet.next()) { int totalCount = resultSet.getInt(1); page.setTotalCount(totalCount); } } catch (SQLException e) { throw new RuntimeException(e); } finally { try { if (resultSet != null) resultSet.close(); if (preparedStatement != null) preparedStatement.close(); } catch (SQLException e) { throw new RuntimeException(e); } } }
From source file:com.huang.rp.common.persistence.PageInterceptor.java
License:Apache License
/** * ??/* ww w . j a va2s . 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// ww w .j av a2 s . com */ 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.icfcc.db.pagehelper.sqlsource.PageDynamicSqlSource.java
License:Open Source License
@Override protected BoundSql getCountBoundSql(Object parameterObject) { DynamicContext context = new DynamicContext(configuration, parameterObject); rootSqlNode.apply(context);/*w w w . j a v a2 s .c om*/ SqlSourceBuilder sqlSourceParser = new SqlSourceBuilder(configuration); Class<?> parameterType = parameterObject == null ? Object.class : parameterObject.getClass(); SqlSource sqlSource = sqlSourceParser.parse(context.getSql(), parameterType, context.getBindings()); BoundSql boundSql = sqlSource.getBoundSql(parameterObject); sqlSource = new StaticSqlSource(configuration, parser.getCountSql(boundSql.getSql()), boundSql.getParameterMappings()); boundSql = sqlSource.getBoundSql(parameterObject); //?? for (Map.Entry<String, Object> entry : context.getBindings().entrySet()) { boundSql.setAdditionalParameter(entry.getKey(), entry.getValue()); } return boundSql; }
From source file:com.icfcc.db.pagehelper.sqlsource.PageDynamicSqlSource.java
License:Open Source License
@Override protected BoundSql getPageBoundSql(Object parameterObject) { DynamicContext context;//from w ww . ja v a2s. c om //??parameterObject??? //??Map?KEY //bug#25:http://git.oschina.net/free/Mybatis_PageHelper/issues/25 if (parameterObject != null && parameterObject instanceof Map && ((Map) parameterObject).containsKey(ORIGINAL_PARAMETER_OBJECT)) { context = new DynamicContext(configuration, ((Map) parameterObject).get(ORIGINAL_PARAMETER_OBJECT)); } else { context = new DynamicContext(configuration, parameterObject); } rootSqlNode.apply(context); SqlSourceBuilder sqlSourceParser = new SqlSourceBuilder(configuration); Class<?> parameterType = parameterObject == null ? Object.class : parameterObject.getClass(); SqlSource sqlSource = sqlSourceParser.parse(context.getSql(), parameterType, context.getBindings()); sqlSource = new OrderByStaticSqlSource((StaticSqlSource) sqlSource); BoundSql boundSql = sqlSource.getBoundSql(parameterObject); sqlSource = new StaticSqlSource(configuration, parser.getPageSql(boundSql.getSql()), parser.getPageParameterMapping(configuration, boundSql)); boundSql = sqlSource.getBoundSql(parameterObject); //?? for (Map.Entry<String, Object> entry : context.getBindings().entrySet()) { boundSql.setAdditionalParameter(entry.getKey(), entry.getValue()); } return boundSql; }
From source file:com.icfcc.db.pagehelper.sqlsource.PageProviderSqlSource.java
License:Open Source License
@Override protected BoundSql getCountBoundSql(Object parameterObject) { BoundSql boundSql; SqlSource sqlSource = createSqlSource(parameterObject); boundSql = sqlSource.getBoundSql(parameterObject); return new BoundSql(configuration, parser.getCountSql(boundSql.getSql()), boundSql.getParameterMappings(), parameterObject);// w w w . j a v a 2 s. c o m }
From source file:com.icfcc.db.pagehelper.sqlsource.PageProviderSqlSource.java
License:Open Source License
@Override protected BoundSql getPageBoundSql(Object parameterObject) { BoundSql boundSql; if (parameterObject instanceof Map && ((Map) parameterObject).containsKey(PROVIDER_OBJECT)) { SqlSource sqlSource = createSqlSource(((Map) parameterObject).get(PROVIDER_OBJECT)); boundSql = sqlSource.getBoundSql(((Map) parameterObject).get(PROVIDER_OBJECT)); } else {//from w ww .j a v a 2s .com SqlSource sqlSource = createSqlSource(parameterObject); boundSql = sqlSource.getBoundSql(parameterObject); } return new BoundSql(configuration, parser.getPageSql(boundSql.getSql()), parser.getPageParameterMapping(configuration, boundSql), parameterObject); }
From source file:com.itfsw.mybatis.generator.plugins.tools.SqlHelper.java
License:Apache License
/** * ????sql/*from www . j a v a2 s . c o m*/ * @param session * @param namespace * @param params * @return */ public static String getNamespaceSql(SqlSession session, String namespace, Object params) { Configuration configuration = session.getConfiguration(); MappedStatement mappedStatement = configuration.getMappedStatement(namespace); TypeHandlerRegistry typeHandlerRegistry = mappedStatement.getConfiguration().getTypeHandlerRegistry(); BoundSql boundSql = mappedStatement.getBoundSql(params); List<ParameterMapping> parameterMappings = boundSql.getParameterMappings(); String sql = boundSql.getSql(); if (parameterMappings != null) { for (int i = 0; i < parameterMappings.size(); i++) { ParameterMapping parameterMapping = parameterMappings.get(i); if (parameterMapping.getMode() != ParameterMode.OUT) { Object value; String propertyName = parameterMapping.getProperty(); if (boundSql.hasAdditionalParameter(propertyName)) { value = boundSql.getAdditionalParameter(propertyName); } else if (params == null) { value = null; } else if (typeHandlerRegistry.hasTypeHandler(params.getClass())) { value = params; } else { MetaObject metaObject = configuration.newMetaObject(params); value = metaObject.getValue(propertyName); } JdbcType jdbcType = parameterMapping.getJdbcType(); if (value == null && jdbcType == null) jdbcType = configuration.getJdbcTypeForNull(); sql = replaceParameter(sql, value, jdbcType, parameterMapping.getJavaType()); } } } return sql; }
From source file:com.jeebase.common.base.component.DataPermissionInterceptor.java
License:Apache License
/** * Physical Page Interceptor for all the queries with parameter {@link RowBounds} */// www. j ava 2s.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); // 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(); }