0

JdbcTemplate を使用しています。私がしたいのは、データベースにレコードを挿入することですが、テーブルの主キーは自動インクリメントに設定されているため、値を挿入する必要はありません.挿入が完了したら、どうすればIDを取得できますか?. これを行う簡単な方法はありますか、それとも別のクエリを実行して選択する必要がありますか?

Jdbc挿入の例

ここでは、citizenId が自動生成されます

 public void saveCitizen(Citizens citizen) {
 logger.debug("In saveCitizens");       

int count = getJdbcTemplate().update("INSERT INTO crimetrack.tblcitizens (citizenId,fName,lName,oName,photo,countryId,addLn1, addLn2, addLn3,"
                                                +"genderId,ethnicityId, skinColorId, eyeColorId,hairColorId,occupationId,"
                                                +"phoneNo, maritalStatusId, noticableFeatures,weight,height,citizenTypeId,dob)"
                                                + "VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)"
, new Object[]{citizen.getfName(),citizen.getlName(),citizen.getoName(),
                                                citizen.getPhoto(),citizen.getCountryId(),citizen.getAddLn1(),
                                                citizen.getAddLn2(),citizen.getAddLn3(),citizen.getGenderId(),
                                                citizen.getEthnicityId(),citizen.getSkinColorId(),citizen.getEyeColorId(),
                                                citizen.getHairColorId(),citizen.getOccupationId(),citizen.getPhoneNo(),
                                                citizen.getMaritalStatusId(),citizen.getNoticeableFeatures(),
                                                citizen.getWeight(),citizen.getHeight(),citizen.getCitizenTypeId(),
                                                citizen.getDob()});

 logger.info(count +" Rows affected in tblCitizens");
4

2 に答える 2

2

12.2.8 を参照してください: 自動生成されたキーの取得:

http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/jdbc.html

于 2013-03-31T00:14:40.290 に答える
2

リンクが壊れている場合に備えて、サンプルコードを提供してください。それを参照してください:

final String INSERT_SQL = "insert into my_test (name) values(?)";
final String name = "Rob";

KeyHolder keyHolder = new GeneratedKeyHolder();
jdbcTemplate.update(
    new PreparedStatementCreator() {
        public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
            PreparedStatement ps =
                connection.prepareStatement(INSERT_SQL, new String[] {"id"});
            ps.setString(1, name);
            return ps;
        }
    },
    keyHolder);

// keyHolder.getKey() now contains the generated key
于 2013-03-31T00:29:28.950 に答える