spring 3 jdbc常用小结
spring 3的jdbc跟spring mvc搭配起来挺好用的,本文试着小结其主要使用方法,并举出spring 3.3.2中的一些信变化进行解析
1) 在dao中注入jdbctemplate,然后直接execute sql一下,当然配置文件要配置,如
@Autowiredprivate JdbcTemplate jdbcTemplate;........ String sql="......."; jdbcTemplate.execute(sql);
KeyHolder keyHolder = new GeneratedKeyHolder();jdbcTemplate.update(new PreparedStatementCreator() {public PreparedStatement createPreparedStatement(Connection conn)throws SQLException {PreparedStatement ps = conn.prepareStatement(sql);ps.setString(1, forum.getForumName());ps.setString(2, forum.getForumDesc());return ps;}}, keyHolder);forum.setForumId(keyHolder.getKey().intValue());
String sql = "SELECT ......";final List<Forum> forums = new ArrayList<Forum>();jdbcTemplate.query(sql,new Object[]{fromId,toId},new RowCallbackHandler(){ public void processRow(ResultSet rs) throws SQLException { Forum forum = new Forum(); forum.setForumId(rs.getInt("forum_id")); forum.setForumName(rs.getString("forum_name")); forum.setForumDesc(rs.getString("forum_desc")); forums.add(forum); }}); return forums;
@Overridepublic Person getPerson(String lastName) {String query = "select personId, personFirstName, personLastName from personTbl where personLastName = ?";return this.getJdbcTemplate().queryForObject(query, new PersonMapper(), lastName);}
public int getNumberOfPeople() {int rowCount = this.getJdbcTemplate().queryForInt("select count(0) from personTbl");return rowCount;}
String firstName = this.getJdbcTemplate().queryForObject("select personFirstName from personTbl where personLastName = ?",String.class,lastName ) ;
String sql = "select count(0) from personTbl where personFirstName = :first_name"; SqlParameterSource namedParameters = new MapSqlParameterSource("first_name", firstName); return this.getNamedParameterJdbcTemplate().queryForInt(sql, namedParameters);
public List<Person> getPerson(Person personSkeleton) {SqlParameterSource namedParameters = new BeanPropertySqlParameterSource(personSkeleton);List<Person> people = this.getNamedParameterJdbcTemplate().query( "select personID, personFirstName, personLastName from personTbl " + " where personLastName = :personLastName and personFirstName = :personFirstName", namedParameters, new PersonMapper() );
public void addPerson(Person newPerson) {SimpleJdbcInsert insertPerson = new SimpleJdbcInsert(this.getDataSource()) .withTableName("personTbl").usingGeneratedKeyColumns("personID"); Map<String, Object> parameters = new HashMap<String, Object>(3); parameters.put("personFirstName", newPerson.getPersonFirstName() ); parameters.put("personLastName", newPerson.getPersonLastName() ); insertPerson.execute(parameters);}