例外の説明:
### Error updating database. Cause: java.lang.IllegalStateException: Missing the data source name: 'm0'
### The error may exist in com/zzg/mapper/OrderMapper.java (best guess)
### The error may involve com.zzg.mapper.OrderMapper.insert-Inline
### The error occurred while setting parameters
### Cause: java.lang.IllegalStateException: no table route info] with root cause
java.lang.IllegalStateException: no table route info
例外の原因:
@RequestMapping(value = "/batchInsert", method = { RequestMethod.GET })
public Object batchInsert() {
for (int i = 0; i < 10; i++) {
Order order = new Order();
order.setPrice(new BigDecimal(Math.random()));
order.setUserId(new Random().nextLong());
order.setStatus("0");
orderService.save(order);
}
return "批量新增成功";
}
MyBatis-plusを使用してOrderエンティティの属性を追加すると、データソース名がありません: 'm0'というプロンプトが表示されます。原因はuserIdの属性値によるものです。ランダム関数によって生成されたLong値を使用して入力します。 、これはsharding-jdbcルーティングエンジンにつながります。分析を実行すると、計算値が自分で定義したデータベースルールで異常になり、存在しないデータソースが出力されます。
調整された挿入機能コード:
@RequestMapping(value = "/batchInsert", method = { RequestMethod.GET })
public Object batchInsert() {
for (int i = 0; i < 10; i++) {
Order order = new Order();
order.setPrice(new BigDecimal(Math.random()));
order.setUserId(Long.valueOf("" + i));
order.setStatus("0");
orderService.save(order);
}
return "批量新增成功";
}