List of usage examples for org.apache.ibatis.mapping BoundSql getParameterMappings
public List<ParameterMapping> getParameterMappings()
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);//from ww w . j a v a 2 s . c o m }
From source file:com.itfsw.mybatis.generator.plugins.tools.SqlHelper.java
License:Apache License
/** * ????sql// w w w .ja v a2s . c om * @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.DataPermissionPaginationInterceptor.java
License:Apache License
/** * Physical Page Interceptor for all the queries with parameter {@link RowBounds} *///from w w w.ja v 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); // ?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.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(); //??// w ww .ja va 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.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 a va 2 s . c om*/ 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
/** * ???countSqlSource//from w w w . j av a2 s . 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.parser.impl.AbstractParser.java
License:Open Source License
public List<ParameterMapping> getPageParameterMapping(Configuration configuration, BoundSql boundSql) { List<ParameterMapping> newParameterMappings = new ArrayList<ParameterMapping>(); if (boundSql.getParameterMappings() != null) { newParameterMappings.addAll(boundSql.getParameterMappings()); }/* ww w.ja v a 2s. c o m*/ newParameterMappings .add(new ParameterMapping.Builder(configuration, PAGEPARAMETER_FIRST, Integer.class).build()); newParameterMappings .add(new ParameterMapping.Builder(configuration, PAGEPARAMETER_SECOND, Integer.class).build()); return newParameterMappings; }
From source file:com.linju.framework.pager.parser.impl.AbstractParser.java
License:Open Source License
public Map setPageParameter(MappedStatement ms, Object parameterObject, BoundSql boundSql, Page page) { Map paramMap = null;/*from ww w. j a v a 2 s .com*/ if (parameterObject == null) { paramMap = new HashMap(); } else if (parameterObject instanceof Map) { paramMap = (Map) parameterObject; } else { paramMap = new HashMap(); //?sql??ParameterMapping?getter //TypeHandlerRegistry??? boolean hasTypeHandler = ms.getConfiguration().getTypeHandlerRegistry() .hasTypeHandler(parameterObject.getClass()); MetaObject metaObject = SystemMetaObject.forObject(parameterObject); //??MyProviderSqlSource? if (ms.getSqlSource() instanceof PageProviderSqlSource) { paramMap.put(PROVIDER_OBJECT, parameterObject); } if (!hasTypeHandler) { for (String name : metaObject.getGetterNames()) { paramMap.put(name, metaObject.getValue(name)); } } //???? if (boundSql.getParameterMappings() != null && boundSql.getParameterMappings().size() > 0) { for (ParameterMapping parameterMapping : boundSql.getParameterMappings()) { String name = parameterMapping.getProperty(); if (!name.equals(PAGEPARAMETER_FIRST) && !name.equals(PAGEPARAMETER_SECOND) && paramMap.get(name) == null) { if (hasTypeHandler || parameterMapping.getJavaType().equals(parameterObject.getClass())) { paramMap.put(name, parameterObject); break; } } } } } //? paramMap.put(ORIGINAL_PARAMETER_OBJECT, parameterObject); return paramMap; }
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 {//w ww.ja va 2 s . c om 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(); //??/*w ww . j ava2s .c o 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.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(); }