jdbcTemplate.update(String sql)表现得很奇怪

时间:2017-02-03 09:49:23

标签: java spring spring-jdbc jdbctemplate

试图理解行为奇怪的jdbcTemplate.update(String sql)。

我有一种方法:

public int insertStartSyncDate() {
    String sql = "INSERT INTO iwpro_imp."+jobStatusTable+" (job_name,status,start_time,comment) VALUES ('sswltimport', 'running', NOW(), 'Just started.')";
    int resultsReturned = 0;
    try{
        resultsReturned = jdbcTemplate.update(sql);
    }catch(Exception e){
        e.printStackTrace();
    }
    return resultsReturned;
}

我的表结构是:

mysql> desc import_job_status;
+------------+------------------------------------+------+-----+-------------------+----------------+
| Field      | Type                               | Null | Key | Default           | Extra          |
+------------+------------------------------------+------+-----+-------------------+----------------+
| job_id     | bigint(20) unsigned                | NO   | PRI | NULL              | auto_increment |
| job_name   | varchar(20)                        | NO   | MUL | NULL              |                |
| status     | enum('running','success','failed') | NO   | MUL | running           |                |
| start_time | timestamp                          | NO   | MUL | CURRENT_TIMESTAMP |                |
| end_time   | timestamp                          | YES  | MUL | NULL              |                |
| comment    | text                               | YES  |     | NULL              |                |
+------------+------------------------------------+------+-----+-------------------+----------------+
6 rows in set (0.00 sec)

现在的问题是: 执行此方法后,数据不会进入DB表。我试图调试,指针显示resultsReturned的值为1,这意味着执行查询。我现在不明白这里有什么问题。

debug pointer showing resultsReturned value as 1

我现在该怎么办?我尝试手动运行sql查询,当我手动运行它时它很好,但它没有从" jdbcTemplate.update(sql)"执行。方法

1 个答案:

答案 0 :(得分:0)

感谢Nilesh和Maciej Kowalski的暗示。 我的自动提交实际上已经关闭了。添加@Transactional注释对我有用。

@Transactional(value="transactionManager_iwpro_imp", rollbackFor = Exception.class)
    public int insertStartSyncDate() {
 // ......
}