List of usage examples for org.apache.ibatis.mapping BoundSql getSql
public String getSql()
From source file:com.sinotopia.mybatis.pagehelper.dialect.helper.SqlServerDialect.java
License:Open Source License
@Override public String getCountSql(MappedStatement ms, BoundSql boundSql, Object parameterObject, RowBounds rowBounds, CacheKey countKey) {//from w w w . j a va 2 s . c o m String sql = boundSql.getSql(); String cacheSql = CACHE_COUNTSQL.get(sql); if (cacheSql != null) { return cacheSql; } else { cacheSql = sql; } cacheSql = cacheSql.replaceAll("((?i)with\\s*\\(nolock\\))", WITHNOLOCK); cacheSql = countSqlParser.getSmartCountSql(cacheSql); cacheSql = cacheSql.replaceAll(WITHNOLOCK, " with(nolock)"); CACHE_COUNTSQL.put(sql, cacheSql); return cacheSql; }
From source file:com.springD.framework.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 www .java 2s. c o m*/ Page<Object> page = null; if (parameterObject != null) { page = convertParameter(parameterObject, page); } // if (page != null && page.getPageSize() != -1) { if (org.apache.commons.lang3.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.tj.mybatisplus.plugins.PaginationInterceptor.java
License:Apache License
public Object intercept(Invocation invocation) throws Throwable { Object target = invocation.getTarget(); if (target instanceof StatementHandler) { StatementHandler statementHandler = (StatementHandler) target; MetaObject metaStatementHandler = SystemMetaObject.forObject(statementHandler); RowBounds rowBounds = (RowBounds) metaStatementHandler.getValue("delegate.rowBounds"); /* ??? */ if (rowBounds == null || rowBounds == RowBounds.DEFAULT) { return invocation.proceed(); }// w ww . java2 s . c om /* ? */ IDialect dialect = null; if (dialectType != null && !"".equals(dialectType)) { dialect = DialectFactory.getDialectByDbtype(dialectType); } else { if (dialectClazz != null && !"".equals(dialectClazz)) { try { Class<?> clazz = Class.forName(dialectClazz); if (IDialect.class.isAssignableFrom(clazz)) { dialect = (IDialect) clazz.newInstance(); } } catch (ClassNotFoundException e) { throw new MybatisPlusException("Class :" + dialectClazz + " is not found"); } } } /* ? */ if (dialect == null) { throw new MybatisPlusException( "The value of the dialect property in mybatis configuration.xml is not defined."); } /* * <p> * ? * </p> * <p> * ??????? * </p> */ BoundSql boundSql = (BoundSql) metaStatementHandler.getValue("delegate.boundSql"); String originalSql = (String) boundSql.getSql(); metaStatementHandler.setValue("delegate.rowBounds.offset", RowBounds.NO_ROW_OFFSET); metaStatementHandler.setValue("delegate.rowBounds.limit", RowBounds.NO_ROW_LIMIT); /** * <p> * * </p> * <p> * count * </p> */ if (rowBounds instanceof Pagination) { MappedStatement mappedStatement = (MappedStatement) metaStatementHandler .getValue("delegate.mappedStatement"); Connection connection = (Connection) invocation.getArgs()[0]; Pagination page = (Pagination) rowBounds; if (page.isSearchCount()) { page = this.count(originalSql, connection, mappedStatement, boundSql, page); } originalSql = dialect.buildPaginationSql(originalSql, page.getOffsetCurrent(), page.getSize()); } /** * SQL */ metaStatementHandler.setValue("delegate.boundSql.sql", originalSql); } return invocation.proceed(); }
From source file:com.wsun.seap.dao.interceptor.PaginationInterceptor.java
License:Open Source License
@Override public Object intercept(Invocation invocation) throws Throwable { // ??/*from w ww.j av a 2 s . co m*/ final MappedStatement mappedStatement = (MappedStatement) invocation.getArgs()[MAPPED_STATEMENT_INDEX]; // ?SQL // ?? Object parameterObj = invocation.getArgs()[PARAMETER_INDEX]; // ??QueryParam Object parameter; if (parameterObj instanceof QueryParam) { // ?QueryParam,??Map parameter = ((QueryParam) parameterObj).getAllParam(); invocation.getArgs()[PARAMETER_INDEX] = parameter; } else { parameter = parameterObj; } BoundSql boundSql = mappedStatement.getBoundSql(parameter); if (StringUtils.isBlank(boundSql.getSql())) { return null; } // ??RowBounds RowBounds rowBounds = (RowBounds) invocation.getArgs()[ROWBOUNDS_INDEX]; // if (rowBounds != null && rowBounds != RowBounds.DEFAULT) { String originalSql = boundSql.getSql().trim(); // ??sql String pageSql = dialect.getLimitString(originalSql, rowBounds.getOffset(), rowBounds.getLimit()); invocation.getArgs()[ROWBOUNDS_INDEX] = 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()[MAPPED_STATEMENT_INDEX] = newMs; } return invocation.proceed(); }
From source file:com.wsun.seap.dao.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) ReflectionsUtil .getFieldValue(statementHandler, DELEGATE); final MappedStatement mappedStatement = (MappedStatement) ReflectionsUtil.getFieldValue(delegate, MAPPED_STATEMENT);//w ww.j a v a2s . co m 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()[MAPPED_STATEMENT_INDEX]; final String sql = boundSql.getSql(); // } if (boundSql.getSql() == null || "".equals(boundSql.getSql())) { return null; } } return ivk.proceed(); }
From source file:com.xiaogua.web.util.MybatisSqlHelper.java
License:Open Source License
/** /*from w w w . ja v a 2s .co m*/ * ????sql * * @param session * @param namespace * @param params * @return */ public static String getNameSpaceSql(SqlSession session, String namespace, Object params) { params = wrapCollection(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.yimidida.shards.plugin.PaginationInterceptor.java
License:Open Source License
@Override public Object intercept(Invocation invocation) throws Throwable { final MappedStatement mappedStatement = this.getMappedStatement(invocation); final Object parameter = this.getParameter(invocation); final RowBounds rowBounds = this.getRowBounds(invocation); final int offset = rowBounds.getOffset(); final int limit = rowBounds.getLimit(); if (dialect.supportLimit() && (offset != RowBounds.NO_ROW_OFFSET || limit != RowBounds.NO_ROW_LIMIT)) { BoundSql boundSql = mappedStatement.getBoundSql(parameter); String sql = boundSql.getSql().trim(); if (dialect.supportOffsetLimit()) { sql = dialect.getLimitString(sql, offset, limit); } else {// w w w . j av a 2 s. com sql = dialect.getLimitString(sql, RowBounds.NO_ROW_OFFSET, limit); } this.setMappedStatement(invocation, this.buildMappedStatement(mappedStatement, boundSql, sql)); this.setRowBounds(invocation, RowBounds.DEFAULT); } return invocation.proceed(); }
From source file:com.zrx.authority.dao.plugin.PagePlugin.java
public Object intercept(Invocation ivk) throws Throwable { // TODO Auto-generated method stub if (ivk.getTarget() instanceof RoutingStatementHandler) { RoutingStatementHandler statementHandler = (RoutingStatementHandler) ivk.getTarget(); BaseStatementHandler delegate = (BaseStatementHandler) ReflectHelper .getValueByFieldName(statementHandler, "delegate"); MappedStatement mappedStatement = (MappedStatement) ReflectHelper.getValueByFieldName(delegate, "mappedStatement"); if (mappedStatement.getId().matches(pageSqlId)) { //?SQL BoundSql boundSql = delegate.getBoundSql(); Object parameterObject = boundSql.getParameterObject();//SQL<select>parameterType??Mapper??,?? if (parameterObject == null) { throw new NullPointerException("parameterObject?"); } else { Connection connection = (Connection) ivk.getArgs()[0]; String sql = boundSql.getSql(); //String countSql = "select count(0) from (" + sql+ ") as tmp_count"; // String countSql = "select count(0) from (" + sql + ") tmp_count"; // == oracle as (SQL command not properly ended) PreparedStatement countStmt = connection.prepareStatement(countSql); BoundSql countBS = new BoundSql(mappedStatement.getConfiguration(), countSql, boundSql.getParameterMappings(), parameterObject); setParameters(countStmt, mappedStatement, countBS, parameterObject); ResultSet rs = countStmt.executeQuery(); int count = 0; if (rs.next()) { count = rs.getInt(1); }/*from www . j ava 2 s.c o m*/ rs.close(); countStmt.close(); //System.out.println(count); Page page = null; if (parameterObject instanceof Page) { //?Page page = (Page) parameterObject; page.setEntityOrField(true); //?com.jalan.entity.Page.entityOrField page.setTotalResult(count); } else { //??Page Field pageField = ReflectHelper.getFieldByFieldName(parameterObject, "page"); if (pageField != null) { page = (Page) ReflectHelper.getValueByFieldName(parameterObject, "page"); if (page == null) page = new Page(); page.setEntityOrField(false); //?com.jalan.entity.Page.entityOrField page.setTotalResult(count); ReflectHelper.setValueByFieldName(parameterObject, "page", page); //?? } else { throw new NoSuchFieldException( parameterObject.getClass().getName() + "? page ?"); } } String pageSql = generatePageSql(sql, page); ReflectHelper.setValueByFieldName(boundSql, "sql", pageSql); //sql???BoundSql. } } } return ivk.proceed(); }
From source file:core.plugin.mybatis.ExecuteSqlLogInterceptor.java
License:Apache License
private static String getRuntimeExeSql(Configuration configuration, BoundSql boundSql) { Object parameterObject = boundSql.getParameterObject(); List<ParameterMapping> parameterMappings = boundSql.getParameterMappings(); String sql = boundSql.getSql().replaceAll("[\\s]+", " "); if (parameterMappings.size() > 0 && parameterObject != null) { TypeHandlerRegistry typeHandlerRegistry = configuration.getTypeHandlerRegistry(); if (typeHandlerRegistry.hasTypeHandler(parameterObject.getClass())) { sql = sql.replaceFirst("\\?", getParameterValue(parameterObject)); } else {//from w w w . jav a 2 s. co m MetaObject metaObject = configuration.newMetaObject(parameterObject); for (ParameterMapping parameterMapping : parameterMappings) { String propertyName = parameterMapping.getProperty(); if (metaObject.hasGetter(propertyName)) { Object obj = metaObject.getValue(propertyName); sql = sql.replaceFirst("\\?", getParameterValue(obj)); } else if (boundSql.hasAdditionalParameter(propertyName)) { Object obj = boundSql.getAdditionalParameter(propertyName); sql = sql.replaceFirst("\\?", getParameterValue(obj)); } } } } return sql; }
From source file:core.plugin.mybatis.PageInterceptor.java
License:Apache License
@Override public Object intercept(Invocation inv) throws Throwable { // prepare?Connection Connection connection = (Connection) inv.getArgs()[0]; String dbType = connection.getMetaData().getDatabaseProductName(); L.debug(dbType);//w ww . ja v a 2 s. c o m Dialect dialect = null; if (StringUtils.equalsIgnoreCase("ORACLE", dbType)) { dialect = new OracleDialect(); } else if (StringUtils.equalsIgnoreCase("H2", dbType)) { dialect = new H2Dialect(); } else { throw new AppRuntimeException("A404: Not Support ['" + dbType + "'] Pagination Yet!"); } StatementHandler target = (StatementHandler) inv.getTarget(); BoundSql boundSql = target.getBoundSql(); String sql = boundSql.getSql(); if (StringUtils.isBlank(sql)) { return inv.proceed(); } // ?select?? if (sql.matches(SQL_SELECT_REGEX) && !Pattern.matches(SQL_COUNT_REGEX, sql)) { Object obj = FieldUtils.readField(target, "delegate", true); // ??? RowBounds RowBounds rowBounds = (RowBounds) FieldUtils.readField(obj, "rowBounds", true); // ??SQL if (rowBounds != null && rowBounds != RowBounds.DEFAULT) { FieldUtils.writeField(boundSql, "sql", dialect.getSqlWithPagination(sql, rowBounds), true); // ???(?) FieldUtils.writeField(rowBounds, "offset", RowBounds.NO_ROW_OFFSET, true); FieldUtils.writeField(rowBounds, "limit", RowBounds.NO_ROW_LIMIT, true); } } return inv.proceed(); }