O Mybatis é uma excelente estrutura de camada de persistência que suporta consultas SQL comuns, procedimentos armazenados e mapeamento avançado. Mybatis elimina as configurações manuais de quase todo o código e parâmetros JDBC e pesquisam conjuntos de resultados. O Mybatis usa XML simples ou anotações para configuração e mapeamento original para mapear as interfaces e os Pojos de Java (objetos Java antigos simples) em registros no banco de dados.
Mybatis é um projeto de código aberto do Apache. Em 2010, este projeto foi transferido da Apache Software Foundation para o Google Code e foi renomeado Mybatis.
Migrou para o GitHub em novembro de 2013, endereço do Github do Mybatis: https://github.com/mybatis/mybatis-3.
O termo ibatis vem da combinação de "Internet" e "Abatis", e é uma estrutura de camada de persistência baseada em Java. O IBATIS fornece estruturas de camada de persistência, incluindo mapas SQL e objetos de acesso a dados (DAO).
Cada aplicativo Mybatis usa principalmente instâncias SQLSessionFactory, e uma instância SQLSessionFactory pode ser obtida através do SQLSessionFactoryBuilder. O SQLSessionFactoryBuilder pode ser obtido em um arquivo de configuração XML ou em uma instância de uma classe de configuração predefinida.
1. Use o gerador para gerar automaticamente a camada DAO, a camada do modelo e a camada de mapeador.
Endereço para download do gerador Mybatis: http://www.mybatis.org/generator/
Mybatis Generator Chinese Introdução: http://generator.sturgeon.mopaas.com/
O seguinte usa o plug-in Mybatis-Generator-core-1.3.2.Jar para adicionar o pacote de conexão do banco de dados JDBC para exportar automaticamente o pacote DAO da camada de persistência, o pacote de modelos e o pacote de mapeadores.
Os pacotes Java que precisam ser usados são:
mybatis-gerador-core-1.3.2.jar,
MySQL-Connector-Java-5.1.34.jar,
ojdbc14-10.2.0.1.0.jar,
sqljdbc4-4.0.jar.
Arquivo de configuração: gerador.xml
<? xml versão = "1.0" coding = "utf-8"?> <! Doctype geratorConfiguration public "-// mybatis.org//dtd mybatis generator configuration 1.0 //" <!-O arquivo de propriedade de configuração é usado para introduzir expressões de EL variáveis no arquivo de configuração-> <!-Se você o executar no CMD, deve escrever o caminho completo no URL porque o ClassPath não pode ser encontrado. For resource--> <!-- <properties url="file:///D:/workspaces/mybatisGen/bin/generatorConfig.properties"/> --> <!-- Database Driver Package Location--> <!-- SQL Server Data Driver Package--> <classPathEntry location="D:/JavaProject/generator/sqljdbc4-4.0.jar" /> <!-- Pacote de driver de dados do oracle-> <!-<ClassPathentry Location = "d: /java/m2/repository/com/oracle/ojdbc14/10.2.0.1.0/ojdbc14-10.2.0.1.0.jar"/> <!-MySQL Driver Driver Package-> <! Localização = "d: /javaproject/generator/mysql-connector-java-5.1.34.jar"/>-> <!-Aqui especifica esse DAO para mybatis3-> <!-id: deve ser configurado. O identificador único desse contexto. Este valor será usado em algumas mensagens de erro. DefaultModelType: usado para definir a política de tipo de modelo generativo. 1. Política padrão condicional, gerar uma classe modelo para cada tabela 2.Flat: Gere uma classe modelo de todas as tabelas, ou seja, essa classe salvará todos os campos das tabelas 3.Hierárquica: se a tabela tiver uma chave primária, o modelo será necessário para a classe principal, que é usada para acomodar as colunas BLOF na tabela e outra, e outra. Esta é uma relação adequada entre classes herdadas. TargetRuntime: Esta propriedade é usada para especificar o código gerado pelo Target de tempo de execução. 1.MYBATIS3 Os valores padrão gerarão objetos compatíveis com o Mybatis versão 3.0 e posterior, e o JSE 5.0 e posterior (por exemplo, modelos Java e interfaces de mapeador usarão tipos genéricos). O método "por exemplo" suporta dinâmica quase ilimitada onde cláusulas nesses objetos gerados. Além disso, os objetos Java com esses geradores suportam muitos recursos do JSE 5.0, incluindo tipos e comentários parametrizados. 2.Ibatis2Java2 3.ibatis2java5-> <contexto id = "mySqlTables" TargetRuntime = "mybatis3" defaultModeltype = "condicional"> <!-<plugin type = "org.mybatis.GeRator.plugins.Exemestes.Emustripts.Estress. Esta propriedade é usada para especificar se algum comentário será incluído no código gerado. Se definido como true, nenhum comentário será gerado 2. Supressa os padrões para false Esta propriedade é usada para especificar se o comentário gerado incluirá o registro de data e hora de geração MBG. --> <commentGenerator> <property name="suppressAllComments" value="true" /> </commentGenerator> <!-- Database Link URL, Username, Password--> <!-- MySQL Database Link URL, Username, Password--> <!-- <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysql://127.0.0.1:3310/test" userId="test" password="1234"> </jdbcConnection> --> <!-- Oracle Database Link URL, Username, Password--> <!-- <jdbcConnection driverClass="oracle.jdbc.driver.OracleDriver" ConnectionURL = "JDBC: Oracle: Thin:@127.0.0.1: 1521: orcl" userID = "test" senha = "1234"> </jdbcconnection>-> <!-SQL Server Database Link Url, Username, senha-> <JDBConnection driverclass = "com.microsoft.sqlserver.jdbc.sqlserverdriver" Connectionurl = "jdbc: sqlserver: //127.0.0.1: 1433; Databasename = test" user ""! key = "jdbc.url"> jdbc: h2: tcp: // localhost/teste </entradas> <key key = "jdbc.driver"> org.h2.driver </st Entry>-> <!-sqlserver2000 <entrada key = "jdbc.url"> jdbc: Microsoft: sqlserver: // localhost: 1433; databasename = [banco de dados] </entradas <entradas key = "jdbc.driver"> com.microsoft.jdbc.sqlserver.sqlserverriverrnVerriver <sicrosoft.jdbc.sqlserver.sqlservernriverrniver <sicrosoft.jdbc.sqlserver.sqlserverrivers key = "jdbc.url"> jdbc: sqlserver: //192.168.0.98: 1433; databaseName = [Database] </entradas <entrada key = "jdbc.driver"> com.microsoft.sqlServer.jdbc.sqMriver "> com.microsoft.SqlServer.Jdbc.sqMriver"> <entrada key = "jdbc.url"> jdbc: jtds: sqlServer: //192.168.0.102: 1433/[banco de dados]; tds = 8.0; lastUpDateCount = true </stent> <key de entrada = "jdbc.criver"> net.sourcege PostGresql <Entrada key = "jdbc.url"> jdbc: postgresql: // localhost/[banco de dados] </entradas> <Entrada key = "jdbc.driver"> org.postgresql.driver </s Entry>-> <!-sybase <entrada key = "jdbc.url"> jdbc: sybase: tds: localhost: 5007/[banco de dados] </entradas> <entradas key = "jdbc.driver"> com.sybase.jdbc.sybdriver </st Entry>-> <!-db2 <entrada key = "jdbc.url"> jdbc: db2: // localhost: 5000/[banco de dados] </entradas> <entradas key = "jdbc.driver"> com.ibm.db2.jdbc.app.db2driver </sired>-> <!-hsqldb <entrada key = "jdbc.url"> jdbc: hsqldb: MEM: generatordb </entradas> <Entrada key = "jdbc.driver"> org.hsqldb.jdbcdriver </string>-> <!-derby <key de entrada = "jdbc.url"> jdbc:> <! key = "jdbc.driver"> org.apache.derby.jdbc.clientdriver </sired>-> <!-Java Type Analiser Configuração opcional-> <!-<javatyperesolver type = ""> Tipo Propriedade: pode ser usado para especificar um para o usuário do tipo Java Type. Esta classe deve implementar a interface org.mybatis.generator.api. JAVATYPERESOLVER, deve haver um construtor de inadimplência público. A propriedade também pode aceitar valores especiais por padrão, neste caso, a implementação padrão será usada (o mesmo efeito não especifica o tipo). As propriedades suportadas por esta tag: ForceBigDecimals: o padrão são falsas se deve forçar o BigDecimal a representar todos os campos decimais e numéricos. • Se a escala for grande e o comprimento for maior que 18, o tipo BigDecimal será usado. • Se seu comprimento for de 10 a 18, o analisador do tipo java substituirá java.lang.long. • Se o comprimento for de 5 a 9, o analisador do tipo java será substituído por um java.lang.integer. • Se seu comprimento for menor que 5, o analisador do tipo java será substituído por java.lang.short. -> <JavatypeResolver> <Propriedade name = "ForceBigDecimals" value = "false" /> < /javatyperesolver> <!-gerar objeto VO-> <!-<navamodelGenerator> Os elementos são usados para definir propriedades geradas por modelos Java. O gerador do modelo Java cria a tabela que corresponde à classe de chave principal, classe de gravação e classe de amostra de consulta para introspecção. Este elemento é o elemento filho necessário <Context> elemento. Propriedades suportadas: baseado em construtor: Esta propriedade é usada para selecionar se o gerador Mybatis gerará um construtor de classe, que aceita cada campo em uma classe de valor. Enquanto isso, os mapas de resultados SQL serão incorporados em cada campo usando o construtor em vez de "setter". Esta propriedade é aplicável apenas ao Mybatis3 e será ignorada para o iBATIS2. O valor padrão é falso. Imutável: imutável, esta propriedade é usada para selecionar se o gerador Mybatis gerará uma classe de modelo imutável - isso significa que a classe não terá um método "setter" e o construtor aceitará o valor de cada campo da classe. O padrão é falso. TRIMSTRINGS: Esta propriedade é usada para selecionar se o gerador Mybatis adiciona código para aparar o espaço vazio retornado do banco de dados. Isso é útil se o seu banco de dados armazenar dados em um campo de caracteres em vez de um campo VARCHAR. O gerador Mybatis inserirá o código para cortar campos de caracteres. O valor padrão é falso. -> <!-Gere o nome do pacote e o local da classe de entidade. Aqui, coloque a classe de entidade gerada sob o pacote com.ouc.model-> <javamodelgenerator TargetPackage = "com.ouc.model" TargetProject = "d:/javaproject/generator/src"> <nome da propriedade "enablesubpackages" = "true"/> <nome da propriedade ">" Gere o objeto de mapeamento para consulta-> <!-Gere o nome do pacote e o local do arquivo de mapa SQL gerado. Aqui, coloque o arquivo de mapa SQL gerado no pacote com.ouc.mapping-> <sqlmapgenerator TargetPackage = "com.ouc.mapping" TargetProject = "d:/javaproject/generator/src"> <nome da propriedade = "EnablePackages" = "True"/> </sqlm <!- <JavaclientGenerator> Os elementos são atributos usados para definir geradores de código de cliente Java. O gerador de clientes Java é usado para estabelecer interfaces e classes Java, para que o modelo Java gerado e os arquivos de mapeamento XML possam ser facilmente usados. Para o ambiente de destino do IBATIS2, esses objetos gerados adotam a forma das classes de interface e implementação DAO. Para Mybatis, o objeto gerado usa uma interface de mapeador. Este elemento é um elemento filho opcional. Se você não especificar esse elemento, o Mybatis Generator (MBG) não gerará interfaces e classes do cliente Java. Onde o atributo de tipo: se o TargetRuntime for mybatis3 xmlmapper: o objeto gerado interface a interface Java com a infraestrutura de mapeador Mybatis 3.x. A interface dependerá do arquivo mapeador XML gerado. Geralmente, este XMLMapper é usado. -> <!-Gere o nome do pacote e a localização do DAO. Here, the generated dao class is placed under the com.ouc.dao package --> <javaClientGenerator type="XMLMAPPER" targetPackage="com.ouc.dao" targetProject="D:/JavaProject/generator/src"> <property name="enableSubPackages" value="true" /> </javaClientGenerator> <!-- <table> element is usado para selecionar uma tabela no banco de dados. A tabela selecionada resultará nos seguintes objetos que estão sendo gerados para cada tabela: • A Mybatis/ibatis • Arquivo de mapeamento SQL formatado • Um conjunto de classes que formam a tabela "Modelo", incluindo: • Uma classe a corresponder • A chave primária da tabela (se a tabela tiver uma chave primária). • Os campos na tabela correspondem à chave primária, não no campo BLOB. Esta classe estenderá a chave primária se houver uma. • Uma classe para segurar o campo BLOB em qualquer tabela (se houver). Esta classe estenderá as duas primeiras classes de uma, dependendo da configuração da tabela. • Uma classe, usada para gerar dinâmica onde as cláusulas, em diferentes métodos "por exemplo" (selectbyExample, DeleteByExample). • Interface DAO (opcional) e tabela de tabela de classe: o nome da tabela especificada deve ser configurada. DomainObjectName: o nome básico do objeto Javabean gerado. Se não for especificado, o MBG será gerado automaticamente com base no nome da tabela. Esse nome (especificado aqui ou gerado automaticamente) será usado como o nome da classe de domínio e o nome da classe Dao. EnableInsert: se deve gerar uma instrução de inserção. O padrão é true EnableSelectByPrimaryKey: se deve gerar uma declaração de seleção através da chave primária. Independentemente de existir essa configuração, se a tabela não tiver uma chave primária, ela não será gerada. EnableUpdateByPrimaryKey: se deve gerar instruções de atualização através da chave primária. Se a tabela não tiver uma chave primária, a instrução não será gerada, independentemente de a propriedade estar definida ou não. EnableteleteByPrimaryKey: se deve gerar uma declaração de exclusão através da chave primária. Se a tabela não tiver uma chave primária, independentemente de essa propriedade estar definida, a instrução não será gerada. EnableDeleteByExample: se deve gerar uma declaração de exclusão através do objeto Exemplo. Esta declaração faz muitas deleções dinâmicas diferentes geradas em tempo de execução. EnableCountByExample: se deve gerar uma instrução para calcular o número de linhas através do objeto Exemplo. Esta declaração retorna um exemplo que corresponde ao número de linhas em uma tabela. enableUpDateByExample: se deve gerar instruções de atualização através do objeto Exemplo. Esta declaração atualizará um registro correspondente em uma tabela. SelectByPrimaryKeyQueryId: Este valor será adicionado à lista de seleção para selecionar a declaração pela chave primária nesta tabela: "'<Value> como queryid". Isso pode ser usado para identificar consultas na ferramenta de rastreamento do DBA no Runtime. Se você precisar usar, especifique um ID exclusivo para gerar MBG para cada consulta diferente. SelectByExampleQueryId: Este valor será adicionado à lista de seleção para selecionar a instrução pelo exemplo nesta tabela: "'<Value> como queryid". Isso pode ser usado para identificar consultas na ferramenta de rastreamento do DBA no Runtime. Se você precisar usar, especifique um ID exclusivo para gerar MBG para cada consulta diferente. EnableSelectByExample: A declaração de seleção deve ser gerada através do exemplo? Esta declaração faz muitas consultas dinâmicas diferentes geradas em tempo de execução. ModelType: Esta propriedade é usada para substituir o tipo de modelo padrão se você deseja fazer isso para esta tabela. Se não for especificado, o MBG gerará o objeto de domínio com base no tipo de modelo padrão de contexto. Esse tipo de modelo define como a classe de domínio MBG será gerada. Alguns tipos de modelos MBGs gerarão uma única classe de domínio para cada tabela, e outros podem gerar MBGs de diferentes classes, dependendo da estrutura da tabela. EscapewildCards: exclua curingas. Isso significa que os nomes do esquema e da tabela dos cenários SQL ('_' e ' %') devem ser evitados nas colunas de pesquisa. Esses são alguns drivers que exigem que, se o esquema ou tabela contiver um curinga SQL (por exemplo, se o nome de uma tabela for my_table, alguns drivers exigem que os caracteres sublinheiros sejam escape). -> <!-Para gerar essas tabelas (altere o nome do quadro e domainObjectName)-> <tabela tablename = "v_supplyUser" domainObjectName = "vsupplyUser" enableCountByExample = "false"> eNableUpDateByByBy) tableName = "wj_gatelist" domainObjectName = "wjgatelist" enabenCountByExample = "false" enableUpDateByExample = "false" EnableteleteByExample = "false" EnableSelectByExample = "false" SelectByByBeryid = "false"/> </context> </generatorf) Abra a linha de comando CMD, vá para o arquivo em que o arquivo de configuração está localizado e execute a seguinte declaração de geração:
java -Jar mybatis- -core -core -1.3.2.jar -configfile generator.xml -OverWrite
Após a execução do comando, você pode ver que o pacote DAO, o pacote de modelos e os arquivos de pacote de mapeador são gerados no caminho correspondente.
2.Mybatis Integração da estrutura
1) Mybatis usa a configuração do parâmetro: sqlmapconfig.xml.
Configuration Configuração do cache (cache): Cacheenabled: Switch Global: o padrão é verdadeiro. Se estiver configurado como falso, é inútil configurar os outros arquivos Mapper XML para suportar o cache.
② Carregamento de atraso:
LazyLoadingEnabled: True Usa o carregamento preguiçoso, False desativa o carregamento preguiçoso, o padrão é verdadeiro, quando desativado, todos os objetos associados serão carregados instantaneamente.
Quando agressivoLazyloading: true é ativado, ao acessar uma propriedade de objeto preguiçoso no objeto quando o carregamento preguiçoso é ativado, todas as propriedades do objeto preguiçosas desse objeto serão totalmente carregadas. falso. Ao carregar atrasos, carregue as propriedades do objeto conforme necessário (ou seja, acessar uma propriedade de objeto preguiçosa no objeto e outras propriedades do objeto preguiçoso no objeto não serão carregadas). O padrão é verdadeiro.
③ MultiPleResultSetSEnabled: Permitir e não permita que uma única instrução retorne vários conjuntos de dados (dependendo dos requisitos do driver). O padrão é verdadeiro.
④ USECOLUMNLABEL: Use rótulos da coluna em vez de nomes de colunas. Drives diferentes têm abordagens diferentes. Consulte a documentação da unidade ou teste -a com essas duas opções diferentes.
⑤ UseGeneratedKeys: permite que o JDBC gere chaves primárias. O suporte da unidade é necessário. Se definido como true, essa configuração forçará a chave primária gerada, algumas unidades são incompatíveis, mas ainda podem ser executadas.
⑥ AutomappingBeHavior: Especifica se e como o Mybatis mapeia automaticamente os campos da tabela de dados e as propriedades dos objetos. Parcial apenas mapeará automaticamente simples, sem resultados aninhados. O completo mapeará automaticamente todos os resultados complexos.
⑦ DefaultExecutyType: configura e define o executor, e o executor simples executa outras instruções. O Executor de Reutilização pode reutilizar declarações preparadas, e o executor do lote pode executar repetidamente declarações e atualizações em lote.
⑧ DefaultStatementTimeOut: Defina um limite de tempo para determinar quanto tempo a unidade aguarda o banco de dados responder ao tempo limite.
O arquivo de configuração completo sqlmapconfig.xml é o seguinte:
<? xml versão = "1.0" Encoding = "utf-8"?> <! value = "true" /> <configuração name = "lazyloadingEnabled" value = "true" /> <configuração name = "multipeResultsetsenabled" value = "true" /> <configuração name = "multipleresultsetsenabled" value = "true" /> <nome do nome "usecolumnLabel" = "true" /> <nome " />" name = "AutomAppingBeHavior" value = "parcial" /> <configuração name = "defaultExecutype" value = "simples" /> <!-lotes simples de reutilização-> <!-<definição name = "defaultExecutyPead" value = "sdaffing" />-> <nome do nome = "names) name="mapUnderscoreToCamelCase" value="false" /><setting name="localCacheScope" value="SESSION" /><!-- <setting name="jdbcTypeForNull" value="OTHER" /> --><setting name="jdbcTypeForNull" value="NULL" /><setting name="lazyLoadTriggerMethods" value = "é igual, clone, hashcode, tostring"/> </setings> <typeAliases> <!-module-> <typeAlias alias = "user" type = "com.ouc.mkhl.platform.authority.model.user"/> typeAlias alias = "papel" type = "com.ouc.mkhl.platform.authority.model.role"/> <typeAlias Alias = "Equipment" type = "com.ouc.mkhl.platform.basedata.model.equipment"/> <typealias Alias = "fábrica" type = "com.ouc.mkhl.platform.basedata.model.factory"/> </typeAliases> <TepeHandlers> <typeHandler handler = "com.ouc.openplatform.dao.mybatis.serializableTypendler
Processamento de valor especial de serialização: SerializableTypeHandler
pacote com.ouc.openplatform.dao.mybatis; importar java.io.serializable; importar java.sql.callablestatement; importar java.sql.preparedStatement; import java.sql.resultset; org.apache.ibatis.type.baseTypeHandler; importar org.apache.ibatis.type.jdbctype;/*** @author wuping*/classe pública serializableTypendler estende o BasETypeHandler <Serializable> {@OverridePublic IntendNullPandler JDBCTYPE JDBCTYPE) lança sqLexception {ps.SetObject (i, parâmetro);}@SubsteridePublic Serializable getNullableResult (ResultSet rs, string columnName) lança sqLexception {return (serializable) rSs.getObject (columnName); int columnIndex) lança SQLException {return (serializável) rs.getObject (columnindex);}@substituição serializável GetNullableResult (CLALABLABLESTATEMENT CS, int columnIndex) lança sqlexception {return cs.getObject (columnIndex);}}}}}}} 2) Conjunto de resultados resultantes:
Ao selecionar mapeamento em mybatis, o tipo de retorno pode ser usado com o resultadoType ou o resultado. Resultype representa diretamente o tipo de retorno, enquanto o ResultMap é uma referência ao MAP de resultado externo, mas Resultype e ResultMap não podem existir ao mesmo tempo. Quando o Mybatis está consultando mapeamento, de fato, cada consulta de atributo é colocada em um mapa correspondente, onde a chave é o nome do atributo e o valor é o seu valor correspondente. Quando o atributo de tipo de retorno fornecido é o resultado, o Mybatis retira os pares do valor da chave no mapa e os atribui aos atributos correspondentes do objeto especificado pelo ResultType. Então, de fato, o tipo de retorno de cada mapa de consulta de Mybatis é um resultante. No entanto, quando o atributo de tipo de retorno que fornecemos é o resultado, o Mybatis atribui automaticamente o valor correspondente aos atributos do objeto especificado pelo resultado. Quando o tipo de retorno que fornecemos é o resultado, porque o mapa não pode representar bem o modelo de domínio, precisamos convertê -lo ainda mais no objeto correspondente, o que geralmente é muito útil em consultas complexas.
Exemplo: UserBaseResultMap
<resultMap id = "userBaseResultMap" type = "user"> <id column = "id" propriedade = "id" jdbctype = "integer" /> <resultado column = "nome de usuário" property = "username" jdbctype = "var" /> <resultado column = "senha" "=" "" Propriedade = "email" jdbctype = "varchar" /> <resultado column = "truename" propriedade = "truename" jdbctype = "varchar" /> <resultado column = "sexo" propriedade = "sexo" jdbctype = "var" /> resultado column = "idade" idade = "idade" jdbckbcty = "var" /> <resultado = "idade" idade ">" idade "JDBCBCTE" JDBCTE = "var" /> <resultado = "" idade ") Property = "Telephone" jdbctype = "varchar" /> < /resultMap>
Classe de modelo: usuário
pacote com.ouc.mkhl.platform.authority.model; importar java.io.Serializable; // Informações do usuário classe pública o usuário implementa serializável {private estático final serialversionuid = 1098321123L; ID inteiro privado; // ID do usuário String private Nome de usuário; // Nome do usuário Senha de sequência privada; // Nome de usuário email de sequência privada; // Email String Private String Truename; // nome real sexo privado de cordas; // idade inteira privada de gênero; // Age String String Telefone; // telefone celular public integer getId () {return id; } public void SetId (ID inteiro) {this.id = id; } public string getUserName () {return userName; } public void setUserName (string userName) {this.username = nome de usuário == null? nulo: nome de usuário.trim (); } public string getPassword () {return senha; } public void setPassword (senha da string) {this.password = senha == null? null: senha.Trim (); } public String getEmail () {retornar email; } public void setEmail (string email) {this.email = email == null? null: email.trim (); } public string gettruename () {return truename; } public void settruename (string truename) {this.truename = Truename == null? nulo: truename.trim (); } public string getSex () {return Sex; } public void SetSex (sexo da string) {this.sex = sexo == null? nulo: sex.Trim (); } public integer getage () {retorna idade; } public void setage (idade inteira) {this.age = Age; } public String getTeLoPone () {return telefone; } public void STETELHONE (String Telephone) {this.telephone = telefone == NULL? nulo: telefone.Trim (); }} 3) Adicione, exclua, modifique e verifique:
(1) Selecione Consulta:
① Id: O identificador exclusivo nesse modo pode ser referenciado por outras instruções.
② ParameterType: o nome da classe completo ou o alias do parâmetro passado para esta instrução.
③ ResultType: A instrução retorna todo o nome ou alias inteiros do tipo de valor. Observe que, se for uma coleção, todo o nome da classe ou alias do item da coleção é preenchido aqui, em vez do nome da classe da própria coleção. (ResultType e ResultMap não podem ser usados juntos)
④ ResultMap: o nome de mapa resultante externo referenciado. O mapeamento do conjunto de resultados é o recurso mais poderoso no Mybatis. Muitos mapeamentos complexos podem ser facilmente resolvidos. (ResultType e ResultMap não podem ser usados juntos)
⑤ FlushCache: se definido como true, o cache será limpo toda vez que a instrução for chamada. A instrução SELECT está definida como falsa por padrão.
⑥ Usecache: se definido como true, o conjunto de resultados da instrução será armazenado em cache. A instrução SELECT está definida como falsa por padrão.
⑦ Tempo limite: defina o tempo máximo em que a unidade aguarda uma resposta antes de lançar uma exceção. O padrão é não definir o valor e a unidade decide em si.
Exemplo: Consulta todas as informações do usuário: SelectUsers
<select id = "selectUsers" resultmap = "userBaseResultMap"> Selecione ID, nome de usuário, e -mail do usuário </leclect>
(2) Inserir inserir: saveuser
Aqui, a tabela de banco de dados usa a chave primária para aumentar a si mesma, e a chave primária é o ID.
① Buscar: Após definir um valor, a unidade ficará entusiasmada em retornar após o número de conjuntos de resultados atingir esse valor. O padrão não está definido, o que é determinado pela própria unidade.
② Declaração TITYPE: Declaração, declaração preparada, CallableStatement. Declarações preparadas, declarações chamáveis.
③ UseGeneratedKeys: use o método GetGeneratedKeys da JDBC para obter a chave primária gerada pelo próprio banco de dados (MySQL, SQLServer e outros bancos de dados relacionais terão campos que serão gerados automaticamente).
④ KeyProperty: Identifica um valor retornado pela chave que será definida como GetGenerated Keys by Mybatis ou use um elemento filho selecionKey para a instrução Insert.
<inserir id = "saveuser" parametertype = "user"> inserir no usuário (nome de usuário, senha, email, truename, sexo, idade, telefone) valores ( #{nome de usuário, jdbctype = varchar}, #{senha, jdbctype = varchar}, #{email, jdbcty, jdcty, jdbctype = varchar}, #{email, jdbcppe #{Truename, jdbctype = varchar}, #{sex, jdbctype = varchar}, #{idade, jdbctype = integer}, #{telefone, jdbctype = varchar} </insert> (3) Atualização de atualização: Atualize dinamicamente SQL: UpdateUser
<update id = "updateUser" parameterType = "user"> atualize usuário <Set> <se test = "nome de usuário! = null"> nome de usuário = #{nome de usuário, jdbctype = varchar}, </se> <se test = "senha! #{email, jdbctype = varchar}, </if> <se test = "truename! #{idade, jdbctype = inteiro}, </if> <if test = "telefone! = null"> telefone = #{telefone, jdbctype = varchar}, </if> </set> where id = #{id, jdbctype = integger} </atualização> (4) Excluir excluir: DeleteUser
<Delete id = "DeleteUser" ParameterType = "Integer"> Excluir do Userwhere ID = #{id, jdbctype = Integer} </lete> (5) SQL: O elemento SQL é usado para definir um segmento de instrução SQL reutilizável para outras instruções para ligar.
<sql id = "userBaseColumnList"> nome de usuário, senha, email, telefone </sql> <select id = "getUsers" resultmap = "userBaseResultmap"> selecione <incluir refid = "userBaseColumnList"/> do usuário </select>
(6) Parâmetros: Parâmetros: Mybatis pode usar tipos de dados básicos e tipos de dados complexos do Java.
Tipos de dados básicos, string, int, data, etc.
O uso de tipos de dados básicos pode fornecer apenas um parâmetro, portanto, você precisa usar a classe de entidade Java ou o tipo de mapa como tipo de parâmetro. Seus atributos podem ser obtidos diretamente através de #{}.
① Parâmetros básicos de tipo de dados: string
<select id = "getUserByName" resultType = "User" ParameterType = "String"> Selecione ID, nome de usuário, e -mail do userwhere userName = #{nome de usuário, jdbctype = varchar} </select> Código Java:
usuário público getUserByName (nome da string); // Obtenha informações do usuário com base no nome de usuário
② Java Entidade Tipo Parâmetro: Usuário
<inserir id = "saveuser" parametertype = "user"> inserir no usuário (nome de usuário, senha, email, truename, sexo, idade, telefone) valores ( #{nome de usuário, jdbctype = varchar}, #{senha, jdbctype = varchar}, #{email, jdbcty, jdcty, jdbctype = varchar}, #{email, jdbcppe #{Truename, jdbctype = varchar}, #{sex, jdbctype = varchar}, #{idade, jdbctype = integer}, #{telefone, jdbctype = varchar} </insert> Código Java:
public int saveUser (usuário do usuário); // Insira informações do usuário
③ Parâmetros do mapa: mapa <string, objeto> RecordMap
<select id = "SelectChildGroupTottalNum" resultType = "Integer"> Selecione a contagem (*) de GroupInfo <Trim prefix = "WHER" prefixoverrides = "e | ou"> e id em <foreach collection = "idstr" itene = "ids" (""}} »id # #iraeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeenel = {iranet =)). Nome! = '' 'e nome como concat (concat ('%', #{nome}),'%') </if> <if test = "description! #{type, jdbctype = integer} </if> <if test = "category! = null and category! =-1"> e categoria = #{categoria, jdbctype = integer} </if> </rod> </select> Código Java:
// Obtenha o número total de registros nos subgrupos public int selectChildGroupTottalNum (map <string, object> RecordMap); Map <string, object> registrMap = new Hashmap <string, object> (); registroMap.put ("idstr", group.getChildGroupIds (). Split (",")); recordmap.put ("name", name); recordMap.put ("Descrição, descrição); RecordMap.put (" tipo ", -1); = groupDao.SelectChildGroupTottalNum (RecordMap); ④ Múltiplos parâmetros:
Método 1: Passe os parâmetros em ordem.
<!-parâmetros de consulta com base no nome do parâmetro-> <select id = "SelectSensornObySensorname" resultType = "Integer" usecache = "false" flushcache = "true"> selecione Sensorno de SensorConfig onde o nome = #{0} e TestUnitno = #{1} e labcode Código Java:
// consulta o parâmetro iDpublic int selectSensornObySensorname (string sensorname, int testUnitno, string labcode);
Método 2: Adicione a anotação @param aos parâmetros da interface.
<select id = "selectbyUsernameAndvCode" resultmap = "userBaseResultMap"> Selecione ID, nome de usuário do usuário <TRIM prefix = "WHER" prefixoverrides = "e | ou"> <se test = "nome de usuário! test = "Supplierno! = NULL e Supplierno! = ''"> e SupplierNo Like Concat (Concat ('%', #{Supplierno}), '%') </f> e Supplierno! = 'Test' </Trim> Limit #{startIndex}, #{Pagesize} </select> Código Java:
// Consulta Informações do usuário com base no nome de usuário e v Lista pública de código <suário> selectbyusernameandvcode (@param ("userName") string userrame,@param ("fornecedierno") string fornecedierno,@param ("startIndex") int startIndex, @param ("Pagesize") Int Pagesize); 4) Declaração dinâmica de SQL:
Selecione TagKey Tag, se tag, julgamento condicional de If + Onde, atualize a instrução IF + Set, se + TRIM substitui onde/definir tag, TRIM substitui o Definir, escolha (quando, caso contrário), foreach tag. As instruções SQL dinâmicas são a parte mais flexível do Mybatis e é muito conveniente usá -las bem.
Exemplo: SelectTotalNumbyAccountType
<select id = "SelectTotalNUMByAccountType" resultType = "INTEGER"> Selecione contagem (*) do usuário <TRIM prefix = "WHED" prefixoverrides = "e | ou"> e Id não em <foreach collection = "idstr" itens = "ids" ("" "" ",", "/crowenech =" iDstr ": e nome de usuário! = '' "> e nome de usuário como concat (concat ('%', #{nome de usuário}), '%') </if> <if test =" fornecedierno! Truename! = '' "> e Truename como concat (concat ('%', #{truename}), '%') </if> e accountType = #{accountType} </rod> </select>O exposto acima é um resumo do conhecimento de uso da estrutura de camada persistente 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!