我似乎无法找到任何有关Grails Multitenancy with Multiple Databases(每个租户一个)的更新资源/指南,插件或示例.我目前坚持使用https://grails.org/plugin/multi-tenant-single-db和过时的https://grails.org/plugin/multi-tenant-core.
如何执行依赖于登录用户的数据库切换?
鉴于这些功能要求:
用户管理
*用户可以选择通过OpenID登录.
物业管理
通常,我会在Java中实现这些:
interface User {}
class Librarian implements User {}
class Administrator implements User {}
class Borrower implements User {}
class OpenID {} //all Users HAS AN OpenID attribute (NULL if non-openId login)
interface Property{}
class Book implements Property{}
class Memorandum implements Property{}
class Circular implements Property{}
class License implements Property{}
Run Code Online (Sandbox Code Playgroud)
但我们的项目将使用Groovy和Grails,我还没有使用过.我的问题是,如何根据上述要求设计域类?我不能使用接口,似乎继承不是一个好习惯.我的想法是使用组合,尽管我对将要生成的数据库表感到困扰.在这种情况下,最佳做法是什么?
在JDBCTemplate中,我正在调用
public <T> List<T> query(String sql, Object[] args, RowMapper<T> rowMapper) throws DataAccessException {
return query(sql, args, new RowMapperResultSetExtractor<T>(rowMapper));
}
Run Code Online (Sandbox Code Playgroud)
同
getJdbcTemplate().query(usersByUsernameQuery, new String[] {username}, new RowMapper<UserDetails>()
Run Code Online (Sandbox Code Playgroud)
我的问题是我只能访问usersByUsernameQuery参数,我想在其中使用'username'变量两次.例如:
usersByUsernameQuery = "Select * from ... ... where someColumn=? or anotherColumn=?"
Run Code Online (Sandbox Code Playgroud)
由于我只传递一个带有一个元素(用户名)的字符串数组,我应该如何构建我的查询?