[英]Spring insert using jdbc
我在SQLYog中有一张表,其中一列是varchar限制为200个长度。 我在下面为插入编写了方法,但是在测试代码时,数据库中的数据未填充“名称”列。
@Override
public void insert(final List<InfoRow> rows) {
String sql = "INSERT INTO info_table (ID, NAME, AGE) VALUES (?, SUBSTRING(?, 0, 200), ?)";
jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {
@Override
public void setValues(PreparedStatement ps, int i)
throws SQLException {
InfoRow row= rows.get(i);
ps.setInt(1, (int) row.getId());
ps.setString(2, row.getName());
ps.setInt(3,(int) row.getAge());
}
@Override
public int getBatchSize() {
return rows.size();
}
});
}
插入时验证“名称”大小的正确方法是什么?
谢谢!
MySQL中的子字符串表达式(这是基于sqlyog标记的猜测)基于1,而不是基于0。 尝试以下方法:
SUBSTRING(?, 1, 200)
通常,我会将验证逻辑置于数据库层之外,并在应用程序层中处理“错误输入”。 这使我可以记录数据将被删除/截断的事实。
但是这种方法很好。
验证输入的正确方法是在服务层中,而不是您在此处描述的模型层中。 DAO应该仅负责持久性数据的验证。
您应该有一个调用insert(List<InfoRow>);
方法,并且必须进行验证。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.