繁体   English   中英

使用JDBC的Spring插入

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM