Sprint Data JdbcTemplate 작업

6578 단어
1. 새로운 데이터를 추가한 후에 새 데이터 키를 되돌려줍니다(JdbcTemplate).
package cn.coreqi.springaction.repository.Impl;

import cn.coreqi.springaction.entity.User;
import cn.coreqi.springaction.repository.TestRepository;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.PreparedStatementCreator;
import org.springframework.jdbc.core.PreparedStatementCreatorFactory;
import org.springframework.jdbc.support.GeneratedKeyHolder;
import org.springframework.jdbc.support.KeyHolder;
import javax.annotation.Resource;
import java.sql.Types;
import java.util.Arrays;

public class JdbcTestRepositoryImpl implements TestRepository {

    @Resource
    private JdbcTemplate jdbcTemplate;

    /**
     *  
     * @param user   
     * @return   
     */
    @Override
    public Long save(User user) {
        PreparedStatementCreator psc = new PreparedStatementCreatorFactory(
                "insert into t_user(userName,passWord,mobile) values (?,?,?)",
                Types.VARCHAR,Types.VARCHAR,Types.VARCHAR
        ).newPreparedStatementCreator(
                Arrays.asList(
                        "fanqi",
                        "coreqi",
                        "13800138000"
                )
        );
        KeyHolder keyHolder = new GeneratedKeyHolder();
        jdbcTemplate.update(psc,keyHolder);
        return keyHolder.getKey().longValue();
    }
}

2. 새 데이터를 추가한 후 새 데이터 키로 돌아가기(SimpleJdbcInsert)
새 데이터의 키 ID를 얻기 위해서는 번거로운 Prepared Statement Creator를 사용해야 합니다. SimpleJdbcInsert를 도입하여 SimpleJdbcInsert가 JdbcTemplate를 포장함으로써 데이터를 표에 쉽게 삽입할 수 있습니다.
package cn.coreqi.springaction.repository.Impl;

import cn.coreqi.springaction.entity.User;
import cn.coreqi.springaction.repository.TestRepository;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.simple.SimpleJdbcInsert;
import java.util.Map;

public class JdbcTestRepositoryImpl implements TestRepository {

    private SimpleJdbcInsert userInserter;
    private ObjectMapper objectMapper;

    @Autowired
    public JdbcTestRepositoryImpl(JdbcTemplate jdbcTemplate){
        this.userInserter = new SimpleJdbcInsert(jdbcTemplate)
                .withTableName("t_user")
                .usingGeneratedKeyColumns("id");
        this.objectMapper = new ObjectMapper();
    }

    /**
     *  
     * @param user   
     * @return   
     */
    @Override
    public Long save(User user) {
        Map values = objectMapper.convertValue(user,Map.class);
        Long userId = userInserter.executeAndReturnKey(values).longValue();
        return userId;
    }
}

SimpleJdbcInsert는 두 가지 유용한 방법으로 데이터 삽입 작업을 수행할 수 있습니다:execute () 와excuteAndReturnKey ().이들은 모두 맵을 매개 변수로 받아들였는데, 맵의 키는 테이블에 데이터를 삽입할 열의 명과 맵의 Value는 열에 삽입할 실제 값에 대응했다.

좋은 웹페이지 즐겨찾기