Ben PostgreSQL'i erişmek için MyBatis kullanan bir Java projesi var. PostgreSQL bir INSERT
ifadesinden sonra yeni oluşturulan satır alanları dönmek için izin verir ve ben dönmek için kullanmak istiyorum otomatik oluşturulan yeni oluşturulan kayıtların BIGSERIAL
id
. Yani, PostgreSQL özelliğini kullanmak için XML'de insert
komutunu değiştirin, <insert>
etiketine resultType="long"
özniteliği ekleyin ve eşleştiricinin Java arabiriminde, void
yerine long
dönmek için ekleme yöntemini ayarlayın. dönen değerleri
Bunu çalıştırmayı
, benAttribute "resultType" must be declared for element type "insert"
söyleyerek bir
org.xml.sax.SAXParseException
olsun. Ben
<insert>
etiketi
<select>
için her şey iyi çalışır değiştirmek, ancak ben bir
INSERT
ifadeyi gerçekleştirmek için
<select>
etiketi kullanmak beni rahatsız ediyor Şimdi
.
<insert>
etiketlerinin sonuçları döndüren yöntemler oluşturmanın bir yolu var mı, yoksa MyBatis bunun için tasarlanmamış mıdır ve onları yalnızca <select>
etiketleri olarak tutmalıyım?
Görüyorum. Bunu PostgreSQL'in “RETURNING” sözdizimi ile kullanmanın bir yolu var mı? –
"useGeneratedKeys =" true "keyColumn =" id "keyProperty =" id "' adlı öğeyi ekleyebilirsiniz. Bunu hiç kullanmadım ama işe yaramalı. Sorguda 'returnning 'kullanılmasına gerek yok, bu işin JDBC sürücüsü ve MyBatis yapmasına izin verin. Daha fazla yardım için [bu bağlantı] bölümüne bakın (http://edwin.baculsoft.com/2010/12/beginning-mybatis-3-part-3-how-to-get-tables-generated-ids/). – partlov
Tamam, [bu dokümanlar] 'a baktım (http://www.mybatis.org/generator/configreference/generatedKey.html) ve temelde aynı şey gibi görünüyor - anahtarı almak için ikinci bir sorgu çalıştırıyor. Ayrıca, PostgreSQL için tanımlanmış değildir, bu da mantıklıdır - çünkü PostgreSQL'te anahtarı, satırın içine eklenmiş aynı sorgudan alabilirsiniz. Birlikte sorguyu yürütmek istediğinizde –