当前位置: 首页 > news >正文

青岛模板做网站dux5.3 wordpress

青岛模板做网站,dux5.3 wordpress,有永久免费的域名吗知乎,梦幻西游网页版app在一般情况下#xff0c;在新增领域对象后#xff0c;都需要获取对应的主键值。使用应用层来维护主键#xff0c;在一定程度上有利于程序性能的优化和应用移植性的提高。在采用数据库自增主键的方案里#xff0c;如果JDBC驱动不能绑定新增记录对应的主键#xff0c;就需要…在一般情况下在新增领域对象后都需要获取对应的主键值。使用应用层来维护主键在一定程度上有利于程序性能的优化和应用移植性的提高。在采用数据库自增主键的方案里如果JDBC驱动不能绑定新增记录对应的主键就需要手工执行查询语句以获取对应的主键值对于高并发的系统这很容易返回错误的主键。通过带缓存的DataFieldMaxValueIncrementer可以一次获取批量的主键值供多次插入领域对象时使用它的执行性能是很高的。我们经常使用数据的自增字段作为表主键也即主键值不在应用层产生而是在新增记录时由数据库产生。这样应用层在保存对象前并不知道对象主键值而必须在保存数据后才能从数据库中返回主键值。在很多情况下我们需要获取新对象持久化后的主键值。在Hibernate等ORM框架新对象持久化后Hibernate会自动将主键值绑定到对象上给程序的开发带来了很多方便。在JDBC 3.0规范中当新增记录时允许将数据库自动产生的主键值绑定到Statement或PreparedStatement中。使用Statement时可以通过以下方法绑定主键值int executeUpdate(String sql, int autoGeneratedKeys)也可以通过Connection创建绑定自增值的PreparedStatement PreparedStatement prepareStatement(String sql, int autoGeneratedKeys)当autoGeneratedKeys参数设置为Statement.RETURN_GENERATED_KEYS值时即可绑定数据库产生的主键值设置为Statement.NO_GENERATED_KEYS时不绑定主键值。下面的代码演示了Statement绑定并获取数据库产生的主键值的过程Statement stmt conn.createStatement();String sql INSERT INTO t_topic(topic_title,user_id) VALUES(‘测试主题’,’123’);stmt.executeUpdate(sql,Statement.RETURN_GENERATED_KEYS); // ①指定绑定表自增主键值ResultSet rs stmt.getGeneratedKeys();if( rs.next() ) {intkey rs.getInt(); // ②获取对应的表自增主键值}Spring利用这一技术提供了一个可以返回新增记录对应主键值的方法 int update(PreparedStatementCreator psc, KeyHolder generatedKeyHolder) 其中第二个参数类型org.springframework.jdbc.support.KeyHolder它是一个回调接口Spring使用它保存新增记录对应的主键该接口的接口方法描述如下Number getKey() throws InvalidDataAccessApiUsageException;当仅插入一行数据主键不是复合键且是数字类型时通过该方法可以直接返回新的主键值。如果是复合主键或者有多个主键返回时该方法抛出 InvalidDataAccessApiUsageException。该方法是最常用的方法因为一般情况下我们一次仅插入一条数据并且主键字段类型为数字类型如果是复合主键则列名和列值构成Map中的一个Entry。如果返回的是多个主键则抛出InvalidDataAccessApiUsageException异常Map getKeys() throws InvalidDataAccessApiUsageException;如果返回多个主键即PreparedStatement新增了多条记录则每一个主键对应一个Map多个Map构成一个List。List getKeyList()Spring为KeyHolder接口指代了一个通用的实现类GeneratedKeyHolder该类返回新增记录时的自增长主键值。假设我们希望在新增论坛板块对象后希望将主键值加载到对象中则可以按以下代码进行调整public voidaddForum(final Forum forum) {final String sql INSERT INTO t_forum(forum_name,forum_desc) VALUES(?,?);KeyHolder keyHolder newGeneratedKeyHolder(); // ①创建一个主键执有者getJdbcTemplate().update(newPreparedStatementCreator() {public PreparedStatement createPreparedStatement(Connection conn) throws SQLException {PreparedStatement ps conn.prepareStatement(sql);ps.setString(1, forum.getForumName());ps.setString(2, forum.getForumDesc());returnps;}}, keyHolder);forum.setForumId(keyHolder.getKey().intValue()); // ②从主键执有者中获取主键}这样在调用addForum(Forum forum)新增forum领域对象后forum将拥有对应的主键值方便后继的使用。在JDBC 3.0之前的版本中PreparedStatement不能绑定主键如果采用表自增键(如MySQL的auto increment或SQLServer的identity)将给获取正确的主键值带来挑战——因为你必须在插入数据后马上执行另一条获取新增主键的查询语句。下面给出了不同数据库获取最新自增主键值的查询语句posted on 2011-09-25 14:27 jadmin 阅读(902) 评论(0)  编辑  收藏
http://www.zqtcl.cn/news/158523/

相关文章:

  • 响应式网站免费模板下载电商怎么做如何从零开始视频
  • 江西网站开发学校联系我们网站制作
  • 做网站首页图片素材营销网站制作要素
  • 云阳网站建设百度对 wordpress 排名
  • 做电商网站需要多少时间网站建设答辩ppt
  • 营销型网站的案例江苏seo网站排名优化
  • 企业网站 备案 网站名称凡科做视频网站
  • 湘潭建设公司网站杭州网站优化
  • 工信部备案网站网站空间服务商
  • 深圳市企业网站seo营销工具桂林百姓网
  • 网站建设所需材料wordpress nginx配置文件
  • 给企业做网站运营广州制作网站公司
  • 一个网站可以有几个关键词网页游戏制作过程
  • 网站可视化后台桥西区网站建设
  • 个人怎么建设网站北京朝阳区最好的小区
  • 企业应该如何建设网站江苏润祥建设集团网站
  • 沈阳网站建设价格wordpress h1标签
  • 找别人做网站一般注意什么三亚专业做网站
  • 企业营销网站的建设罗湖做网站
  • 百度蜘蛛抓取新网站WordPress20w文章
  • 国际贸易网站有哪些可植入代码网站开发
  • 信息服务平台有哪些网站东莞网站关键词
  • 青岛网站定制手机软件开发和网站开发
  • 网站数据库地址是什么看企业网站怎么做到百度秒收
  • 南昌网站建设资讯wordpress dynamo
  • 网站建设招标样本南宁培训网站建设
  • 找回网站备案密码wordpress 2015主题
  • 网站电子商务平台建设域名查询系统
  • 设计制造中国第一架飞机的人是南宁百度快速优化
  • 淘宝联盟网站模板上海做企业网站