Revisar um ponto
Não entendeu essa frase antes:
UserMapper userMapper = sqlSession.getMapper (UserMapper.class);
Agora que entendi um pouco, é equivalente à implementação da interface userMapper . Como todo o UserMapper.xml deve ser registrado no Mybatis-config.xml , continue examinando o processo do código-fonte e verifique se alguns dos parâmetros incluem T.Class e sqlsession , e o sqlsession é criado com a leitura Mybatis-config.xml. Portanto, não é particularmente difícil entender como implementar essa interface.
UserMapper.class implementa reflexão através do nome da classe.
Conteúdo específico e outras lições devem continuar envolvidos.
Adicionar, excluir e modificar a interface e xml
- Cada xml precisa vincular o nome da interface ao id ,
- Se o parâmetro ou o tipo de resultado não for int ou nulo, será necessário preencher resultType e parameterType , o tipo precisará escrever o nome completo do pacote
- O parâmetro na instrução SQL é escrito como # {id}
- Adicione, exclua, modifique e envie transações , sqlsession.commit ();
<! - :: Usuário getUserById (int id); -> < selecione id = "getUserById" resultType = "com.ou.pojo.User" > SELECT * FROM mybatis.user WHERE id = # {id} </ selecione >
<! - int :: int insertUser (Usuário usuário); -> < insert id = "insertUser" parameterType = "com.ou.pojo.User" > INSERIR EM mybatis.user (id, nome de usuário, senha) VALUE (# {id}, # {nome de usuário}, # {pwd} ) </ inserir >
<! - int :: int updateUser (Usuário usuário); -> < update id = "updateUser" parameterType = "com.ou.pojo.User" > UPDATE mybatis.user SET nome de usuário = # {nome de usuário}, pwd = # {pwd} WHERE id = # {id} </ update >
Passando parâmetros pelo Mapa:
Como o usuário Pojo pode ter 100 campos, se você desejar modificar apenas 10 quando modificado, se o tipo de parâmetro ainda for Usuário , o parâmetro ainda precisará ser um novo Usuário (p1 p2 .....)
<! - int: int updateUserByMap (mapa Map <String, Object> mapa); -> < update id = "updateUserByMap" parameterType = "Map" > ATUALIZAÇÃO mybatis.user SET pwd = # {pwd} WHERE id = # {id} </ update >
O tipo de parâmetro é Map , a instrução sql é a mesma que a original
Teste público nulo testUpdateByMap () { SqlSession sqlSession = MybatisUtilis.getsqlsession (); Mapeador de UserMapper = sqlSession.getMapper ( classe UserMapper. ); Map <String, Object> map = new HashMap <String, Object> (); map.put ( "id", 4 ); map.put ( "pwd", "4321" ); mapper.updateUserByMap (mapa); sqlSession.commit (); sqlSession.close (); }
É um pouco diferente quando usado, cria um novo objeto Map <String, Object> e, em seguida, coloca o valor-chave