参考书本P384
自增键
主键产生分为应用层产生和数据库产生两种。应用层产生主键的机制值得学习!!
自增键对象让我们不依赖数据库的自增键,在应用层为新纪录提供主键值。
Oracle是以序列方式产生主键值,MySQL是以表方式产生主键值。
例:
在数据库中除了已有的t_post(里面的主键不用设成自增了,因为靠应用层产生),还需要再新建一个表t_post_id专门用来存放生成t_post主键的变量sequence_id。
create table t_post_id(sequence_id int)engine=myisam;
insert into t_post_id values(0);
-- 注:因为主键维护表(即t_post_id)并发访问量很大,最好声明为myisam;提供初始值为0
在applicationContext.xml中配置:
<!-- 1:基于数据表的自增器 -->
<bean id="incre" class="org.springframework.jdbc.support.incrementer.MySQLMaxValueIncrementer"
p:incrementerName="t_post_id"
p:columnName="sequence_id"
p:cacheSize="10"
p:dataSource-ref="dataSource"/>
注:设置维护主键的表名,用于生成主键值得列名,缓存大小
在PostDao.java中:
@Autowired
private DataFieldMaxValueIncrementer incre;
public void addPost(final Post post){
// 方法体参见上一节
}
测试:参见上一节
行集
SqlRowSet、SqlRowSetMetaData两个接口
RowSet会一次性装载所有的匹配数据,ResultSet会分批次装载数据。所以对于大结果集的数据,使用SqlRowSet会造成大的内存消耗。