package net.csdn.jpa.enhancer; import javassist.CtClass; import javassist.CtMethod; import net.csdn.common.settings.Settings; import net.csdn.enhancer.BitEnhancer; /** * BlogInfo: WilliamZhu * Date: 12-7-2 * Time: 下午8:48 */ public class ClassMethodEnhancer implements BitEnhancer { private Settings settings; public ClassMethodEnhancer(Settings settings) { this.settings = settings; } @Override public void enhance(CtClass ctClass) throws Exception { enhanceModelMethods(ctClass); } private void enhanceModelMethods(CtClass ctClass) throws Exception { String entityName = ctClass.getName(); String simpleEntityName = ctClass.getSimpleName(); // count CtMethod count = CtMethod.make("public static long count() { return getJPAContext().jpql().count(\"" + entityName + "\"); }", ctClass); ctClass.addMethod(count); // count2 CtMethod count2 = CtMethod.make("public static long count(String query, Object[] params) { return getJPAContext().jpql().count(\"" + entityName + "\", query, params); }", ctClass); ctClass.addMethod(count2); // findAll CtMethod findAll = CtMethod.make("public static java.util.List findAll() { return getJPAContext().jpql().findAll(\"" + entityName + "\"); }", ctClass); ctClass.addMethod(findAll); // findById CtMethod findById = CtMethod.make("public static net.csdn.jpa.model.JPABase findById(Object id) { return getJPAContext().jpql().findById(" + entityName + ".class, id); }", ctClass); ctClass.addMethod(findById); // find CtMethod find = CtMethod.make("public static net.csdn.jpa.model.Model.JPAQuery find(String query, Object[] params) { return getJPAContext().jpql().find(\"" + entityName + "\", query, params); }", ctClass); ctClass.addMethod(find); // find CtMethod find2 = CtMethod.make("public static net.csdn.jpa.model.Model.JPAQuery find() { return getJPAContext().jpql().find(\"" + entityName + "\"); }", ctClass); ctClass.addMethod(find2); // all CtMethod all = CtMethod.make("public static net.csdn.jpa.model.Model.JPAQuery all() { return getJPAContext().jpql().all(\"" + entityName + "\"); }", ctClass); ctClass.addMethod(all); // delete CtMethod delete = CtMethod.make("public static int delete(String query, Object[] params) { return getJPAContext().jpql().delete(\"" + entityName + "\", query, params); }", ctClass); ctClass.addMethod(delete); // deleteAll CtMethod deleteAll = CtMethod.make("public static int deleteAll() { return getJPAContext().jpql().deleteAll(\"" + entityName + "\"); }", ctClass); ctClass.addMethod(deleteAll); // findOneBy CtMethod findOneBy = CtMethod.make("public static net.csdn.jpa.model.JPABase findOneBy(String query, Object[] params) { return getJPAContext().jpql().findOneBy(\"" + entityName + "\", query, params); }", ctClass); ctClass.addMethod(findOneBy); // create CtMethod create = CtMethod.make("public static net.csdn.jpa.model.JPABase create(java.util.Map params) { return getJPAContext().jpql().create(" + entityName + ".class, params); }", ctClass); ctClass.addMethod(create); // where CtMethod where = CtMethod.make("public static net.csdn.jpa.model.JPQL where(String cc){return getJPAContext().jpql(\"" + simpleEntityName + "\").where(cc);}", ctClass); ctClass.addMethod(where); // where2 CtMethod where2 = CtMethod.make("public static net.csdn.jpa.model.JPQL where(String cc,java.util.Map params){return getJPAContext().jpql(\"" + simpleEntityName + "\").where(cc,params);}", ctClass); ctClass.addMethod(where2); // select CtMethod select = CtMethod.make("public static net.csdn.jpa.model.JPQL select(String cc){return getJPAContext().jpql(\"" + simpleEntityName + "\").select(cc);}", ctClass); ctClass.addMethod(select); // joins CtMethod joins = CtMethod.make("public static net.csdn.jpa.model.JPQL joins(String cc){return getJPAContext().jpql(\"" + simpleEntityName + "\").joins(cc);}", ctClass); ctClass.addMethod(joins); // order CtMethod order = CtMethod.make("public static net.csdn.jpa.model.JPQL order(String cc){return getJPAContext().jpql(\"" + simpleEntityName + "\").order(cc);}", ctClass); ctClass.addMethod(order); // limit CtMethod limit = CtMethod.make("public static net.csdn.jpa.model.JPQL limit(int cc){return getJPAContext().jpql(\"" + simpleEntityName + "\").limit(cc);}", ctClass); ctClass.addMethod(limit); // offset CtMethod offset = CtMethod.make("public static net.csdn.jpa.model.JPQL offset(int cc){return getJPAContext().jpql(\"" + simpleEntityName + "\").offset(cc);}", ctClass); ctClass.addMethod(offset); CtMethod findWithSingleId = CtMethod.make("public static net.csdn.jpa.model.JPABase find(Integer cc){return getJPAContext().jpql(\"" + simpleEntityName + "\").find(cc);}", ctClass); ctClass.addMethod(findWithSingleId); CtMethod findWithMultiId = CtMethod.make("public static java.util.List find(java.util.List cc){return getJPAContext().jpql(\"" + simpleEntityName + "\").find(cc);}", ctClass); ctClass.addMethod(findWithMultiId); ctClass.defrost(); } }