2010-08-11 19 views
1

nous avons créé une table dans MSSQL ayant la structure suivante -DAO Génération de problème iBATIS

**Table Name - TestTable** 
id (int) (Primary key) 
name (varchar) 
owner (varchar) 

je donne la spécification de l'identité de la colonne « id » avec incrémentation automatique avec 1 pour chaque nouvelle ligne. Quand je crée des artefacts iBatis pour TestTable, la fonction d'insertion est se produit, dans le DAO, avec la signature suivante -

void insert(TestTable record); 

Je veux que la fonction d'insertion pour retourner le nouveau produit « id » pour cette ligne, au lieu de vide .

Comment y parvenir?

Répondre

1

Dans votre fichier SqlMap de ibatis, ajouter ce qui suit:

<insert id="myInsertStatement"> 
    INSERT INTO TestTable (name, owner) 
    VALUES (#name#, #owner#) 
    <selectKey keyProperty="id" resultClass="int"> 
     SELECT SCOPE_IDENTITY() 
    </selectKey> 
</insert> 

Ou vous pouvez remplacer Sélectionnez SCOPE_IDENTITY avec une autre requête SQL conçue pour retourner la dernière colonne d'identité insérée. Scope_identity est spécifique à MS SQL (comme demandé dans la question).