1. SQL 部分
public class SQL {
public static String INSERT_TABLE_BASE =
"insert into table(id, STATUS, account, upd_user, upd_date, upd_time ) "+
" values(0, :status, :updUser, :updDate, :updTime )";
}
1)sql中id即为自增长列,在此插入为0,插入成功后, 为最新增长的编号
2) 自增长列也可不写在SQL中
2. 实体类
public class TableEntity {
protected int id = 0;
protected int status = 0;
protected String updUser = "";
protected String updDate = "";
protected String updTime = "";
// 省略 ....
}
3. 插入代码
import java.util.HashMap;
import org.springframework.jdbc.core.simple.SimpleJdbcTemplate;
import org.springframework.jdbc.support.GeneratedKeyHolder;
import org.springframework.jdbc.support.KeyHolder;
import org.springframework.jdbc.core.namedparam.BeanPropertySqlParameterSource;
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcOperations;
/**
* insert TableEntity
*
* @param tableEntity
* @return 增長的ID
*/
public int insertTableEntity(TableEntity tableEntity) {
try {
HashMap<String, Object> tableEntityMap = setHashMapByTableEntity(tableEntity);
KeyHolder keyHolder = new GeneratedKeyHolder();
// 使用 HashMap 传入参数
MapSqlParameterSource mapSqlParameterSource = new MapSqlParameterSource(
tableEntityMap);
/* 使用 实体 传入参数(注意key值相同)
BeanPropertySqlParameterSource beanPropertySqlParameterSource =
new BeanPropertySqlParameterSource(accessorySalesVO);
*/
// 需使用 simpleJdbcTemplate.getNamedParameterJdbcOperations();做新增
NamedParameterJdbcOperations namedParameterJdbcOperations =
simpleJdbcTemplate.getNamedParameterJdbcOperations();
/* 返回受影响的行数
new String[] { "id" } 指明 列 id 为自增长列
*/
int result = namedParameterJdbcOperations.update(
SQL.INSERT_TABLE_BASE,
mapSqlParameterSource, keyHolder, new String[] { "id" });
if (result > 0) {
// 成功 , 获取自增长值id
result = keyHolder.getKey().intValue();
return result;
}
} catch (Exception e) {
// 省略 ...
}
return -1;
}
private HashMap<String, Object> setHashMapByTableEntity(TableEntity tableEntity) {
HashMap<String, Object> tableEntityMap = new HashMap<String, Object>();
int status = tableEntityMap .getStatus();
String account = tableEntity.getAccount();
String updUser = tableEntity.getUpdUser();
String updDate = tableEntity.getUpdDate();
String updTime = tableEntity.getUpdTime();
tableEntityMap .put("status", status);
tableEntityMap .put("updUser", updUser);
tableEntityMap .put("updDate", updDate);
tableEntityMap .put("updTime", updTime);
return tableEntityMap ;
}
至此,就完成了,亲测可用
(此文章由自己遇到类似问题,并记录,希望可以给大家帮助)
文章参考:
https://blog.csdn.net/henryzhang2009/article/details/49884927