数据源配置:
<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
报错信息:

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
不支持SELECT LAST_INSERT_ID()
使用分表库分表后也不建议在使用MySQL原生的自增主键,这样做不到分布式主键不冲突
######没有参与分表的也无法使用主键返回吗?除了订单表和订单详情是分表的。其他表不分表,需要返回id做关联,怎么处理?######明白,感谢亮哥解答######同问default-data-source无效。