@Override public void run(String... args) throws Exception { if (sqlExecutor.tableExists("QRTZ_LOCKS")) { return; } DatabaseType databaseType = DataSourceHolder.currentDatabaseType(); String databaseTypeName = databaseType.name(); if (databaseType == DatabaseType.jtds_sqlserver) { databaseTypeName = DatabaseType.sqlserver.name(); } String file = "classpath*:/quartz/sql/quartz-" + databaseTypeName + "-create.sql"; Resource[] resources = new PathMatchingResourcePatternResolver().getResources(file); for (Resource resource : resources) { try (Reader reader = new InputStreamReader(resource.getInputStream())) { String str = FileUtils.reader2String(reader); List<String> sqlList = Sqls.parse(str); for (String sql : sqlList) { if (StringUtils.isEmpty(sql)) return; sqlExecutor.exec(sql); } } } } }
public SqlExecuteResult doExecute(SqlInfo sqlInfo) { SqlExecuteResult result = new SqlExecuteResult(); Object executeResult = null; try { switch (sqlInfo.getType().toUpperCase()) { case "SELECT": QueryResultWrapper wrapper = new QueryResultWrapper(); executor.list(sqlInfo.getSql(), wrapper); executeResult = wrapper.getResult(); break; case "INSERT": case "UPDATE": executeResult = executor.update(sqlInfo.getSql()); break; case "DELETE": executeResult = executor.delete(sqlInfo.getSql()); break; default: executor.exec(sqlInfo.getSql()); } result.setSuccess(true); } catch (SQLException e) { throw new SqlExecuteException(e.getMessage(), e, sqlInfo.getSql()); } result.setResult(executeResult); result.setSqlInfo(sqlInfo); return result; } }
default void exec(String sql, Object params) throws SQLException { exec(new SimpleSQL(sql, params)); }
default void exec(String sql) throws SQLException { exec(new SimpleSQL(sql)); }
default void exec(String sql) throws SQLException { exec(new SimpleSQL(sql)); }
default void exec(String sql, Object params) throws SQLException { exec(new SimpleSQL(sql, params)); }
@Override public <T> RDBTable<T> createTable(RDBTableMetaData tableMetaData) throws SQLException { SqlRender render = metaData.getRenderer(SqlRender.TYPE.META_CREATE); SQL sql = render.render(tableMetaData, new Object()); sqlExecutor.exec(sql); metaData.putTable(tableMetaData); return getTable(tableMetaData.getName()); }
@Override public <T> RDBTable<T> createTable(RDBTableMetaData tableMetaData) throws SQLException { SqlRender render = metaData.getRenderer(SqlRender.TYPE.META_CREATE); SQL sql = render.render(tableMetaData, new Object()); sqlExecutor.exec(sql); metaData.putTable(tableMetaData); return getTable(tableMetaData.getName()); }
@Override public <T> RDBTable<T> alterTable(RDBTableMetaData tableMetaData) throws SQLException { SqlRender<Boolean> render = metaData.getRenderer(SqlRender.TYPE.META_ALTER); RDBTable old = getTable(tableMetaData.getName()); if (old == null) throw new NullPointerException("旧表不存在!"); int total = old.createQuery().total(); SQL sql = render.render(tableMetaData, total == 0); try { readWriteLock.writeLock().lock(); sqlExecutor.exec(sql); } finally { readWriteLock.writeLock().unlock(); } reloadTable(tableMetaData); return getTable(tableMetaData.getName()); }
@Override public <T> RDBTable<T> alterTable(RDBTableMetaData tableMetaData) throws SQLException { SqlRender<Boolean> render = metaData.getRenderer(SqlRender.TYPE.META_ALTER); RDBTable old = getTable(tableMetaData.getName()); if (old == null) throw new NullPointerException("旧表不存在!"); int total = old.createQuery().total(); SQL sql = render.render(tableMetaData, total == 0); try { readWriteLock.writeLock().lock(); sqlExecutor.exec(sql); } finally { readWriteLock.writeLock().unlock(); } reloadTable(tableMetaData); return getTable(tableMetaData.getName()); }
public SqlExecuteResult doExecute(SqlInfo sqlInfo) { SqlExecuteResult result = new SqlExecuteResult(); Object executeResult = null; try { switch (sqlInfo.getType().toUpperCase()) { case "SELECT": QueryResultWrapper wrapper = new QueryResultWrapper(); executor.list(sqlInfo.getSql(), wrapper); executeResult = wrapper.getResult(); break; case "INSERT": case "UPDATE": executeResult = executor.update(sqlInfo.getSql()); break; case "DELETE": executeResult = executor.delete(sqlInfo.getSql()); break; default: executor.exec(sqlInfo.getSql()); } result.setSuccess(true); } catch (SQLException e) { throw new SqlExecuteException(e.getMessage(), e, sqlInfo.getSql()); } result.setResult(executeResult); result.setSqlInfo(sqlInfo); return result; } }