| | |
| | | |
| | | static int MAPPED_STATEMENT_INDEX = 0; |
| | | static int PARAMETER_INDEX = 1; |
| | | static int ROWBOUNDS_INDEX = 2; |
| | | static int RESULT_HANDLER_INDEX = 3; |
| | | static String BASE_FIELD_SET_PRIMARY_KEY_FUNTION_NAME = "setId"; |
| | | static String BASE_FIELD_SET_CREATE_TIME_FUNTION_NAME = "setCreateDt"; |
| | | static String BASE_FIELD_SET_UPDATE_TIME_FUNTION_NAME = "setUpdateDt"; |
| | | static String BASE_FIELD_SET_DELETE_FUNTION_NAME = "setDelete"; |
| | | |
| | | public AutoGenerateIdInterceptor() { |
| | | //System.out.println("auto generate primaryKey mybatis plugin start!!!"); |
| | | } |
| | | |
| | | @SuppressWarnings("static-access") |
| | | /** |
| | | * 拦截逻辑实现 |
| | | * @param invocation 代理 |
| | | * @return Object |
| | | * @throws Throwable 异常 |
| | | */ |
| | | public Object intercept(Invocation invocation) throws Throwable { |
| | | MappedStatement mappedStatement = (MappedStatement) invocation.getArgs()[MAPPED_STATEMENT_INDEX]; |
| | | SqlCommandType commandType = mappedStatement.getSqlCommandType(); |
| | | if (commandType.INSERT.equals(SqlCommandType.INSERT)) { |
| | | if (commandType.equals(SqlCommandType.INSERT)) { |
| | | Object entity = invocation.getArgs()[PARAMETER_INDEX]; |
| | | if (entity instanceof BaseEntity) { |
| | | Class<? extends Object> entityClass = entity.getClass(); |
| | | //Class<? extends Object> entityClass = entity.getClass(); |
| | | Class<?> entityClass = entity.getClass(); |
| | | Method setMt = entityClass.getMethod(BASE_FIELD_SET_PRIMARY_KEY_FUNTION_NAME, Long.class) ; |
| | | if(setMt != null){ |
| | | setMt.invoke(entity, new IDLongGenerator().generate()); |
| | | } |
| | | setMt.invoke(entity, new IDLongGenerator().generate()); |
| | | invocation.getArgs()[PARAMETER_INDEX] = entity; |
| | | } |
| | | } |