この記事に書いたやり方でも動きますが、より演繹的な方法が有ったのでこちらもどうぞ。
wrongwrong163377.hatenablog.com
問題
SimpleJdbcInsertでInsert時に、DDLでNOT NULLとDEFAULTを設定したカラムについてMapSqlParameterSourceに値を指定しなかった場合、com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column '[カラム名]' cannot be nullと言われます。
原因
テーブルの内指定していないカラムに関する値は全てNULLで埋められてしまうため、「NULLをInsertしようとする→NULLは設定できないのでエラー」となります。
対策
以下のように、usingColumnsを使って使うカラム名を初期化時に指定することで、問題が発生しなくなります。
SimpleJdbcInsert jdbcInsert =
new SimpleJdbcInsert(jdbcTemplate)
.withTableName("[テーブル名]")
.usingColumns("[使うカラム名1], [使うカラム名2], [使うカラム名3], ...);