A maioria dos desenvolvedores que usam Mybatis encontrará um problema, que é escrever uma grande quantidade de SQL no arquivo XML. Além da lógica de negócios especial SQL, também há um grande número de SQL com estruturas semelhantes. Além disso, quando a estrutura da tabela do banco de dados muda, todas as classes de SQL e entidade correspondentes precisam ser alteradas. O impacto dessa carga de trabalho e eficiência pode ser a barreira entre adicionar, excluir, modificar e verificar programadores e programadores reais. Neste momento, o mapeador geral surgiu ...
O que é um mapeador universal
O General Mapper é um plug-in baseado no mybatis para resolver o problema de adicionar, excluir, modificar e pesquisar tabelas únicas. Os desenvolvedores não precisam escrever SQL ou adicionar métodos ao DAO. Desde que eles escrevam bem a classe da entidade, eles podem suportar métodos correspondentes de adição, exclusão, modificação e pesquisa.
Como usar
Tomando o MySQL como exemplo, suponha que exista essa tabela:
Criar tabela `test_table` (` id` bigint (20) não nulo auto_increment, `name` varchar (255) padrão '',` create_time` datetime null, `` create_user_id` varchar (32) default null, `update_time` datetime` update `update` update `update 'update_timull) null` update_ update_time' `is_delete` int (8) nulo padrão, chave primária (` id`)) mecanismo = innodb auto_increntry = 1 charset padrão = utf8;
A chave primária é o ID, que aumenta por si só. Aqui está uma tabela como exemplo para introduzir como usar um mapeador universal.
Dependências do MAVEN
<!-General Mapper-> <Depency> <PuerpId> tk.mybatis </groupiD> <TRARFACTID> Mapper </stutifactId> <versão> 3.3.9 </versão </dependency>
Configuração do Springmvc
<!-mapeador geral-> <beanclass = "tk.mybatis.spring.mapper.mapperscannerconfigurer"> <propriedadeName = "BasEpackage" value = "cn.com.bluemoon.bd.service.sspider.dao"/> <weeadName = "Propriedades.> </value> </souse> </i bean>
Observe que tk.mybatis.spring.mapper.MapperScannerConfigure é usado aqui para substituir o mybatis org.mybatis.spring.mapper.MapperScannerConfigurer original.
Parâmetros disponíveis:
Na maioria dos casos, esses parâmetros não serão usados e você poderá estudá -los se tiver circunstâncias especiais.
Como escrever entidades
Lembre -se de um princípio: número de campos na classe de entidade> = número de campos que precisam ser operados na tabela de banco de dados. Por padrão, todos os campos na classe de entidade são operados como campos na tabela e, se houver campos adicionais, a anotação @Transient deverá ser adicionada.
@Table (name = "test_table") public classe testTableVoimplements serializável {private estático final serialversionuid = 1L; @Id @generatedValue (generator = "jdbc") private Id; @Transient Private String UserID; nome de string privado; Timestamp privado CreateTime; Private String CreateUserID; UpdateTime de Timestamp Private; private string updateUserID; IsDelete inteiro privado; // omita Get, Set ...}ilustrar:
Como escrever Dao
Na redação tradicional de Mybatis, a interface DAO precisa estar associada ao arquivo de mapas, ou seja, o SQL precisa ser gravado para implementar métodos na interface Dao. Em geral, o DAO só precisa herdar uma interface comum para ter métodos ricos:
Herdando o mapeador genérico, os genéricos devem ser especificados
Public Interface testTableDaoextends Mapper <Testtablevo> {}Depois de herdar o Mapper, o mapeador herdado tem todos os métodos comuns do Mapper:
Selecione
Método: List <T> selecione (t registro);
Nota: Consulta com base no valor do atributo na entidade e use sinais iguais para condições de consulta
Método: t SelectByPrimaryKey (chave do objeto);
NOTA: Consulta com base no campo de chave primária. Os parâmetros do método devem conter atributos de chave primária completos. As condições de consulta usam sinais iguais.
Método: List <T> selectall ();
Nota: Consulta todos os resultados, o método selecionado (nulo) pode alcançar o mesmo efeito
Método: t SelectOne (t registro);
NOTA: Consulta de acordo com as propriedades da entidade, pode haver apenas um valor de retorno e vários resultados são lançados. As condições de consulta usam sinais iguais.
Método: int selectCount (t registro);
Nota: Consulte o número total de atributos na entidade e use o sinal igual para as condições de consulta.
Inserir
Método: int insert (t registro);
Nota: Salvar uma entidade, o atributo nulo também será salvo e o valor padrão do banco de dados não será usado.
Método: int InsertSelective (t registro);
Nota: Salvar uma entidade, o atributo nulo não será salvo e o valor padrão do banco de dados será usado.
Atualizar
Método: int updateByPrimaryKey (t registro);
Nota: Atualizar todos os campos da entidade de acordo com a chave primária, o valor nulo será atualizado
Método: int updateByPrimaryKeySelective (t registro);
Descrição: Atualize o valor cujo atributo não é nulo de acordo com a chave primária
Excluir
Método: int excluir (t registro);
Nota: Exclua de acordo com os atributos da entidade como condições, use sinais iguais para condições de consulta
Método: int DeLeteByPrimaryKey (chave do objeto);
NOTA: Exclua de acordo com o campo de chave primária, os parâmetros do método devem conter atributos de chave primária completos
Método de exemplo
Método: List <T> SelectByExample (Exemplo de objeto);
Descrição: Consulta de acordo com as condições de exemplo
Ponto da chave: Esta consulta suporta especificar colunas de consulta através da classe Exemplo e especificar colunas de consulta através do método SelectProperties.
Método: int selectCountByExample (Exemplo de objeto);
Descrição: Consulte o número total de acordo com as condições de exemplo
Método: int updateByExample (@param ("registro") t registro, @param ("exemplo") exemplo de objeto);
Descrição: Atualizar todas as propriedades contidas no registro da entidade de acordo com as condições de exemplo, e o valor nulo será atualizado.
Método: int updateByExampleSelective (@param ("registro") t registro, @param ("exemplo") Exemplo de objeto);
Descrição: Atualizando o registro da entidade de acordo com as condições de exemplo contém o valor da propriedade que não é nulo
Método: int DeLeteByExample (Exemplo de objeto);
Descrição: Exclua dados de acordo com as condições de exemplo
Usado no código
Injete o DAO em serviço e está pronto para usar.
@AUTOWIREDPRIVATE TestTableDao testTableDao;
A seguir, é uma maneira geral de escrever:
Novo
TestTableVo vo = new TestTableVo (); // omitir as propriedades de configuração para vo ... int row = testTableDao.insertSelective (VO);
Rever
TestTableVo vo = new TestTableVo (); // omitir as propriedades de configuração para vo ... int row = testTableDao.UpDateByPrimaryKeySelective (VO);
Consulte um único
TestTableVo vo = new TestTableVo (); Vo.setId (123L); TestTableVo Result = TestTableDao.Selectone (VO);
Consulta condicional
// Crie Exemplo de Exemplo Exemplo = Novo Exemplo (TestTableVo.class); // Crie CriteriaExample.Criteria Criteria = Explet.CreatEcriteria (); // Adicionar critérios de condição.AndEqualTO ("ISDELETETE", 0); Criteria.And ("Nomeo" "," Slorto ", ABC123%"); Resumir
O princípio do General Mapper é obter as informações das classes de entidade através da reflexão e construir o SQL correspondente. Portanto, precisamos apenas manter as classes de entidade, que fornecem grande conveniência para lidar com necessidades complexas e mutáveis. A descrição acima é apenas um uso simples do General Mapper. Em projetos reais, ainda devemos encapsular um método maior, mais geral e melhor usado com base no mapeador geral com base nos negócios.
Com a configuração de inicialização da primavera
Maven
<!-mybatis-> <pendency> <puperiD> org.mybatis.spring.boot </foupiD> <TRAFACTID> mybatis-spring-boot-starter </artifactId> <versão> 1.3.1 </versão> </dependência> <!-! <TarfactId> mapper-spring-boot-starter </stifactId> <versão> 1.1.4 </versão> </dependency>
Application.Properties Configuration
#Mapper#maperes vírgula separados mappper.mappers = tk.mybatis.mapper.common.mappermapper.not-empty = Falsemapper.Identity = mysql
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.