Mybatis跨库查询问题

发布于 2022-09-05 09:56:04 字数 525 浏览 14 评论 0

Mybatis如何实现跨库查询,比如需求是将wxt_demo库中的user表和wxt_xot库中的result表以uid作为条件做联合查询,sql如下:

<select id="selectData" parameterType="string" resultMap="exportModel">
  SELECT b.`name`,a.answer_data,a.test_score from result a LEFT JOIN wxt_demo.`user`  b on a.student_id=b.id
  where paper_id=#{paperId,jdbcType=CHAR}
 </select>
 

但是发现,这个sql在mysql客户端能够正常运行,但是在mybatis中会将wxt_demo.user整体当成一个表名,产生MySQLSyntaxErrorException: Table 'com_wxt_demo.user' doesn't exist异常信息,希望感兴趣的大牛给予指点。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

删除会话 2022-09-12 09:56:04

那是因为你在 mybatis 连接 mysql url 中已经指定了具体database 了吧.
所以你只需要修改 url 可以操作多个 db 就行了, 但是你这样做的话, 那所有的 sql 都需要增加database name.

MySQL URL Syntax

jdbc:mysql://[host1][:port1][,[host2][:port2]]...[/[database]] »
[?propertyName1=propertyValue1[&propertyName2=propertyValue2]...]

使用[]的部分都是可行项, 你只需要把 mysql url 中的 /database 去掉就可以使用 database.table 的方式操作多个数据库了.

PS: 可能你在 mysql 客户端中还使用了 use database_name 来切换 database 吧.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文