在 lagom 框架中准备语句和绑定?
Prepared Statement and Bind in lagom framework?
Q1。什么是准备好的陈述?
例如:
var userStatmt: PreparedStatement = _
for {
insert <- cassandraSession.prepare(
"INSERT INTO usertable(id, name) VALUES(?, ?)")
} yield {
userStatmt = insert
Done
}
prepared statement是不是表示存储的话因为下面如果不存储下面的name
怎么会知道
"SELECT * FROM usertable WHERE name = '$name'"
Q2。如果是这样,为什么使用绑定?
例如:
val userBindStatement: BoundStatement = userStatmt.bind()
userBindStatement.setString("id", user.id)
userBindStatement.setString("name", user.name)
你能解释一下吗,我刚开始使用 lagom 并在 Lagom Readside 中找到了这个,我也是微服务的新手,而且关于这个主题的资源有限。
准备好的语句是一种优化,这意味着语句不需要在每次执行时发送到服务器并进行解析。为了让它起作用,语句的任何动态部分(即参数)都被替换为占位符(即?),然后在执行语句时需要将其绑定到实际值。
顺便说一句,这不是 Lagom 特有的,它是 Cassandra 特有的(即便如此,许多数据库,尤其是关系数据库中也使用相同的概念)。您可以在此处阅读有关它的更多信息,因为它适用于 Cassandra:
https://docs.datastax.com/en/developer/java-driver/3.0/manual/statements/prepared/
这里描述了准备语句的一般概念:
Q1。什么是准备好的陈述?
例如:
var userStatmt: PreparedStatement = _
for {
insert <- cassandraSession.prepare(
"INSERT INTO usertable(id, name) VALUES(?, ?)")
} yield {
userStatmt = insert
Done
}
prepared statement是不是表示存储的话因为下面如果不存储下面的name
怎么会知道
"SELECT * FROM usertable WHERE name = '$name'"
Q2。如果是这样,为什么使用绑定?
例如:
val userBindStatement: BoundStatement = userStatmt.bind()
userBindStatement.setString("id", user.id)
userBindStatement.setString("name", user.name)
你能解释一下吗,我刚开始使用 lagom 并在 Lagom Readside 中找到了这个,我也是微服务的新手,而且关于这个主题的资源有限。
准备好的语句是一种优化,这意味着语句不需要在每次执行时发送到服务器并进行解析。为了让它起作用,语句的任何动态部分(即参数)都被替换为占位符(即?),然后在执行语句时需要将其绑定到实际值。
顺便说一句,这不是 Lagom 特有的,它是 Cassandra 特有的(即便如此,许多数据库,尤其是关系数据库中也使用相同的概念)。您可以在此处阅读有关它的更多信息,因为它适用于 Cassandra:
https://docs.datastax.com/en/developer/java-driver/3.0/manual/statements/prepared/
这里描述了准备语句的一般概念: