List of usage examples for org.apache.ibatis.mapping BoundSql getParameterObject
public Object getParameterObject()
From source file:cn.com.bricks.mybatis.rbac.DynamicRbacInterceptor.java
@Override public Object intercept(Invocation invocation) throws Throwable { StatementHandler statementHandler = (StatementHandler) invocation.getTarget(); MetaObject metaStatementHandler = MetaObject.forObject(statementHandler, DEFAULT_OBJECT_FACTORY, DEFAULT_OBJECT_WRAPPER_FACTORY, DEFAULT_REFLECTOR_FACTORY); MappedStatement mappedStatement = (MappedStatement) metaStatementHandler .getValue("delegate.mappedStatement"); // ?sql//w w w . j a v a2 s.c om BoundSql bsql = statementHandler.getBoundSql(); // ?sql TextSqlNode sqlNode = new TextSqlNode(bsql.getSql()); BoundSql nbsql = getBoundSql(mappedStatement.getConfiguration(), bsql.getParameterObject(), sqlNode); // ?sql? metaStatementHandler.setValue("delegate.boundSql.sql", nbsql.getSql()); return invocation.proceed(); }
From source file:com.baomidou.mybatisplus.plugins.OptimisticLockerInterceptor.java
License:Apache License
private void processChangeSql(MappedStatement ms, BoundSql boundSql, LockerCache lockerCache) throws Exception { Object parameterObject = boundSql.getParameterObject(); if (parameterObject instanceof ParamMap) { ParamMap<?> paramMap = (ParamMap<?>) parameterObject; parameterObject = paramMap.get("et"); EntityWrapper<?> entityWrapper = (EntityWrapper<?>) paramMap.get("ew"); if (entityWrapper != null) { Object entity = entityWrapper.getEntity(); if (entity != null && lockerCache.field.get(entity) == null) { changSql(ms, boundSql, parameterObject, lockerCache); }// w ww. j a v a 2 s .co m } } else { changSql(ms, boundSql, parameterObject, lockerCache); } }
From source file:com.baomidou.mybatisplus.plugins.PaginationInterceptor.java
License:Apache License
/** * ?/*from ww w .ja va 2 s . c o m*/ * * @param sql * @param mappedStatement * @param boundSql * @param page */ protected void queryTotal(String sql, MappedStatement mappedStatement, BoundSql boundSql, Pagination page, Connection connection) { try (PreparedStatement statement = connection.prepareStatement(sql)) { DefaultParameterHandler parameterHandler = new MybatisDefaultParameterHandler(mappedStatement, boundSql.getParameterObject(), boundSql); parameterHandler.setParameters(statement); int total = 0; try (ResultSet resultSet = statement.executeQuery()) { if (resultSet.next()) { total = resultSet.getInt(1); } } page.setTotal(total); /* * */ int pages = page.getPages(); if (overflowCurrent && (page.getCurrent() > pages)) { page = new Pagination(1, page.getSize()); page.setTotal(total); } } catch (Exception e) { logger.error("Error: Method queryTotal execution error !", e); } }
From source file:com.beginner.core.page.PagePlugin.java
License:Apache License
/** * ?/*from ww w . java2 s. c om*/ */ 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"); //?SQL if (mappedStatement.getId().matches(mappedStatementId)) { BoundSql boundSql = delegate.getBoundSql(); //SQL<select>parameterType??Mapper??,?? Object parameterObject = boundSql.getParameterObject(); 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 + ") tmp_count"; 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); } rs.close(); countStmt.close(); Page page = null; if (parameterObject instanceof Page) { //?Page page = (Page) parameterObject; page.setEntityOrField(true); 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); page.setTotalResult(count); //?? ReflectHelper.setValueByFieldName(parameterObject, "page", page); } else { throw new NoSuchFieldException( parameterObject.getClass().getName() + "? page ?"); } } String pageSql = generatePageSql(sql, page); //sql???BoundSql. ReflectHelper.setValueByFieldName(boundSql, "sql", pageSql); } } } return ivk.proceed(); }
From source file:com.bsb.cms.commons.page.interceptor.PaginationInterceptor.java
License:Open Source License
@Override public Object intercept(Invocation invocation) throws Throwable { // ? MappedStatementBoundSql?sql? MappedStatement mappedStatement = (MappedStatement) invocation.getArgs()[0]; if (mappedStatement.getId().matches(pageSqlId)) { // ?SQL Object parameter = invocation.getArgs()[1]; BoundSql boundSql = mappedStatement.getBoundSql(parameter); String originalSql = boundSql.getSql().trim(); Object parameterObject = boundSql.getParameterObject(); /*/*from ww w.j a v a 2 s.co m*/ * if (parameterObject != null) { page = * (Page)ReflectHelper.isPage(parameterObject, "page"); } * * if ((page == null) && (context.isPagination())) { page = context; * } */ // Pagination page = null; PageContext page = PageContext.getContext(); // Page?? String countSql = getCountSql(originalSql); Connection connection = mappedStatement.getConfiguration().getEnvironment().getDataSource() .getConnection(); PreparedStatement countStmt = connection.prepareStatement(countSql); BoundSql countBS = copyFromBoundSql(mappedStatement, boundSql, countSql); log.debug("countSql=" + countSql); DefaultParameterHandler parameterHandler = new DefaultParameterHandler(mappedStatement, parameterObject, countBS); parameterHandler.setParameters(countStmt); ResultSet rs = countStmt.executeQuery(); int totpage = 0; if (rs.next()) { totpage = rs.getInt(1); } rs.close(); countStmt.close(); connection.close();// TODO // page.init(totpage, page.getPageSize(), page.getCurrentPage()); if ((StringUtils.isNotEmpty(page.getOrderBy())) && (originalSql.indexOf("BUSINESS_CIRCLE") == -1)) { originalSql = originalSql + " ORDER BY " + page.getOrderBy(); } String pageSql = buildPageSqlForMysql(originalSql, page).toString(); BoundSql newBoundSql = copyFromBoundSql(mappedStatement, boundSql, pageSql); MappedStatement newMs = copyFromMappedStatement(mappedStatement, new BoundSqlSqlSource(newBoundSql)); log.debug("newMs=" + pageSql); invocation.getArgs()[0] = newMs; } return invocation.proceed(); }
From source file:com.bsb.cms.commons.page.interceptor.PaginationInterceptor.java
License:Open Source License
/** * ?BoundSql//from w w w .j a va2 s. c om */ 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)); } } return newBoundSql; }
From source file:com.chrhc.mybatis.locker.interceptor.OptimisticLocker.java
License:Apache License
private VersionLocker getVersionLocker(MappedStatement ms, BoundSql boundSql) { Class<?>[] paramCls = null; Object paramObj = boundSql.getParameterObject(); /******************?????3?***********************/ /******************Process param must order by below ***********************/ // 1??@Param? // 1?Process @Param param if (paramObj instanceof MapperMethod.ParamMap<?>) { MapperMethod.ParamMap<?> mmp = (MapperMethod.ParamMap<?>) paramObj; if (null != mmp && !mmp.isEmpty()) { paramCls = new Class<?>[mmp.size() / 2]; int mmpLen = mmp.size() / 2; for (int i = 0; i < mmpLen; i++) { Object index = mmp.get("param" + (i + 1)); paramCls[i] = index.getClass(); if (List.class.isAssignableFrom(paramCls[i])) { return falseLocker; }/*w ww . ja v a2 s . co m*/ } } // 2??Map? // 2?Process Map param } else if (paramObj instanceof Map) {//??? @SuppressWarnings("rawtypes") Map map = (Map) paramObj; if (map.get("list") != null || map.get("array") != null) { return falseLocker; } else { paramCls = new Class<?>[] { Map.class }; } // 3??POJO? // 3?Process POJO entity param } else { paramCls = new Class<?>[] { paramObj.getClass() }; } Cache.MethodSignature vm = new MethodSignature(ms.getId(), paramCls); VersionLocker versionLocker = versionLockerCache.getVersionLocker(vm); if (null != versionLocker) { return versionLocker; } Class<?> mapper = getMapper(ms); if (mapper != null) { Method m; try { m = mapper.getDeclaredMethod(getMapperShortId(ms), paramCls); } catch (NoSuchMethodException | SecurityException e) { throw new RuntimeException("The Map type param error." + e, e); } versionLocker = m.getAnnotation(VersionLocker.class); if (null == versionLocker) { versionLocker = trueLocker; } if (!versionLockerCache.containMethodSignature(vm)) { versionLockerCache.cacheMethod(vm, versionLocker); } return versionLocker; } else { throw new RuntimeException("Config info error, maybe you have not config the Mapper interface"); } }
From source file:com.eryansky.common.orm.mybatis.interceptor.PaginationInterceptor.java
License:Apache 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 va2s .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(); if (log.isDebugEnabled()) { log.debug("SQL:" + originalSql); } // page.setTotalCount( SQLHelper.getCount(originalSql, null, mappedStatement, parameterObject, boundSql, log)); Dialect dialect = DIALECT; //? String dbName = convertDbNameParameter(parameterObject); if (StringUtils.isNotBlank(dbName)) { dialect = getDialect(dbName); } // ?? 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.eryansky.common.orm.mybatis.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 = 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 {/*from w w w .j a v a 2s .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(); }
From source file:com.funtl.framework.smoke.core.commons.persistence.interceptor.PaginationInterceptor.java
License:Apache 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 a2 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()); //MyBatis foreach ? start if (Reflections.getFieldValue(boundSql, "metaParameters") != null) { MetaObject mo = (MetaObject) Reflections.getFieldValue(boundSql, "metaParameters"); Reflections.setFieldValue(newBoundSql, "metaParameters", mo); } //MyBatis foreach ? end MappedStatement newMs = copyFromMappedStatement(mappedStatement, new BoundSqlSqlSource(newBoundSql)); invocation.getArgs()[0] = newMs; } // } return invocation.proceed(); }