Comment faire pour obtenir le dernier id inséré dans Oracle à l'aide de MyBatis?
Je suis d'insérer des données dans une Oracle
table et le besoin de récupérer le id
de la ligne insérée. Dit id
est généré par une séquence, puis insérée dans la table par un déclencheur.
Maintenant, je sais qu'il ya plusieurs façons d'obtenir l'id de la ligne insérée lors de l'utilisation de JDBC
, mais depuis que je suis en utilisant MyBatis
pour exécuter la INSERT
de commande, je n'arrive pas à comprendre comment faire pour obtenir l'id après l'insertion de mes données. Tout conseil serait grandement apprécié.
c'est une question de MySQL, mais j'espère que cela peut vous orienter dans la bonne direction stackoverflow.com/questions/4283159/...
des employés values ('jean', 'dupont') retourner l'id")
merci, la lecture de ce droit maintenant.
des employés values ('jean', 'dupont') retourner l'id")
merci, la lecture de ce droit maintenant.
OriginalL'auteur mduck | 2013-03-05
Vous devez vous connecter pour publier un commentaire.
Quelque chose comme cela devrait fonctionner
Dans mon exemple, la clé générée est stocké dans de l'Utilisateur.userId
Droit, je n'ai pas d'avis... merci
Merci beaucoup! de l'utilisateur.getId() fonctionne très bien ici
OriginalL'auteur natros
Pour moi, il fonctionne comme ceci (mybatis 3)
Pas besoin de touche sélection. Juste assurez-vous de mettre la valeur correcte dans keyProperty..
J'ai un déclencheur avant de l'insérer dans oracle pour obtenir la prochaine id de séquence.
Sinon cela fonctionne aussi:
OriginalL'auteur T M
Disons que le déclencheur id_seq séquence Oracle pour obtenir l'id. Si vous exécutez à partir de MyBatis à l'aide de la même session de base de données, SQL
Vous obtenez l'ID utilisé.
Est votre session de prise de l'insertion dans la table ou sur une autre session? Est-ce que Vous Insérez un tableau, Insérer un tableau; id_seq.currval; Ou Vous: insérer un tableau à Quelqu'un d'autre: insérer un tableau Vous: is_seq.currval Dans le premier scénario, id_seq.currval sera le retour de la deuxième table id. Dans le deuxième scénario, id_seq.currval sera de retour de votre pièce d'identité pour l'insertion de la table.
Oui, une autre session peut faire l'insertion.
Si c'est une autre session, puis currval est garanti par Oracle pour retourner l'ID de votre session de la dernière utilisation.
OriginalL'auteur Jirawat Uttayaya
Avec oracle, le mieux est de le faire en deux phases. Fonctionne bien et le prix est seulement un de plus de mappeur:
Première phase:
Vous obtenir le seq, de mettre dans l'objet de votre place de titulaire et
Deuxième Phase:
insérez votre objet
OriginalL'auteur Enrique Jiménez Flores