String[] citys = {"北京","上海","成都","石家庄","太原","广州","海口"}; for (int i = 0; i < 10; i++) { Order order = new Order(); order.setOrderId(Long.valueOf(i+"")); order.setUserId((i % 2) + 1L); order.setOrderPrice(new BigDecimal("1")); order.setCity(citys[i % citys.length]); order.setOrderTime(LocalDateTime.now()); orderMapper.insert(order); } }
order 和user 分散到不同的表中;
执行一个关联查询;
1 2 3
@Select(value = "select * from t_order `order` left join t_user `user` on `order`.user_id = `user`.user_id where `order`.user_id =#{userId}") List<Map<Object,Object>> queryOrderAndUserInfoByOrderId(@Param(value = "userId") Long userId);
使用order 上的user_id 来执行查询order 和管理的user的信息;
最终能够查到对应的结果;但是会发现会发生2条sql;
1 2 3 4 5
INFO 7200 --- [ main] ShardingSphere-SQL : Logic SQL: select * from t_order `order` left join t_user `user` on `order`.user_id = `user`.user_id where `order`.user_id =? INFO 7200 --- [ main] ShardingSphere-SQL : SQLStatement: MySQLSelectStatement(limit=Optional.empty, lock=Optional.empty, window=Optional.empty) INFO 7200 --- [ main] ShardingSphere-SQL : Actual SQL: dbsource-0 ::: select * from t_order_0 `order` left join t_user_0 `user` on `order`.user_id = `user`.user_id where `order`.user_id =? ::: [2] INFO 7200 --- [ main] ShardingSphere-SQL : Actual SQL: dbsource-0 ::: select * from t_order_0 `order` left join t_user_1 `user` on `order`.user_id = `user`.user_id where `order`.user_id =? ::: [2]