使用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;
    }

 

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