SpringBoot+Sharding-JDBC实现分表,打印sql正常但是没有数据展示

原因:

       1、pom中驱动版本与mysql版本不对照,mysql用的8.0.16版本,应该对应mysql-connector-java 8.0以上版本,创建连接池时的驱动也需要用带cj的。如下:

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.15</version>
        </dependency>
/**
     * 创建连接池
     *
     * @param jdbcUrl jdbc连接
     * @return 数据源
     */
    private DataSource createDataSource(final String jdbcUrl) {
        BasicDataSource result = new BasicDataSource();
        result.setDriverClassName(com.mysql.cj.jdbc.Driver.class.getName());
        result.setUrl(jdbcUrl);
        result.setUsername(username);
        result.setPassword(password);
        return result;
    }

     2、检查sharding-JDBC的驱动包,要用2.0以上的驱动包

        <dependency>
            <groupId>io.shardingjdbc</groupId>
            <artifactId>sharding-jdbc-core</artifactId>
            <version>2.0.3</version>
        </dependency>

3、jdbcUrl后必须指定编码格式

// 获取数据源
private Map<String, DataSource> createDataSourceMap() {
        Map<String, DataSource> result = new HashMap<>();
        result.put("db_202110", createDataSource("jdbc:mysql://localhost:3306/db_202110?characterEncoding=utf-8&useSSL=false&serverTimezone=UTC"));
        result.put("db_202111", createDataSource("jdbc:mysql://localhost:3306/db_202111?characterEncoding=utf-8&useSSL=false&serverTimezone=UTC"));
        return result;
    }

4、检查实体类属性是否与表字段对应,如不对应,需要用别名

    @Select("select t.order_no as orderNo,t.sys_time as sysTime from t_order t where t.sys_time=#{sysTime}")
    List<Order> findAll(@Param("sysTime") String sysTime);

表结构:

实体类:

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值