sharding-jdbc.1.5.0 配置default-data-source无效
数据源配置:
<bean id="dataSource" class="com.qbao.dling.dao.datasource.QbaoDataSource" ><!-- 读写分离配置 --> <property name="targetDataSources"> <map key-type="java.lang.String"> <entry value-ref="MASTER_TV_DATA_SOURCE" key="MASTER_TV_DATA_SOURCE"></entry> <entry value-ref="SLAVE_TV_DATA_SOURCE" key="SLAVE_TV_DATA_SOURCE"></entry> </map> </property> <property name="defaultTargetDataSource" ref="MASTER_TV_DATA_SOURCE" > </property> </bean> <rdb:strategy id="clockAlgorithm" sharding-columns="user_id" algorithm-class="com.qbao.dling.qbaolive.argorithm.SingleKeyModuloTableShardingAlgorithm" /> <rdb:data-source id="shardingDataSource" > <rdb:sharding-rule data-sources="dataSource" default-data-source="dataSource"> <rdb:table-rules> <rdb:table-rule logic-table="td_clock_log" actual-tables="td_clock_log_0${0..9}" table-strategy="clockAlgorithm" /> </rdb:table-rules> </rdb:sharding-rule> </rdb:data-source>
执行的SQL:
<insert id="add" parameterType="TvShieldInfo"> <selectKey resultType="long" order="AFTER" keyProperty="id"> SELECT LAST_INSERT_ID() AS id </selectKey> INSERT INTO td_broadcast_shield_info (user_id,shield_user_id,state,create_time,update_time) VALUES(#{userId},#{shieldUserId},#{state},now(),now()) </insert>
应该是SELECT LAST_INSERT_ID() AS id引起的问题。
jdk:1.7
报错信息:
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
同问default-data-source无效。
明白,感谢亮哥解答
没有参与分表的也无法使用主键返回吗?除了订单表和订单详情是分表的。其他表不分表,需要返回id做关联,怎么处理?
不支持SELECT LAST_INSERT_ID()
使用分表库分表后也不建议在使用MySQL原生的自增主键,这样做不到分布式主键不冲突