使用spring boot 開發問題彙總記錄


1、jdbcTemplate 

使用 jdbcTemplate 構造SQL語句。其中 "?"不可以作爲表名的佔位符。
解決方法:動態生成SQL Map;根據參數找到對應預先生成表名的SQL語句。

public static Map<String, String> getSqlSentence() {
        Map<String, String> sqlMap = new HashMap<>();
        String tableFirstName = "tab_sj_pkg_";
        for (int i = 1; i < 100; i++) {
            String j = String.format("%02d", i);
            String tableName = tableFirstName + j;
            String sql = "SELECT * FROM " + tableName + " WHERE UTCTime > ? AND UTCTime < ?";
            sqlMap.put(j, sql);
        }
        return sqlMap;
    }

2、idea 導入的 mybatis 包不存在:

  不僅僅是mybatis,其他包也存在導入後找不到的問題。可能的原因有:包之間的版本依賴問題、idea內置的maven版本兼容、本地倉庫緩存問題、個人感覺,網絡導致maven下載的包不完整的可能性更大。

嘗試過的方案有:更新pom文件、清除idea緩存(File->invalidate caches)、委託IDE構建(File->Settings->Build->Build tools->Runner->Delegate IDE build),這種方式確實有用,但每次啓動需要重新下載,非常緩慢。

最終使用, 在控制檯輸入: mvn idea:idea, 再清除idea緩存,解決包導入報錯問題。

3、mybatis 與 jdbcTemplate 同時存在問題

mybatis 與 jdbcTemplate 在spring容器中可以同時存在。使用相同的 DataSource 連接池,並共用spring 提供的事務管理器。

    @Bean
    @Qualifier("operation")
    @ConfigurationProperties(prefix = "spring.datasource.operation")
    public DataSource createDataSource() {
        return new HikariDataSource();
    }

    @Bean
    @Primary
    @Qualifier("operationJdbcTemplate")
    @Order(10)
    public JdbcTemplate createJdbcTemplate(@Autowired @Qualifier("operation") DataSource dataSource) {
        return new JdbcTemplate(dataSource);
    }

    @Bean
    @Primary
    @Qualifier("operationTransactionManager")
    PlatformTransactionManager createTxManager(@Autowired @Qualifier("operation") DataSource dataSource) {
        return new DataSourceTransactionManager(dataSource);
    }

    /* mybatis */
    @Bean
    SqlSessionFactoryBean createSqlSessionFactoryBean(@Autowired @Qualifier("operation") DataSource dataSource) {
        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
        sqlSessionFactoryBean.setDataSource(dataSource);
        return sqlSessionFactoryBean;
    }

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章