Oi gente!!
Estou com uma dúvida bem básica, vocês devem saber me responder!!
Eu fiz meu mapeamento SQL para Face, que é uma tabela do meu banco de dados.
O Face.xml ficou assim:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE sqlMap PUBLIC "-//iBATIS.com//DTD SQL Map 2.0//EN" "http://www.ibatis.com/dtd/sql-map-2.dtd">
<sqlMap namespace="Face">
<typeAlias alias="Face"
type="projeto.vo.Face"/>
<insert id="insertFace" parameterClass="Face">
<selectKey keyProperty="id" resultClass="int">
SELECT nextVal('face_id_seq')
</selectKey>
INSERT INTO Face (
id,
x,
y,
w,
h,
nome,
info,
endereco
) VALUES(
#id#,
#x#,
#y#,
#w#,
#h#,
#nome#,
#info#,
#endereco#
)
</insert>
<update id="updateFace">
update Face set
x = #x:integer#
y = #y:integer#
w = #w:integer#
h = #h:intefer#
nome = #nome:varchar#
info = #info:varchar#
endereco = #endereco:varchar#
where id = #id#
</update>
<delete id="deleteFace">
DELETE from Face
where id = #id#
</delete>
<select id="recuperaFacePorId" resultClass="Face">
SELECT
id,
x,
y,
w,
h,
nome,
info,
endereco
FROM Face
WHERE id = #value#
</select>
<select id="recuperaFacePorNome" resultClass="Face">
SELECT
id,
x,
y,
w,
h,
nome,
info,
endereco
FROM Face
WHERE nome = #value#
</select>
<select id="recuperaFacePorEndereco" resultClass="Face">
SELECT
id,
x,
y,
w,
h,
nome,
info,
endereco
FROM Face
WHERE endereco = #value#
</select>
<!-- falta o mapeamento para a jointable.. -->
</sqlMap>
Minha implementação do DAO é a seguinte:
[code]
public class FaceSqlMapDao extends SqlMapDaoTemplate implements FaceDao{
public FaceSqlMapDao(DaoManager daoManager) {
super(daoManager);
}
public int deleteFace(Integer id) {
return delete("Face.deleteFace", id);
}
public int deleteFace(Face face) {
return delete(face.getId());
}
public Integer insertFace(Face face) {
return (Integer) insert("Face.insertFace", face);
}
public int updateFace(Face face) {
return update("Face.updateFace", face);
}
public Face recuperarPorId(Integer id) {
return (Face) queryForObject("Face.recuperaFacePorId", id);
}
public String retornaNomeDeFaceComEndereco(String endereco) {
Face face = (Face) queryForObject("Face.recuperaFacePorEndereco", endereco);
return face.getNome();
}
public Face recuperarPorNome(String nome) {
return (Face) queryForObject("Face.recuperaFacePorNome", nome);
}
}[/code]
Eu tenho duas dúvidas:
a primeira é quanto ao método
[b]public int deleteFace(Face face) {
return delete(face.getId());
}[/b]
Está dando erro nesse método dizendo que
"The method delete(String) in the type SqlMapDaoTemplate is not applicable for the arguments
(Integer). Teria que ser deleteFace?
Na verdade, a segunda dúvida faz parte da primeira. O exemplo que eu achei no livro de iBatis usa “delete” no mapeamento SQL ao invés de “deleteFace”, por exemplo, como eu usei… então eu não sei quando eu tenho que usar delete somente e quando tem que usar deleteFace…
Alguem pode me ajudar??
Obrigada!!