diff --git a/.gitignore b/.gitignore index a6401b1..fb5fc05 100644 --- a/.gitignore +++ b/.gitignore @@ -32,3 +32,4 @@ build/ ### VS Code ### .vscode/ /hs_err_pid**.log +/truffle.log diff --git a/src/main/java/quant/rich/emoney/mapper/postgre/StockStrategyMapper.java b/src/main/java/quant/rich/emoney/mapper/postgre/StockStrategyMapper.java new file mode 100644 index 0000000..b1a7ce4 --- /dev/null +++ b/src/main/java/quant/rich/emoney/mapper/postgre/StockStrategyMapper.java @@ -0,0 +1,17 @@ +package quant.rich.emoney.mapper.postgre; + +import org.apache.ibatis.annotations.Mapper; +import org.springframework.stereotype.Component; + +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +import quant.rich.emoney.entity.postgre.EmoneyIndex; +import quant.rich.emoney.entity.postgre.StockStrategy; + +@Component +@Mapper +@DS("postgre") +public interface StockStrategyMapper extends BaseMapper { + +} diff --git a/src/main/java/quant/rich/emoney/service/postgre/PostgreServiceImpl.java b/src/main/java/quant/rich/emoney/service/postgre/PostgreServiceImpl.java new file mode 100644 index 0000000..20cc19f --- /dev/null +++ b/src/main/java/quant/rich/emoney/service/postgre/PostgreServiceImpl.java @@ -0,0 +1,90 @@ +package quant.rich.emoney.service.postgre; + +import java.util.Collection; + +import org.springframework.transaction.annotation.Transactional; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +import quant.rich.emoney.config.PostgreMybatisConfig; + +/** + * 使用 PostgreSQL 存储数据的 ServiceImpl,重写了部分使用 Transactional 的方法 + */ +public abstract class PostgreServiceImpl, T> extends ServiceImpl { + + @Transactional(transactionManager = PostgreMybatisConfig.POSTGRE_TRANSACTION_MANAGER, rollbackFor = Exception.class) + @Override + public boolean saveBatch(Collection entityList) { + return super.saveBatch(entityList); + } + + @Transactional(transactionManager = PostgreMybatisConfig.POSTGRE_TRANSACTION_MANAGER, rollbackFor = Exception.class) + @Override + public boolean saveBatch(Collection entityList, int batchSize) { + return super.saveBatch(entityList, batchSize); + } + + @Override + @Transactional(transactionManager = PostgreMybatisConfig.POSTGRE_TRANSACTION_MANAGER, rollbackFor = Exception.class) + public boolean saveOrUpdateBatch(Collection entityList) { + return super.saveOrUpdateBatch(entityList); + } + + @Transactional(transactionManager = PostgreMybatisConfig.POSTGRE_TRANSACTION_MANAGER, rollbackFor = Exception.class) + @Override + public boolean saveOrUpdateBatch(Collection entityList, int batchSize) { + return super.saveOrUpdateBatch(entityList, batchSize); + } + + @Transactional(transactionManager = PostgreMybatisConfig.POSTGRE_TRANSACTION_MANAGER,rollbackFor = Exception.class) + @Override + public boolean updateBatchById(Collection entityList, int batchSize) { + return super.updateBatchById(entityList, batchSize); + } + + @Override + @Transactional(transactionManager = PostgreMybatisConfig.POSTGRE_TRANSACTION_MANAGER,rollbackFor = Exception.class) + public boolean removeByIds(Collection list) { + return super.removeByIds(list); + } + + @Override + @Transactional(transactionManager = PostgreMybatisConfig.POSTGRE_TRANSACTION_MANAGER,rollbackFor = Exception.class) + public boolean removeByIds(Collection list, boolean useFill) { + return super.removeByIds(list, useFill); + } + + @Override + @Transactional(transactionManager = PostgreMybatisConfig.POSTGRE_TRANSACTION_MANAGER,rollbackFor = Exception.class) + public boolean removeBatchByIds(Collection list) { + return super.removeBatchByIds(list, DEFAULT_BATCH_SIZE); + } + + @Override + @Transactional(transactionManager = PostgreMybatisConfig.POSTGRE_TRANSACTION_MANAGER,rollbackFor = Exception.class) + public boolean removeBatchByIds(Collection list, int batchSize) { + return super.removeBatchByIds(list, batchSize); + } + + @Override + @Transactional(transactionManager = PostgreMybatisConfig.POSTGRE_TRANSACTION_MANAGER,rollbackFor = Exception.class) + public boolean removeBatchByIds(Collection list, int batchSize, boolean useFill) { + return super.removeBatchByIds(list, batchSize, useFill); + } + + @Override + @Transactional(transactionManager = PostgreMybatisConfig.POSTGRE_TRANSACTION_MANAGER,rollbackFor = Exception.class) + public boolean removeBatchByIds(Collection list, boolean useFill) { + return super.removeBatchByIds(list, useFill); + } + + @Override + @Transactional(transactionManager = PostgreMybatisConfig.POSTGRE_TRANSACTION_MANAGER,rollbackFor = Exception.class) + public boolean updateBatchById(Collection entityList) { + return super.updateBatchById(entityList); + } + + +} diff --git a/src/main/java/quant/rich/emoney/service/postgre/StockStrategyService.java b/src/main/java/quant/rich/emoney/service/postgre/StockStrategyService.java new file mode 100644 index 0000000..2ac79e1 --- /dev/null +++ b/src/main/java/quant/rich/emoney/service/postgre/StockStrategyService.java @@ -0,0 +1,15 @@ +package quant.rich.emoney.service.postgre; + +import org.springframework.stereotype.Service; +import com.baomidou.dynamic.datasource.annotation.DS; + +import quant.rich.emoney.entity.postgre.StockStrategy; +import quant.rich.emoney.mapper.postgre.StockStrategyMapper; + +@DS("postgre") +@Service +public class StockStrategyService extends PostgreServiceImpl { + + + +} diff --git a/src/main/resources/only-one-default-true-in-sqlite3-datatable-trigger.md b/src/main/resources/only-one-default-true-in-sqlite3-datatable-trigger.md new file mode 100644 index 0000000..87ff934 --- /dev/null +++ b/src/main/resources/only-one-default-true-in-sqlite3-datatable-trigger.md @@ -0,0 +1,2 @@ +## 使用触发器在 SQLite3 数据表内实现唯一的默认配置 + diff --git a/src/test/resources/application-local.yml b/src/test/resources/application-local.yml new file mode 100644 index 0000000..13553e9 --- /dev/null +++ b/src/test/resources/application-local.yml @@ -0,0 +1,20 @@ +spring: + datasource: + url: jdbc:postgresql://localhost:5432/verich + username: postgres + password: 123456 + driver-class-name: org.postgresql.Driver + type: com.zaxxer.hikari.HikariDataSource + hikari: + minimum-idle: 5 + connection-test-query: SELECT 1 + maximum-pool-size: 2000 + auto-commit: true + idle-timeout: 30000 + pool-name: SpringBootDemoHikariCP + max-lifetime: 60000 + connection-timeout: 30000 + sql: + init: + mode: always + continue-on-error: true \ No newline at end of file diff --git a/src/test/resources/application-remote.yml b/src/test/resources/application-remote.yml new file mode 100644 index 0000000..aa16fff --- /dev/null +++ b/src/test/resources/application-remote.yml @@ -0,0 +1,29 @@ +spring: + cache.type: simple + datasource: + postgre: + jdbc-url: jdbc:postgresql://localhost:5432/verich + username: postgres + password: 123456 + driver-class-name: org.postgresql.Driver + type: com.zaxxer.hikari.HikariDataSource + mapper-locations: classpath*:mapper/postgre/*.xml + type-aliases-package: quant.rich.emoney.entity.postgre + hikari: + minimum-idle: 5 + connection-test-query: SELECT 1 + maximum-pool-size: 2000 + auto-commit: true + idle-timeout: 30000 + pool-name: SpringBootDemoHikariCP + max-lifetime: 60000 + connection-timeout: 30000 + sqlite: + jdbc-url: jdbc:sqlite:E:/eclipse-workspace/emo-grab/src/main/resources/database.db + driver-class-name: org.sqlite.JDBC + mapper-locations: classpath*:mapper/sqlite/*.xml + type-aliases-package: quant.rich.emoney.entity.sqlite + sql: + init: + mode: always + continue-on-error: true