volist标签通常用于查询数据集,关系数据库依赖于主键---它是数据库物理模式的基石,主键生成方式 1, 支持主键自增,例如MySQL,SQL Server数据库 2) 不支持主键自增,例如Oracle数据库 需求: 插入一条新数据,立马查询这条数据2获取主键值3对于JDBC原生代码,需要在预编译语句中设置返回参数,然后通过输出获取自增的主键值。4对于mybatis,若数据库支持自动生成主键的字段(比如 MySQL 和 SQL
每次插入 *** 作完后SELECT LAST_INSERT_ID(); 就获取了
如果是pdo *** 作insert
$dbh_w->exec("insert");
$id=$dbh_w->lastInsertId();
就直接获取插入id了
那个返回值1并不是主键,而是插入数据库的记录的条数。主键是自动赋值在对象中的。
比如对象User,属性id为主键,name,age
User user = new User();
usersetName("test");
usersetAge(16);
调用mybatis的insert(user);返回值是1,该条记录的主键通过usergetId();即可获取。
<insert id="saveCmsChannel" useGeneratedKeys="true" keyProperty="id接收字段">
1、指定主键生成策略为自动生成,useGeneratedKeys="true"
2、指定主键对应字段名,例如channel_id绑定为id字段,执行插入后,channel_id接受返回的自增键的值。
我们项目组正好用到了这个,SEQ_ZONE为sequence,则mybatis配置文件如下: SELECT SEQ_ZONECURRVAL AS id from dual insert into TBL_ZONE (ID, NAME ) values (SEQ_ZONENEXTVAL, #{name,jdbcType=VARCHAR} )
案例:
方法一
<insert
id="add"
parameterType="EStudent"
useGeneratedKeys="true"
keyProperty="id">
insert
into
TStudent(name,
age)
values(#{name},
#{age})
</insert>
useGeneratedKeys="true"
:设置是否使用JDBC的getGenereatedKeys方法获取主键并赋值到keyProperty设置的领域模型属性中。
(适用于mysql、sqlserver数据库,oracle不能使用,使用selectkey子节点做)
keyProperty:赋值的对象的属性名称。
方法二
<insert
id="add"
parameterType="EStudent">
//
下面是SQLServer获取最近一次插入记录的主键值的方式
<selectKey
resultType="int"
keyProperty="id"
order="AFTER">
SELECT
LAST_INSERT_ID()
AS
id
</selectKey>
insert
into
TStudent(name,
age)
values(#{name},
#{age})
</insert>
以上就是关于volist循环出的主键怎么获取全部的内容,包括:volist循环出的主键怎么获取、mybatise 的foreach标签中执行两条insert sql,第二条可以获取第一条的主键值吗主键是通过函数动态获取的、mybatis 为什么得不到返回的主键等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)