Java API
Agora que você sabe como configurar o mybatis e criar arquivos de mapeamento, você está pronto para melhorar suas habilidades. A API Java da Mybatis é onde você colhe os esforços que fez. Como você verá, em comparação com o JDBC, o Mybatis simplifica bastante seu código e o mantém simples, fácil de entender e manter. O Mybatis 3 introduziu muitas melhorias importantes para melhorar o mapeamento do SQL.
O Mybatis 3 é construído em uma API de configuração Java abrangente e poderosa. Esta API de configuração é a base da configuração MyBATIS baseada em XML e também é a base da nova configuração baseada em anotação.
As anotações fornecem uma maneira simples de implementar instruções simples de mapeamento sem introduzir muita sobrecarga.
Os alvos e rótulos correspondentes das anotações comuns de Mybatis são mostrados na tabela:
| anotação | Alvo | Tags XML correspondentes |
| @Cachenamespace | tipo | <cache> |
| @Cachenamespaceref | tipo | <Cacheref> |
| @Results | método | <sultmap> |
| @Resultado | método | <SILLD> <ID> |
| @Um | método | <Associação> |
| @Muitos | método | <coleção> |
@Inserir @Atualizar @Excluir | método | <s insert> <T pela atualização> <Lete> |
@InsertProvider @UpDateProvider @DeleteProvider @SelectProvider | método | <s insert> <T pela atualização> <Lete> <select> Permite a criação de SQL dinâmico |
| @Param | parâmetro | N / D |
| @Options | método | Propriedades das declarações de mapeamento |
| @Select | método | <select> |
O significado das anotações comuns de Mybatis:
@Cachenamespace (size = 512): define o uso de caches internos nesse espaço de nome
@Options (USecache = true, flushcache = false, timeout = 10000): interruptor de opção para algumas consultas
@Param ("id"): Alias qualificadas globalmente, a posição dos parâmetros de consulta na instrução SQL não está mais na forma de 0, 1, 2, 3 ..., subscritos seqüenciais, mas o nome correspondente, que é definido aqui.
@Results é uma matriz com @Result como o elemento. @Result representa a relação de mapeamento de um único campo de atributo. id = true significa que o campo de identificação é a chave primária. Mybatis fornecerá as otimizações necessárias durante a consulta. Todos os @Results na matriz formam um relacionamento de mapeamento de um único registro, enquanto o @Results é uma coleção de um único registro. Além disso, há uma anotação muito importante @resultmap, que é semelhante a @results
@Select ("declaração de consulta"), @Insert ("Adicionar instrução"), @UpDate ("Atualizar instrução") e @Delete ("Excluir declaração") representam operações para consultar, adicionar, atualizar e excluir dados.
Em seguida, vamos dar uma olhada no uso de anotações.
(1) Uso de anotações regulares (sem operações de mapa personalizadas necessárias):
Exemplo 1
//Add author @Insert("Insertinto Author(username,password,email,address,phone) " +"values(#{username},#{password},#{email},#{address},#{phone})")@Options(useGeneratedKeys=true,keyProperty="authId",flushCache= false, timeout = 10000)public voidaddAuthor(Author author); // Excluir autor @Delete ("DeleteFrom Author Where Id = #{id}")@options (Flushcache = false, timeout = 10000) public voidDeleteAuthor (@param ("id") int id); Dica: você precisa registrar um mapeador antes de chamar o método:
sessionFactory.getConfiguration (). addmapper (testinteger.class);
Ou configure <papper> </papper> em mapper.xml
Depois de se registrar, obtenha a interface do mapeador para ligar normalmente
(2) Se você precisar personalizar o mapa, poderá usar a anotação dos resultados:
Exemplo 2
// consulta todas as informações do autor @select ("selecione * do autor") @options (flushcache = false, timeout = 10000, usecache = true) @Results (value = {@Result (id = true, column = "id", "username =" id "), @Result (propriedade =" username ", column =" username ") @Result (Property = "Email", Column = "Email"), @Result (Property = "Endereço", Column = "Endereço"), @Result (Property = "Phone", Column = "Phone")}) Public List <orthing> FindAuthors (); // consulta a informação de um determinado autor @Select ("Select * Authing Where = 10000, usecache = true) @Results (value = {@Result (id = true, column = "id", property = "id"), @Result (Property = "UserName", Column = "UserName"), @Result (Property = "senha", column = "senha"), @Result (Property = "Email", Column = "Email"), @resultado (Property = "Endereço", Column = "Endereço"), @Result (Property = "Phone", Column = "Phone")}) Autor público FindAuthorbyId (@param ("id") intid); Se a estrutura do conjunto de resultados retornada por várias consultas for a mesma, você poderá usar o @ResultMap para definir a estrutura de retorno. Usando esta anotação, você precisará configurar seu mapa resultante no seu arquivo de mapeamento. @ResultMap (value = "nome") é o ID do resultado no arquivo de mapeamento. Dessa forma, você precisa registrar seu arquivo de configuração no <papper> e usar @ResultMap na interface para referenciar o ID do resultado no arquivo de configuração da seguinte forma:
Exemplo 3
Selfmapper.xml
// Cada linha de registro é um hashmap <resultMapType = "java.util.hashmap" id = "selfmap"> <resultProperty = "n" column = "city_name"/> ....... </resultMap>
Selfmapper.java:
@Select ("Selecione A.id, B.Name, C.State de ............")@resultMap (value = "selfmap") Lista pública <Hashmap> sel (); // Observe que a coleção de listas retornadas Caso completo
Código da interface
pacote com.obtk.dao; importar java.util.hashmap; importar java.util.list; importar org.apache.ibatis.annotações.insert; importar org.apache.ibatis.annotações.options; importar org.apache.ibatis.annotações.results; importar org.apache.ibatis.annotações.results; importar org.apache.ibatis.annotações.Select; importação com.obtk.entitys.studententity; interface pública ISTUDENTDAO {@INSERT ("Insira no aluno (atordoamento, gênero, idade, endereço, deptIdd)"+ "valores (#{atuname},#{gênero},#{idade},#{endereço},#{deptid})) @Select ("Selecione * do aluno onde Stuid =#{Stuid}") @Results (// desde que o valor da propriedade que seja inconsistente com o nome da coluna seja configurado, value = {@Result (column = "gênero", propriedade = "sexo")}) Studentity QueryByid (Integerer Stuid); @Select ("Selecione * do aluno onde gênero =#{qqq} e endereço =#{área}") @Results (// desde que o valor da propriedade de configuração = {@Result (column = "gênero", propriedade = "sexo")}) lista <TristentEntity> querybymany (hashmap themap); // Configuração da anotação da Universal Association @Select ("Selecione * do Departamento de Junção Interior dos Estudantes D" +"em S.DeptIdd = D.Deptid" +"Where S.Gender =#{sex}" +"e D.DepartName =#{DeptName}") List <HasHmap> querybyqn (HasHmap) } Caso 1 Consulte um objeto
pacote com.obtk.test; importar org.apache.ibatis.session.SQLSession; importar org.apache.ibatis.session.sqlSessionFactory; importação com.obtk.dao.istudentdao; importação com.obtk.entitys.studententity; importação com.obtk.utils.mybatisutil; classe pública anaiselectOne {public static void main (string [] args) {sqlSession session = null; SQLSessionFactory Factory = NULL; tente {session = mybatisutil.getSession (); fábrica = mybatisutil.getFactory (); // Associar a configuração SQL na interface com o arquivo de configuração do núcleo Factory.getConfiguration (). Addmapper (ISTUDENTDAO.CLASS); Istudentdao studao = session.getmapper (istudentdao.class); StudentEntity Stu = Studao.QuerybyId (129); System.out.println (stu.getStuname ()+","+stu.getSex ()+","+stu.getAddress ()+","+stu.getStuid ()); } catch (Exceção e) {e.printStackTrace (); } finalmente {mybatisutil.closSession (); }}} Caso 2 Passe vários parâmetros e consulte vários objetos
pacote com.obtk.test; importar java.util.hashmap; importar java.util.list; importar java.util.map; importar org.apache.ibatis.session.SQLSession; importar org.apache.ibatis.session.sqlSessionFactory; importação com.obtk.dao.istudentdao; importação com.obtk.entitys.studententity; importação com.obtk.utils.mybatisutil; classe pública anaiselectMany {public static void main (string [] args) {sqlSession Session = null; SQLSessionFactory Factory = NULL; tente {session = mybatisutil.getSession (); fábrica = mybatisutil.getFactory (); // Associar a configuração SQL na interface com o arquivo de configuração do núcleo Factory.getConfiguration (). Addmapper (ISTUDENTDAO.CLASS); Istudentdao studao = session.getmapper (istudentdao.class); Hashmap parammap = new hashmap (); parammap.put ("qqq", "masculino"); parammap.put ("área", "dormitório do aluno"); Lista <DententEntity> estulista = studao.QuerybyMany (Parammap); para (StudentEntity Stu: estulista) {System.out.println (stu.getStuname ()+","+stu.getSex ()+","+stu.getAddress ()+","+stu.getStuid ()); }} catch (Exceção e) {e.printStackTrace (); } finalmente {mybatisutil.closSession (); }}} Caso 3 Adicione um objeto
pacote com.obtk.test; importar org.apache.ibatis.session.SQLSession; importar org.apache.ibatis.session.sqlSessionFactory; importação com.obtk.dao.istudentdao; importação com.obtk.entitys.studententity; importação com.obtk.utils.mybatisutil; classe pública AnnosaveTest {public static void main (string [] args) {sqlSession Session = null; SQLSessionFactory Factory = NULL; tente {session = mybatisutil.getSession (); fábrica = mybatisutil.getFactory (); // Relacionou a configuração SQL na interface com o arquivo de configuração do núcleo Factory.getConfiguration (). Addmapper (istudentdao.class); Istudentdao studao = session.getmapper (istudentdao.class); StudentEntity Stu = New StudentEntity ("Testc#", "masculino", 21, "Plutão"); stu.setDeptIdd (10); int resultado = studao.saveOne (stu); session.Commit (); System.out.println ("Salvar com sucesso:"+stu.getStuid ()); } catch (Exceção e) {e.printStackTrace (); } finalmente {mybatisutil.closSession (); }}}Caso 4 Use o hashmap para consulta de associação
pacote com.obtk.test; importar java.util.hashmap; importar java.util.list; importar java.util.map; importar org.apache.ibatis.session.SQLSession; importar org.apache.ibatis.session.sqlSessionFactory; importação com.obtk.dao.istudentdao; importação com.obtk.entitys.studententity; importação com.obtk.utils.mybatisutil; classe pública AnnoJoinqnn {public static void main (string [] args) {sqlSession Session = null; SQLSessionFactory Factory = NULL; tente {// 4. Obtenha sessão de sessão = mybatisutil.getSession (); fábrica = mybatisutil.getFactory (); // Associar a configuração SQL na interface com o arquivo de configuração do núcleo Factory.getConfiguration (). Addmapper (ISTUDENTDAO.CLASS); Istudentdao studao = session.getmapper (istudentdao.class); Hashmap parammap = new hashmap (); parammap.put ("sexo", "masculino"); parammap.put ("DeptName", "Sistema de computador"); // 5. Executar Lista de declaração <Hashmap> estulista = studao.querybybyqnn (parammap); para (hashmap theObj: estulista) {System.out.println (theObj.get ("stuid")+","+theobj.get ("gênero")+","+theobj.get ("atordoa")+","+theobj.get ("somet"); }} catch (Exceção e) {e.printStackTrace (); } finalmente {mybatisutil.closSession (); }}}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.