1. Consulta
Além da consulta de um único registro, aqui tentamos consultar um conjunto de registros.
Adicione o seguinte método à interface iuserMapper:
List <suser> getUsers (nome da string);
Adicionar user.xml:
<resultMap type = "user" id = "userList"> <!-Type é o nome completo ou alias da classe que retorna o elemento da lista-> <id column = "id" property = "id" /> <resultado column = "name" property = "name" /> <resultado column = "Age =" Age " /> <resultado" column = "endereço" "" " /> <edress" "<edress" "<ededs" "<enderd" "<endering" "<endering" "<enderd" "<endering" ",", "Age ("), ", name") "," (", names =" name "" /> <resultado column = "Age =" Age " /> <resultado column =" endereço "" "") ParameterType = "String" ResultMap = "UserList"> <!-ResultMap é a lista de usuários definida acima-> selecione * de `user` where nome como #{nome} </leclect>Método de teste:
@Test public void QueryListTest () {SqlSession Session = sqlSessionFactory.opensssion (); tente {iUserMapper mapper = session.getMapper (iuserMapper.class); List <suário> usuários = mapper.getUsers ("%a%"); // % representa qualquer caractere no SQL. para (usuário do usuário: usuários) {log.info ("{}: {}", user.getName (), user.getAddress ()); }} finalmente {session.close (); }} Se a consulta da tabela de conjunção for retornada, o objeto composto precisará ser processado com a palavra -chave da associação.
Se o usuário publicar um artigo, cada usuário poderá publicar vários artigos e ter um relacionamento um para muitos.
(1) Crie uma tabela de artigos e insira os dados do teste:
- Solte a tabela se existe a tabela de soltar, se existe `artigo '; - Crie uma tabela chamada 'Artigo' Criar tabela `Artigo` (` `id`t não null Auto_increment,` user_id` int não nulo, `title` Varchar (100) não nulo,` content` text não nulo, chave primária (`id`)) mecan - Adicione vários registros de teste Inserir nos valores `artigo` ('1', '1', 'title1', 'content1'), ('2', '1', 'title2', 'Content2'), ('3', '1', 'title3', 'content3'), ('4', '1', 'title4', 'content4');(2) com.john.hbatis.model.article Class:
Public classe Artigo {private int id; usuário privado usuário; título de sequência privada; conteúdo privado de string; // getters e setters são omitidos}(3) Adicionar IuserMapper:
List <Track> getArticlesByUserID (int id);
(4) Adicionar user.xml:
<ResultMap type = "com.john.hbatis.model.article" id = "articlelist"> <id column = "a_id" Property = "id" /> <resultado colun = "title" propriedade "title" /> <resultado column = "content" = "content" /> <associação "de" users "javatypy" /> <resultado "Usuário" Usuário "=" content " /> <associação" de "Users" /" column="id" property="id" /> <result column="name" property="name" /> <result column="address" property="address" /> </association> </resultMap> <select id="getArticlesByUserId" parameterType="int" resultMap="articleList"> select u.id, u.name, u.age, u.address, a.id a_id, a.title, a.content No artigo A Inner Junção Usuário U em A.User_id = U.id e U.id =#{id} </leclect>(5) Método de teste:
@Test public void getArticlesByUserIDTest () {SqlSession Session = sqlSessionFactory.opensssion (); tente {iUserMapper mapper = session.getMapper (iuserMapper.class); Lista <Artigo> Artigos = Mapper.GeticlesByUserID (1); para (Artigo: Artigos) {log.info ("{} - {}, autor: {}", artigo.getTitle (), artigo.getContent (), artigo.getUser (). getName ()); }} finalmente {session.close (); }} Apegado:
Além de definir o mapeamento de campos e atributos dentro da tag de associação, você também pode reutilizar o mapa resultante do usuário:
<Association Property = "User" javatype = "user" resultmap = "userList" />
2. Adicionado
Adicione o seguinte método à interface iuserMapper:
int adduser (usuário do usuário);
User.xml add:
<insert id = "adduser" parametertype = "user" usegeneratedkeys = "true" keyproperty = "id"> <!- useGeneratedKeys especifica a chave primária que o mybatis usa o banco de dados para gerá-lo automaticamente e preencher as propriedades especificadas pela KeyProperty. Se não for especificado, o objeto de retorno não pode obter o valor gerado -> inserir no usuário (nome, idade, endereço) valores (#{name},#{idade},#{endereço}) </insert>Método de teste:
@Test public void addUSerTest () {usuário do usuário = novo usuário ("Lucy", 102, "Happy District"); SQLSession Session = sqlSessionFactory.opensssion (); tente {iUserMapper mapper = session.getMapper (iuserMapper.class); int afetadoCount = mapper.adduser (usuário); session.Commit (); // O padrão não é enviado automaticamente. Chame session.getConnection (). GetAutocommit () para visualizar log.info ("{} novo registro foi inserido com sucesso cujo id: {}", afetado, user.getId ()); } finalmente {session.close (); }}3. Atualização
Método de adição de interface:
int updateUser (usuário do usuário);
User.xml add:
<update id = "updateUser" parametertype = "user"> update `user` set name =#{name}, idade =#{idade}, endereço =#{endereço} where id =#{id} </update>Método de teste:
@Test public void updateUsertest () {SqlSession Session = sqlSessionFactory.opensssion (); tente {iUserMapper mapper = session.getMapper (iuserMapper.class); Usuário do usuário = mapper.getUserById (8); user.setAddress ("Distrito Satisfeito"); int afetadoCount = mapper.updateUser (usuário); // Além dos atributos a serem modificados, outros atributos do usuário também devem ser atribuídos; caso contrário, esses atributos serão atualizados pelo banco de dados para o valor inicial (nulo ou 0, etc.). Você pode consultá -lo primeiro, mas isso aumentará a interação desnecessária com o banco de dados. As seguintes condições podem evitar esse problema. log.info ("contagem afetada: {}", afetada); session.Commit (); } finalmente {session.close (); }}4. Exclua
Método de adição de interface:
int deleteUser (int id);
User.xml add:
<delete id = "DeleteUser" ParameterType = "int"> excluir do `user` onde id =#{id} </lete>Método de teste:
@Test public void deLeteUsertest () {SQLSession Session = sqlSessionFactory.opensssion (); tente {iUserMapper mapper = session.getMapper (iuserMapper.class); int afetadoCount = mapper.DeleteUser (8); log.info ("contagem afetada: {}", afetada); session.Commit (); } finalmente {session.close (); }}