シャーディング-jdbc入力:データソース名がありません: 'm0'

例外の説明:

### 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 "批量新增成功";
	}

 

おすすめ

転載: blog.csdn.net/zhouzhiwengang/article/details/112380808