SpringData JPA自定义SQL时,将表名以参数的形式传入解决方案

4 篇文章 0 订阅

最近有个需要就是分表的操作,就是事先不知道数据存在的表到底是那张表,需要根据配置文件或者参数解析之后才能确定到底是那张表。所以这就需要将表名实时的传入进入。要是之前的我们所使用的mybatis的话,其实这个问题很好解决,只需要将#换成$即可,但是由于我们现在用的是JPA,所以这个并不能直接操作。所以这块需要引入EntityManager类,具体操作如下:
在repository包或者dao包下的实现类中注入EntityManager,并加上@PersistenceContext注解(注入的是实体管理器,执行持久化操作),然后只需要在方法中编写sql语句,以字符串拼接的方式编写即可,如下

 String sql = "select _mid from " + userMessageTable + " where  _uid='" + uid + "' LIMIT 1";
 Object mid = entityManager.createNativeQuery(sql).getSingleResult();

userMessageTable 便是传递的表名,这样便实现了表名以传递的方式执行的sql

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Calvin_it

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值