При использовании Mybatis в качестве слоя постоянства оператор INSERT по умолчанию не возвращает значение первичного ключа записи, но возвращает количество вставленных записей. Если бизнес -уровень должен получить основной ключ записи, эта функция может быть выполнена посредством конфигурации.
Для первичного ключа последовательности перед выполнением вставки SQL должно быть указано значение первичного ключа для вставки записи, например Oracle и DB2. Можно использовать следующий метод конфигурации:
<INSERT ID = "ADD" PARAMETERTYPE = "vo.category"> <selectKey resultType = "java.lang.short" order = "перед" keyProperty = "id"> select seq_test.nextval из dual </selectKey> inSert в категорию (name_zh, parent_id, show_dor (#{namezh, jdbctype = varchar},#{parentid, jdbctype = smallint},#{showorder, jdbctype = smallint},#{deletestatus, jdbctype = bit},#{description, jdbctype = varchar})Для таблиц с первичными клавишами самостояния не требуется первичного ключа при вставке, но первичный ключ для самостоятельного инкрессии автоматически получается в процессе вставки. Например, MySQL, можно принять следующие два метода конфигурации:
<INSERT ID = "ADD" PARAMETERTYPE = "vo.category" useGeneratedKeys = "true" keyProperty = "id"> вставьте в категорию (name_zh, parent_id, show_order, delete_status, description) (#{Namezh, jdbctype = varchar},#{parentid, jdbctype = smallint},#{showorder, jdbctype = smallint},#{deletestatus, jdbctype = bit},#{description, jdbctype = varchar})или
<INSERT ID = "добавить" parameterType = "vo.category"> <selectKey resultType = "java.lang.short" order = "after" keyProperty = "id"> select last_insert_id () as id </selectKey> вставьте в категорию (name_zh, parent_id, show_order, delete_status, description) (#{namezh, jdbctype = varchar},#{parentid, jdbctype = smallint},#{showorder, jdbctype = smallint},#{deletestatus, jdbctype = bit},#{description, jdbctype = varchar})После завершения операции вставки атрибут ID категории параметров был назначен
Если основной ключ таблицы базы данных не является типом самостоятельного достижения, то слой приложения должен генерировать первичный ключ ..... Я мало что скажу об этом. Друзья, которые нуждаются в этом, могут оставить сообщение для общения ..
Ниже приведен метод написания Oracle. Oracle не имеет автоинскрущения, но Curval, реализованный с помощью триггеров, определяется в триггере.
<INSERT ID = "INSERT" PARATERCLASS = "ProfeekIndObject"> <! [CDATA [INSERT INTO T_PRO_FEEKIND (KindId, KindName, KindType, Enable) Values (seq_t_pro_feekind_id.nextval,#kindname#,#intrype#,#enable#)] <selectkekkeclask. keyProperty = "kindid"> выберите seq_t_pro_feekind_id.currval как kindid от двойного </selectKey> </insert> <!-Ниже приведен метод написания для mySQL-> <!-<selectKey resultClass = "int" keyProperty = "id"> select @edentity как id </select>->->->->->->->->->->->->->->->->
Другие справочные коды:
Когда мы сохраняем объект объекта (например, сохранение объекта), если мы не используем SelectKey, то мы не сразу получим атрибут идентификатора объекта объекта, то есть первичный ключ таблицы данных.
Код Java
Разрешение разрешения = новое разрешение (); разрешение.set ... permisondao.createPermission (разрешение); assertnull (разрешение); Разрешение разрешения = новое разрешение (); разрешение.set ... permisondao.createPermission (разрешение); assertnull (разрешение);
Элемент SelectKey связан с его положением в родительском элементе
<INSERT ID = "AddPermission" parameterClass = "разрешение"> <selectKey resultClass = "int" keyProperty = "rescisionId"> select seq_p_permission.nextval из dual </selectKey> вставьте в p_permission (mrissisionid, romsissianinfo, разрешение, разрешение, разрешение, URLENMAME, URL). #разрешение name #, #разрешение #, #url #) </insert> <insert id = "AddPermission" parameterClass = "разрешение"> <selectKey resultClass = "int" keyProperty = "resmissionId"> select seq_p_permission.nextval из dual </select insertemise in informismise, versisis, versisis, versisis, amprisisid, versisis, versisisId, versisisId, versisisId, versisisId, versisisId, versisisId, vermisisId, versisisId. Url) значения (#разрешение#,#разрешение#,#разрешение#,#разрешение#,#url#) </insert>
MySQL и SQLServer позади
XML -код
<INSERT ID = "AddPermission" parameterClass = "разрешение"> вставьте в p_permission (разрешение, разрешение, разрешение, разрешение, разрешение, url). </selectKey> </insert> <insert id = "AddPermission" parameterClass = "разрешение"> вставьте в p_permission (разрешение, разрешение, разрешение, разрешение, разрешение, разрешение, url) keyProperty = "rescisionId"> выберите последний_инсдер_ид () </selectKey> </insert>
Написано как вышесказанное, он слишком тесно связан с местоположением SelectKey. Элемент SelectKey файла конфигурации SQLMAP IBATIS имеет атрибут типа, в котором можно указать, представляет ли PRO или POST генерацию до или после генерации.
Для Oracle это
XML -код
<INSERT ID = "AddPermission" parameterClass = "разрешение"> <selectKey resultClass = "int" keyProperty = "resmissionId" type = "pre"> select seq_p_permission.nextval из двойного </selectkey> вставка в p_permission (rompersisid, referminfo, romissionname, permissennenenemane, ursismid # # # # # # # # # # # # # # # # # # # # # # # # # # # #liperfo #permiss #permissid #разрешение Name #, #разрешение #, #url #) </insert> <insert id = "AddPermission" parameterClass = "разрешение"> <selectKey resultClass = "int" keyProperty = "разрешение" type = "pre"> select seq_p_permission.nextval from dual </select infect in in in in in pa_permission, permisisId, ormisisId, ormisisId, ormisisId. RessissionEnname, url) значения (#разрешение#,#разрешение#,#разрешение#,#разрешение#,#url#) </insert>
MySQL, SQLServer и т. Д. Выражаются как:
XML -код
<INSERT ID = "AddPermission" parameterClass = "разрешение"> <selectKey resultClass = "int" keyProperty = "resmissionId" type = "post"> select last_insert_id () </selectKey> вставьте в p_permission (rompersisid, romsissInfo, разрешение #, zissionIn #, #permissIn #permissIn #permissIn #разрешение #, #url #) </insert>
Выше приведено метод возврата первичного ключа в Mybatis в Mybatis, представленном вам редактором. Я надеюсь, что это будет полезно для вас. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит вам вовремя. Большое спасибо за вашу поддержку сайту wulin.com!