在 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)
我有两个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)