List of usage examples for org.apache.ibatis.mapping BoundSql getParameterObject
public Object getParameterObject()
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 w w w .j a va 2s . c o 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);/*from w w w. j av a 2s.c o 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.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 www .j a v a 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 {/*from ww w . j av a 2 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(); }
From source file:com.mook.locker.interceptor.OptimisticLocker.java
License:Apache License
@Override @SuppressWarnings({ "unchecked", "rawtypes" }) public Object intercept(Invocation invocation) throws Exception { String interceptMethod = invocation.getMethod().getName(); String versionColumn = props.getProperty("versionColumn", "version"); if ("prepare".equals(interceptMethod)) { StatementHandler handler = (StatementHandler) invocation.getTarget(); MetaObject hm = SystemMetaObject.forObject(handler); MappedStatement ms = (MappedStatement) hm.getValue("delegate.mappedStatement"); SqlCommandType sqlCmdType = ms.getSqlCommandType(); if (sqlCmdType != SqlCommandType.UPDATE) { return invocation.proceed(); }//from w ww. jav a 2s .c om BoundSql boundSql = (BoundSql) hm.getValue("delegate.boundSql"); if (hasVersionLocker(ms, boundSql)) { return invocation.proceed(); } Object originalVersion = hm.getValue("delegate.boundSql.parameterObject.version"); Object versionIncr = castTypeAndOptValue(originalVersion, hm.getValue("delegate.boundSql.parameterObject"), ValueType.INCREASE); hm.setValue("delegate.boundSql.parameterObject.version", versionIncr); String originalSql = (String) hm.getValue("delegate.boundSql.sql"); StringBuilder builder = new StringBuilder(originalSql); builder.append(" and "); builder.append(versionColumn); builder.append(" = ?"); hm.setValue("delegate.boundSql.sql", builder.toString()); if (log.isDebugEnabled()) { log.debug("==> originalSql: " + originalSql); } return invocation.proceed(); } else if ("setParameters".equals(interceptMethod)) { ParameterHandler handler = (ParameterHandler) invocation.getTarget(); MetaObject hm = SystemMetaObject.forObject(handler); MappedStatement ms = (MappedStatement) hm.getValue("mappedStatement"); SqlCommandType sqlCmdType = ms.getSqlCommandType(); if (sqlCmdType != SqlCommandType.UPDATE) { return invocation.proceed(); } Configuration configuration = (Configuration) hm.getValue("configuration"); BoundSql boundSql = (BoundSql) hm.getValue("boundSql"); if (hasVersionLocker(ms, boundSql)) { return invocation.proceed(); } Object result = invocation.proceed(); ParameterMapping versionMapping = new ParameterMapping.Builder(configuration, versionColumn, Object.class).build(); Object parameterObject = boundSql.getParameterObject(); MetaObject pm = configuration.newMetaObject(parameterObject); if (parameterObject instanceof MapperMethod.ParamMap<?>) { MapperMethod.ParamMap<?> paramMap = (MapperMethod.ParamMap<?>) parameterObject; if (!paramMap.containsKey(versionColumn)) { throw new TypeException("??MyBatis@Param"); } } Object value = pm.getValue(versionColumn); TypeHandler typeHandler = versionMapping.getTypeHandler(); JdbcType jdbcType = versionMapping.getJdbcType(); if (value == null && jdbcType == null) { jdbcType = configuration.getJdbcTypeForNull(); } List<ParameterMapping> parameterMappings = boundSql.getParameterMappings(); try { PreparedStatement ps = (PreparedStatement) invocation.getArgs()[0]; Object val = castTypeAndOptValue(value, parameterObject, ValueType.DECREASE); typeHandler.setParameter(ps, parameterMappings.size() + 1, val, jdbcType); } catch (TypeException e) { throw new TypeException( "Could not set parameters for mapping: " + parameterMappings + ". Cause: " + e, e); } catch (SQLException e) { throw new TypeException( "Could not set parameters for mapping: " + parameterMappings + ". Cause: " + e, e); } return result; } return invocation.proceed(); }
From source file:com.mook.locker.interceptor.OptimisticLocker.java
License:Apache License
private boolean hasVersionLocker(MappedStatement ms, BoundSql boundSql) { Map<String, Class<?>> mapperMap = new HashMap<String, Class<?>>(); Collection<Class<?>> mappers = ms.getConfiguration().getMapperRegistry().getMappers(); if (null != mappers && !mappers.isEmpty()) { for (Class<?> me : mappers) { mapperMap.put(me.getName(), me); }/*from w ww .j a va 2 s . c o m*/ } Class<?>[] paramCls = null; Object paramObj = boundSql.getParameterObject(); 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(); } } } String id = ms.getId(); int pos = id.lastIndexOf("."); String nameSpace = id.substring(0, pos); if (mapperMap.containsKey(nameSpace)) { Class<?> mapper = mapperMap.get(nameSpace); Method m = null; try { if (null == paramCls && paramObj instanceof Map) { paramCls = new Class<?>[] { Map.class }; } else { paramCls = new Class<?>[] { paramObj.getClass() }; } m = mapper.getDeclaredMethod(id.substring(pos + 1), paramCls); } catch (NoSuchMethodException | SecurityException e) { throw new RuntimeException("Map?"); } VersionLocker vl = m.getAnnotation(VersionLocker.class); if (null != vl && vl.value() == false) { return true; } else { return false; } } else { throw new RuntimeException("?"); } }
From source file:com.mybatisX.plugins.PaginationInterceptor.java
License:Apache License
/** * ?/* ww w . jav a 2s . c o m*/ * * @param sql * @param connection * @param mappedStatement * @param boundSql * @param page */ public Pagination count(String sql, Connection connection, MappedStatement mappedStatement, BoundSql boundSql, Pagination page) { PreparedStatement pstmt = null; ResultSet rs = null; try { pstmt = connection.prepareStatement(sql); BoundSql countBS = new BoundSql(mappedStatement.getConfiguration(), sql, boundSql.getParameterMappings(), boundSql.getParameterObject()); ParameterHandler parameterHandler = new DefaultParameterHandler(mappedStatement, boundSql.getParameterObject(), countBS); parameterHandler.setParameters(pstmt); rs = pstmt.executeQuery(); int total = 0; if (rs.next()) { total = rs.getInt(1); } page.setTotal(total); /* * */ if (overflowCurrent && (page.getCurrent() > page.getPages())) { page = new Pagination(1, page.getSize()); page.setTotal(total); } } catch (Exception e) { // ignored } finally { IOUtils.closeQuietly(pstmt, rs); } return page; }
From source file:com.saituo.talk.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//from www. j a va 2 s .co m // // 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(); // ?? 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.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(); //??//ww w . j av a2s . c om 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
/** * ?// w ww .j ava 2s. c o m * * @param sql * @param connection * @param mappedStatement * @param boundSql * @param page */ public Pagination count(String sql, Connection connection, MappedStatement mappedStatement, BoundSql boundSql, Pagination page) { String sqlUse = sql; int order_by = sql.toUpperCase().lastIndexOf("ORDER BY"); if (order_by > -1) { sqlUse = sql.substring(0, order_by); } StringBuffer countSql = new StringBuffer("SELECT COUNT(1) AS TOTAL FROM ("); countSql.append(sqlUse).append(") A"); PreparedStatement pstmt = null; ResultSet rs = null; try { pstmt = connection.prepareStatement(countSql.toString()); BoundSql countBS = new BoundSql(mappedStatement.getConfiguration(), countSql.toString(), boundSql.getParameterMappings(), boundSql.getParameterObject()); ParameterHandler parameterHandler = new DefaultParameterHandler(mappedStatement, boundSql.getParameterObject(), countBS); parameterHandler.setParameters(pstmt); rs = pstmt.executeQuery(); int total = 0; if (rs.next()) { total = rs.getInt(1); } page.setTotal(total); /** * ?? */ if (page.getCurrent() > page.getPages()) { page = new Pagination(1, page.getSize()); page.setTotal(total); } } catch (SQLException e) { e.printStackTrace(); } finally { try { rs.close(); pstmt.close(); } catch (SQLException e) { e.printStackTrace(); } } return page; }