Java中last_insert_id的使用
2018-06-18 03:56:41来源:未知 阅读 ()
last_insert_id的作用是:在当前表中的主键是自增时,插入一条新记录的同时使用last_insert_id可以获取当前的新记录的主键id。
下面是一个例子:
import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.PreparedStatementCreator; import org.springframework.jdbc.support.GeneratedKeyHolder; import org.springframework.jdbc.support.KeyHolder; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = {"classpath:spring.xml","classpath:applicationContext.xml"}) public class TestSql { @Autowired(required = true) private JdbcTemplate jdbcTemplate; @Autowired(required = true) private JdbcTemplate jdbcTemplate1; @Test public void select(){ final String sql = "insert into series(class_id,brand_id,series_name) values("+2+","+2+",'"+ "sfsfds')"; System.out.println(sql); /* //这种方式会出现主键不确定性(当在另一张表同时插入一条数据并也要获取主键时会出现重复或者为0的情况) int ret = jdbcTemplate.update(sql); System.out.println("系列返回值==="+ret); String last = "select last_insert_id()"; int lastId = jdbcTemplate.queryForInt(last); System.out.println("最新系列ID===="+lastId); */ KeyHolder keyHolder = new GeneratedKeyHolder(); //这种方式是在上一种方式之上优化其不确定性(避免出现上述重复或者为0的情况) int i = jdbcTemplate.update(new PreparedStatementCreator() { public PreparedStatement createPreparedStatement(Connection con) throws SQLException { return con.prepareStatement(sql, PreparedStatement.RETURN_GENERATED_KEYS); //or return con.prepareStatement(sql, new String[]{"ID"});//ID是自动增长的自动 } }, keyHolder); System.out.println(i); System.out.println(keyHolder.getKeyList()); final String sql1 = "insert into meta_type(series_id,type_name) values("+2+",'"+ "sfsfds')"; System.out.println(sql1); // KeyHolder keyHolder1 = new GeneratedKeyHolder(); int j = jdbcTemplate1.update(new PreparedStatementCreator() { public PreparedStatement createPreparedStatement(Connection con) throws SQLException { return con.prepareStatement(sql1, PreparedStatement.RETURN_GENERATED_KEYS); //or return con.prepareStatement(sql, new String[]{"ID"});//ID是自动增长的自动 } }, keyHolder); System.out.println("----"+j); System.out.println(keyHolder.getKeyList()); } }
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash
