Ao usar o mybatis como camada de persistência, a instrução Insert não retorna para não retornar o valor da chave primária do registro, mas retorna o número de registros inseridos. Se a camada de negócios precisar obter a chave primária do registro, essa função poderá ser concluída através da configuração.
Para a chave primária de sequência, antes de executar o Insert SQL, um valor de chave primária deve ser especificado para que o registro seja inserido, como Oracle e DB2. O seguinte método de configuração pode ser usado:
<inserir id = "add" parameterType = "vo.category"> <selectKey resultType = "java.lang.short" order = "antes" keyproperty = "id"> selecione seq_test.nextVal de dual </leclecky> insert na categoria (name_zh, pai_id, show_orde, delineado, delineado, delineado </selectKey> na categoria (name_zh, parent_id, shelte_ort, celicador </leclecky> (#{namezh, jdbctype = varchar},#{parentid, jdbctype = smallInt},#{showorder, jdbctype = smallInt},#{deLeTestatus, jdbCtype = bit},#{descrição, jdctype = varchar =Para tabelas com teclas primárias de auto-incremento, não é necessária uma chave primária ao inserir, mas uma chave primária de auto-incremento é obtida automaticamente durante o processo de inserção. Por exemplo, MySQL, os dois métodos de configuração a seguir podem ser adotados:
<insert id = "add" parameterType = "vo.category" usegeneratedkeys = "true" keyproperty = "id"> inserir na categoria (name_zh, parent_id, show_order, delete_status, descrição) valores (#{Namezh, jdbctype = varchar},#{parentid, jdbctype = smallInt},#{showorder, jdbctype = smallInt},#{deLeTestatus, jdbCtype = bit},#{descrição, jdctype = varchar =ou
<inserir id = "add" parameterType = "vo.category"> <selectKey resultType = "java.lang.short" order = "após" keyProperty = "id"> selecione last_insert_id () como id </selectKey> inserir na categoria (name_zh, parent_id_id () como idea. (#{namezh, jdbctype = varchar},#{parentid, jdbctype = smallInt},#{showorder, jdbctype = smallInt},#{deLeTestatus, jdbCtype = bit},#{descrição, jdctype = varchar =Após a conclusão da operação de inserção, o atributo de identificação da categoria de parâmetros foi atribuído
Se a chave primária da tabela de banco de dados não for do tipo de auto-incremento, a camada de aplicativo precisará gerar a chave primária ..... não vou dizer muito sobre isso. Amigos que precisam podem deixar uma mensagem para se comunicar ..
A seguir, é apresentado o método de escrita para o Oracle. O Oracle não possui auto -increment, mas o Currval implementado com gatilhos é definido no gatilho.
<insert id = "insert" parameterclass = "profeekIndobject"> <! [CDATA [inserir em valores t_pro_feekind (KindID, Kindname, Kindtype, Ativar) (seq_t_pro_feekind_id.nextVal,#KindName#,#tyttype#, habil keyProperty = "KindID"> Selecione seq_t_pro_feekind_id.currval como KindID de Dual </leclectyky> </nsert> <!-A seguir, é apresentado o método de escrita para MySQL-> <!-<SelectKey ResultClass = "Int" KeyProperty = "Id"> selecione @@ @@ @ @/selectKey>->->-
Outros códigos de referência:
Ao persistir em um objeto de entidade (como salvar um objeto), se não usarmos o SelectKey, não obteremos imediatamente o atributo de ID do objeto Entidade, ou seja, a chave primária da tabela de dados.
Código Java
Permissão de permissão = nova permissão (); Permission.set ... Permisondao.CreatMeperMission (permissão); assertNull (permissão); Permissão de permissão = nova permissão (); Permission.set ... Permisondao.CreatMeperMission (permissão); assertNull (permissão);
O elemento selectKey está relacionado à sua posição no elemento pai
<inserção id = "addPermission" parameterclass = "permissão"> <selectKey resultClass = "int" keyProperty = "PermissionId"> Selecione seq_p_permission.nextVal de dual # # # #permissionKey em p_permission (permissãoID, permissão, permissão, permissão, permissão, permissão, permissão, permissão) #PermissionenName #, #url #) </insert> <insert id = "addPermission" parameterclass = "permissão"> <selectKey resultClass = "int" keyProperty = "permissionId"> Selecione seq_p_permission.NextVal do dual </selectKey> insert em p_permission (permension (#PermissionId#,#PermissionInfo#,#PermissionName#,#PermissionEnName#,#url#) </insert>
MySQL e SQLServer estão atrás
Código XML
<insert id = "addPermission" parameterclass = "permissão"> inserir em p_permission (permissãoIDID, permissãoInfo, permissãoName, permissionenName, url) valores ( #permissãoID #, #permissãoinfo #, #permissãoName #, #permissionenName #, #url #) <leclectInFo #, #permissionName, #permissionenName #, #url #) <leclectInFo #, #" </selectKey> </insert> <insert id = "addPermission" parameterclass = "permissão"> inserir em p_permission (permissãoIDID, permissãoInfo, permissãoName, permissionenName, url) valores (#permissão#,#permissãoinfo#,#permissão###permissão " keyProperty = "PermissionId"> Selecione last_insert_id () </leclectyKey> </nsert>
Escrito como acima, ele está muito intimamente relacionado à localização do SelectKey. O elemento selectKey do arquivo de configuração do SQLMAP do iBATIS possui um atributo de tipo, que pode especificar se o pré ou o post representa a geração antes ou depois da geração.
Para Oracle, é
Código XML
<insert id="addPermission" parameterClass="Permission"> <selectKey resultClass="int" keyProperty="permissionId" type="pre"> SELECT SEQ_P_PERMISSION.NEXTVAL FROM DUAL </selectKey> INSERT INTO P_PERMISSION ( PERMISSIONID, PERMISSIONINFO, PERMISSIONNAME, PERMISSIONENNAME, URL ) VALUES ( #permissionId#, #permissionInfo#, #PermissionName #, #PermissionenName #, #url #) </insert> <insert id = "addPermission" parameterclass = "permissão"> <selectKey resultclass = "int" keyProperty = "permissionId" type = "pré"> select seq_p_ppermission.Nextval do permissionId "type =" PR "> selecione PERQ_P_PISMISSO. Valores de permissão, URL) (#PermissionId#,#permissãoInfo#,#permissãoName#,#PermissionenName#,#url#) </insert>
Mysql, sqlserver, etc. são expressos como:
Código XML
<insert id = "addPermission" parameterclass = "permissão"> <selectKey resultClass = "int" keyProperty = "PermissionId" type = "post"> select last_insert_id () </selectKey> inserir em p_permission (permissão, permissãoInfo, permissão, permissão, permissão, permissão, urll) valores (permissão, permissão, permissão, permissão, permissão, permissão, permissão) #PermissionenName #, #url #) </nsert>
O exposto acima é o método de retornar a chave primária em Mybatis em Mybatis apresentada a você pelo editor. Espero que seja útil para você. Se você tiver alguma dúvida, deixe -me uma mensagem e o editor responderá a você a tempo. Muito obrigado pelo seu apoio ao site wulin.com!