Spring的JdbcTemplate返回表自增主键值
2016-05-17 16:15
435 查看
事情是这样的,在1对N对N的表关系中,要用1方表自增生成的主键作为N方表的外键,因此插入1方表insert方法的返回值为主键值,这样可以用返回值插入N方表
代码如下
public int add(final Message message)
{
KeyHolder keyHolder = new GeneratedKeyHolder();
getJdbcTemplate().update(new PreparedStatementCreator(){
final String sql="insert into message (msgContent,sendTime) values(?,?)";
public PreparedStatement createPreparedStatement(java.sql.Connection conn) throws SQLException{
PreparedStatement ps = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
ps.setString(1, message.getMsgContent());
ps.setTimestamp(2, new java.sql.Timestamp(System.currentTimeMillis()));
return ps;
}
},
keyHolder);
return keyHolder.getKey().intValue();
}
注意导包不能导错:
import org.springframework.jdbc.support.GeneratedKeyHolder;
import org.springframework.jdbc.support.KeyHolder;
import org.springframework.jdbc.core.PreparedStatementCreator;
另外别忘了message 表的主键设置为自增
代码如下
public int add(final Message message)
{
KeyHolder keyHolder = new GeneratedKeyHolder();
getJdbcTemplate().update(new PreparedStatementCreator(){
final String sql="insert into message (msgContent,sendTime) values(?,?)";
public PreparedStatement createPreparedStatement(java.sql.Connection conn) throws SQLException{
PreparedStatement ps = conn.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);
ps.setString(1, message.getMsgContent());
ps.setTimestamp(2, new java.sql.Timestamp(System.currentTimeMillis()));
return ps;
}
},
keyHolder);
return keyHolder.getKey().intValue();
}
注意导包不能导错:
import org.springframework.jdbc.support.GeneratedKeyHolder;
import org.springframework.jdbc.support.KeyHolder;
import org.springframework.jdbc.core.PreparedStatementCreator;
另外别忘了message 表的主键设置为自增
相关文章推荐
- Spring事务的传播特性和隔离级别
- 验证码生成器JAVA版
- myeclipse自动生成hibernate的xml文件
- Struts2框架开发登录界面
- Struts2知识点学习笔记
- Struts2知识点学习笔记
- Java中线程和进程的一些概念的理解
- Java项目打war包的方法
- firefly 插件安装至eclipse
- POI海量数据导入
- 1、第一个Struts2程序
- JAVA给图片添加图片水印或文字水印
- java.lang.UnsatisfiedLinkError 解决方法
- spring和junit整合报错 It is indirectly referenced from required .class files
- spring整合activemq发送MQ消息[Topic模式]实例,activemqmq
- JAVA线程-线程状态及生命周期
- org.tigris.subversion.javahl.ClientException: Attempted to lock an already-locked dir异常解决方法
- 【Java】java.util.Random()/Random(long seed)
- ssh框架ajax获取后台list数据简单例子
- Java学习之反射机制学习笔记--3