- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我以前从来没有遇到过这样的问题,谷歌没有帮助。
我使用 Spring Framework,JdbcDaoSupport
,getJdbcTemplate().update()
方法。我有一个带有 2 个可选参数的动态查询。
不知道动态对象的正确输入方式。这是我尝试的方式:
StringBuilder sbUserRegQuery = new StringBuilder();
sbUserRegQuery.append("INSERT INTO users (username, password , email, enabled, datetime_condo_changed, datetime_last_login");
if(user.getCondo_id()!=null) sbUserRegQuery.append(", condo_id");
if(user.getProvider()!=null) sbUserRegQuery.append(", provider");
sbUserRegQuery.append(")");
sbUserRegQuery.append(" VALUES ( ?, ?, ? , ? , ?, ?");
if(user.getCondo_id()!=null) sbUserRegQuery.append(", ?");
if(user.getProvider()!=null) sbUserRegQuery.append(", ?"); //default - "local"
sbUserRegQuery.append(");");
Object regObject = new Object[]{
user.getUsername(), PasswordEncoderGenerator.main(user.getPassword()), user.getEmail(), enabled, user.getDatetime_condo_changed(), currentTimeStamp, user.getCondo_id()
};
int row = getJdbcTemplate().update(sbUserRegQuery.toString(), regObject, user.getCondo_id(), user.getProvider());
即我试图在 regObject
之后插入动态对象。但是,在这种情况下,动态对象的顺序可以改变,查询失败..
如何破案?
最佳答案
您几乎可以通过在创建 SQL 时使用条件检查来做到这一点,但是您不会对传递到 update() 方法的变量参数执行此操作。
StringBuilder sbUserRegQuery = new StringBuilder();
sbUserRegQuery.append("INSERT INTO users (username, password , email, enabled, datetime_condo_changed, datetime_last_login");
if(user.getCondo_id()!=null) sbUserRegQuery.append(", condo_id");
if(user.getProvider()!=null) sbUserRegQuery.append(", provider");
sbUserRegQuery.append(")");
sbUserRegQuery.append(" VALUES ( ?, ?, ? , ? , ?, ?");
if(user.getCondo_id()!=null) sbUserRegQuery.append(", ?");
if(user.getProvider()!=null) sbUserRegQuery.append(", ?");
sbUserRegQuery.append(");");
ArrayList<Object> params = new ArrayList<Object>();
params.add(user.getUsername());
params.add(PasswordEncoderGenerator.main(user.getPassword()));
params.add(user.getEmail());
params.add(enabled);
params.add(user.getDatetime_condo_changed());
params.add(currentTimeStamp);
if(user.getCondo_id()!=null) params.add(user.getCondo_id());
if(user.getProvider()!=null) params.add(user.getProvider());
int row = getJdbcTemplate().update(sbUserRegQuery.toString(), params.toArray());
关于java - Spring getJdbcTemplate().update 插入动态对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38864524/
我的场景如下: 我在 SampleDao 接口(interface)中没有 setter 方法,在 SampleDaoImpl 类中没有直接字段 引用:How to mock getJdbcTempl
我以前从来没有遇到过这样的问题,谷歌没有帮助。 我使用 Spring Framework,JdbcDaoSupport,getJdbcTemplate().update() 方法。我有一个带有 2 个
String lastName = this.jdbcTemplate.queryForObject("select last_name from t_actor where id = ?", new
我正在使用 spring 与 postgresql 交互。这是我的问题。 人具有三个属性: 名称(字符串) 爱好(字符串[]) 性别( boolean 值) 如果我尝试使用下面的方法从数据库中获取人员
在我的应用程序中,我们试图从 Spring 获取 java.sql.Connection, 连接 conn = DataSourceUtils.getConnection(this.getJdbcTe
我正在移动一个应用程序以使用 Spring3 框架,并且我有从 Oracle 数据库读取 BLOB 列的代码: 这个有效: String fileSqlStr =
我有与此类似的查询: sql: select count("A"),"B","C" from schema."xxx" where "TIME"=? AND "C"='mmn' group by "
我是一名优秀的程序员,十分优秀!