volist循环出的主键怎么获取

volist循环出的主键怎么获取,第1张

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 为什么得不到返回的主键等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9796546.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存