在 scala slick 中使用 where 进行内部连接查询

Ineer Join query with where in scala slick

我有两个table地址,UserAddressMapping 在地址 table Adrressid 中​​,地址在那里,在第三个 table 中我映射了这个用户 ID 和地址 ID

在sql

Select a.Addressid,a.AddressNmae 
from address table a 
inner join UserAdrressmaping b on a.Adessressid=b.Adreesid 
where userid=1

如何用 Scala slick 写这个东西 这就是我所做的

   def innerJoin1(UserId:Int): Future[Seq[UserRegister]]  =  {
 val join=address.join(addressid).on(_.Userid === _.UserId)

    dbConfig.run(join.result )
  }

对于内部联接,您可以使用 slick applicative-join 和 filter 子句。 例如:

val query = for {
  (address, userAddressMapping) <- Address join UserAddressMapping on (_.id === _.addressId)
  if userAddressMapping.userId === 1
} yield (address.id, address.name)

dbConfig.run(query.result)

只是对上一个的补充。如果你碰巧有 BigDecimal for Id,别忘了投它:

if p.userId === BigDecimal.valueOf(42)