この状況があります。 これは私のVillage.java
:Aspectアノテーションを使用して.ajから.javaへのInter-Type宣言を変換してください。
public class Village{
private Integer vid;
private String villageName;
private String district;
public Integer getVid() {
return vid;
}
public void setVid(Integer vid) {
this.vid = vid;
}
public String getVillageName() {
return villageName;
}
public void setVillageName(String villageName) {
this.villageName = villageName;
}
public String getDistrict() {
return district;
}
public void setDistrict(String district) {
this.district = district;
}
}
これは私のDao.java
インタフェースです:
public interface Dao<T> {
public void insert();
public void update();
public void delete();
}
これは私の側面Village_Dao.aj
(あなただけの静的メソッドのロジックを無視することができます)です。
import org.apache.ibatis.session.SqlSession;
import com.madx.finance.data.utils.persistence.Dao;
import com.madx.finance.data.utils.factory.ConnectionFactory;
public aspect Village_Dao {
declare parents: Village implements Dao<Village>;
public void Village.insert() {
Village.insertVillage(this);
}
public void Village.update() {
Village.updateVillage(this);
}
public void Village.delete() {
Village.deleteVillage(this.getVid());
}
public Village Village.getData() {
return Village.getDataVillage(this.getVid());
}
public static void Village.insertVillage(Village village) {
SqlSession session = ConnectionFactory.getSqlSessionFactory().openSession();
VillageMapper mapper = session.getMapper(VillageMapper.class);
mapper.insertVillage(village);
session.commit();
session.close();
}
public static void Village.updateVillage(Village village) {
SqlSession session = ConnectionFactory.getSqlSessionFactory().openSession();
VillageMapper mapper = session.getMapper(VillageMapper.class);
mapper.updateVillage(village);
session.commit();
session.close();
}
public static void Village.deleteVillage(Integer id) {
SqlSession session = ConnectionFactory.getSqlSessionFactory().openSession();
VillageMapper mapper = session.getMapper(VillageMapper.class);
mapper.deleteVillage(id);
session.commit();
session.close();
}
public static Village Village.getDataVillage(Integer id) {
SqlSession session = ConnectionFactory.getSqlSessionFactory().openSession();
VillageMapper mapper = session.getMapper(VillageMapper.class);
Village village = mapper.selectVillage(id);
session.close();
return village;
}
}
I Village_Dao.aj
を注釈付きバージョンVillage_Dao_Java.java
に変換すると、成功していません。 私はクラスをDaoを実装するように管理しましたが、メソッドを書き込むことはできません(挿入、更新はこのファイルに個別に削除してくださいVillage_Dao_Java.java
)。
これはVillage_Dao_Java.java
のバージョン(まだ完了していない)(私はこのlinkを読んで、私はそれがこのような場合のために働くことができませんでした)です:あなたが欲しい
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.DeclareParents;
import com.madx.finance.data.utils.persistence.Dao;
@Aspect
public class Village_Dao_Java {
@DeclareParents("com.madx.demo.Village")
private Dao<Village> implementedInterface;
}
はい、私はこれがまさに私が最近結んだ結論であることに同意します。私はすべてのJavaを維持しようとしていましたが、あなたが私に言ったように、この選択の背後にある本当の理由はありません、それは2つの方法論の比較の演習に過ぎませんでした。しかし、Javaでこれを行う方法はなく、 "この"問題が主な理由です。ありがとうございました! – madx