注意:本文适用于 bboss 3.6.1分支版本。
首先,我们在mysql中建一个具有自增主键的demo表
CREATE TABLE demo ( id bigint NOT NULL AUTO_INCREMENT, name VARCHAR(200), PRIMARY KEY (id) )
然后构建一个PO对象:
package com.frameworkset.sqlexecutor; public class AutoKeyDemo { private Long id; private String name; public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
接下来我们来演示单条记录插入和多条记录预编译批处理插入demo并返回自增主键的功能。
注意:多条记录预编译批处理插入时只会返回这批记录中最后一条记录产生的自增主键(如果哪位知道有全部返回所有自增主键的方法,请告诉我哦)
1.单条记录插入并返回自增主键
AutoKeyDemo demo = new AutoKeyDemo(); demo.setName("name2"); //主键被封装到GetCUDResult对象中,通过回调方式返回 //下面的insertBean方法最后带了一个GetCUDResult类型参数, //这个方法是专门为返回自增主键而新增的一个api GetCUDResult ret = new GetCUDResult(); SQLExecutor.insertBean("insert into demo(name) values(#[name])", demo,ret); //通过GetCUDResult对象的getKeys方法获取主键,并将主键设置到demo对象中 demo.setId((Long)ret.getKeys()); //更新刚添加的记录 demo.setName("newname"); //upret是一个数字类型,表示更新成功的记录数 SQLExecutor.updateBean("update demo set name=#[name] where id=#[id]", demo,ret);
2.多条记录预编译批处理插入并返回自增主键
SQLExecutor.delete("delete from demo"); //构建多条记录 Listdatas = new ArrayList (); AutoKeyDemo demo = new AutoKeyDemo(); demo.setName("name2"); datas.add(demo); demo = new AutoKeyDemo(); demo.setName("name3"); datas.add(demo); demo = new AutoKeyDemo(); demo.setName("name4"); datas.add(demo); //插入多条记录,并将成功插入的记录数和最后一条记录的主键值封装成GetCUDResult对象返回 //下面的insertBeans方法最后带了一个GetCUDResult类型参数, //这个方法是专门为返回自增主键而新增的一个api GetCUDResult ret = new GetCUDResult(); SQLExecutor.insertBeans("insert into demo(name) values(#[name])", datas,ret); //获取自增主键列表(很遗憾,list中只有最后一条记录的主键, //但是还是保留为List对象,以便后续有返回所有记录主键的解决方案后再以列表的方式返回这些主键) List