增加自动写入application-Context.xml功能,把生成的dao与service对应的spring配置文件写入里面。
经常用ibator工具生成VO和DAO,但是有个麻烦的就是没有manager类,昨天有空手工写了一个根据DAO和DAOImp生成Manager和ManagerImpl的工具,工具还可以把通过数据库生成的xml文件里的DATE类型替换成TIMESTAMP,因为xml里的DATE类型只有日期,没分秒,Example里的好多Date类型,都是java.sql.Date也是没有分秒的。故全部替换成java.util.Date,这样就省去不好功夫了。一键全部生成。
package test; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.HashMap; import java.util.Map; /** * @Description: ibator补丁工具,生成Manager类,替换xml,java里的Date数据类型 * @author: 尹滨 * @E-mail: yinbinhome@163.com * @date 2011-3-7 上午09:55:26 * @version 2.0 * */ public class IbatorConfig { /** * @param args */ public static void main(String[] args) { String path_dao="D:\\workspace\\rcportalTEST\\src\\com\\rc\\portal\\dao\\impl"; String path_sqlmap="D:\\workspace\\rcportalTEST\\src\\com\\rc\\portal\\vo\\sqlmap"; String path_vo="D:\\workspace\\rcportalTEST\\src\\com\\rc\\portal\\vo"; String path_service="D:\\workspace\\rcportalTEST\\src\\com\\rc\\portal\\service\\impl"; String path_app_dao="D:\\workspace\\rcportalTEST\\conf_spring\\applicationContext-dao.xml"; String path_app_service="D:\\workspace\\rcportalTEST\\conf_spring\\applicationContext-service.xml"; new IbatorConfig().start(path_dao,path_sqlmap,path_vo,path_service,path_app_dao,path_app_service); } public void start(String daopath,String sqlpath,String vopath,String serivepath,String app_dao,String app_service){ startDo(daopath); startDo(sqlpath); startDo(vopath); startDo2(daopath,serivepath,app_dao,app_service); } /** * 按目录查找文件, * 1.换文件中的指定字符串 * 2.生成Manager接口 * 3.生成ManagerImpl类 */ public void startDo(String path){ File file=new File(path); File[] files = file.listFiles(); int i=0; System.out.println("文件路径:"+path); if(files!=null && files.length>0){ for(File f:files){ System.out.print("\n第 "+(++i)+" 个文件"); String filename=f.getName(); if(filename.toLowerCase().indexOf("_sqlmap.xml")>0){ System.out.println("替换sqlMap.xml文件开始......"); String fileALLname=f.getPath(); readFileByLines(fileALLname,"DATE","TIMESTAMP"); }else if(filename.toLowerCase().indexOf("example.java")>0){ System.out.println("替换Example.java文件开始......"); String fileALLname=f.getPath(); readFileByLines(fileALLname,"java.sql.Date","Date"); }else if(filename.toLowerCase().indexOf("daoimpl.java")>0){ System.out.println("替换DAO.java文件开始......"); String fileALLname=f.getPath(); chgDAOImpl(fileALLname); }else if(filename.toLowerCase().indexOf("dao.java")>0){ System.out.println("生成Manager.java接口文件开始......"); addManager(f); System.out.println("生成ManagerImple.java接口文件开始......"); File f1=new File(f.getPath()); newManagerImpl(f1); } } } } /** * 往application.xml里追加dao与service的bean * @param dao_path dao的文件夹 * @param service_path sevice文件夹 * @param app_dao_path application-dao.xml 全路径 * @param app_service_path application-service.xml 全路径 */ public void startDo2(String dao_path,String service_path,String app_dao_path,String app_service_path){ File file=new File(dao_path); File[] files = file.listFiles(); int i=0; System.out.println("文件路径:"+dao_path); if(files!=null && files.length>0){ for(File f:files){ System.out.print("\n第 "+(++i)+" 个文件"); String filename=f.getName(); if(filename.toLowerCase().indexOf("daoimpl.java")>0){ System.out.println("开始生成dao的bean......"); String fileALLname=f.getPath(); String daobean=getDaoBean(fileALLname); daobean+="\n"; daobean+="</beans>"; readFileByLines(app_dao_path,"</beans>",daobean); } } } File file2=new File(service_path); File[] files2 = file2.listFiles(); int i2=0; System.out.println("文件路径:"+service_path); if(files2!=null && files2.length>0){ for(File f:files2){ System.out.print("\n第 "+(++i2)+" 个文件"); String filename=f.getName(); if(filename.toLowerCase().indexOf("managerimpl.java")>0){ System.out.println("开始生成service的bean......"); String fileALLname=f.getPath(); String servicebean=getServiceBean(fileALLname); servicebean+="\n"; servicebean+="</beans>"; readFileByLines(app_service_path,"</beans>",servicebean); } } } } /** * 按行读取,替换指定字符串 */ public void readFileByLines(String fileName,String oldstring,String newstring) { File file = new File(fileName); BufferedReader reader = null; StringBuffer sb=new StringBuffer(""); try { reader = new BufferedReader(new FileReader(file)); String tempString = null; int line = 1; // 一次读入一行,直到读入null为文件结束 while ((tempString = reader.readLine()) != null) { line++; String temp=tempString.replace(oldstring, newstring); sb.append(temp+"\n"); } reader.close(); } catch (IOException e) { e.printStackTrace(); } finally { if (reader != null) { try { reader.close(); } catch (IOException e1) { } } } //System.out.println(sb); appendMethodB(fileName,sb.toString()); } /** * 按给定内容,更新文件内容 */ public void appendMethodB(String fileName, String content) { try { //打开一个写文件器,构造函数中的第二个参数true表示以追加形式写文件 FileWriter writer = new FileWriter(fileName, false); writer.write(content); writer.close(); } catch (IOException e) { e.printStackTrace(); } } /** * 更新DAO为SqlMapClient增加setter getter * @param fileName */ public void chgDAOImpl(String fileName){ File file = new File(fileName); BufferedReader reader = null; StringBuffer sb=new StringBuffer(""); try { reader = new BufferedReader(new FileReader(file)); String tempString = null; int line = 1; // 一次读入一行,直到读入null为文件结束 while ((tempString = reader.readLine()) != null) { line++; if(tempString.toLowerCase().indexOf("private sqlmapclient sqlmapclient;")>0){ sb.append(tempString+"\n\n"); sb.append(" public void setSqlMapClient(SqlMapClient sqlMapClient) {\n"+ " this.sqlMapClient = sqlMapClient;\n"+ " }\n\n"+ " public SqlMapClient getSqlMapClient() {\n"+ " return sqlMapClient;\n"+ " }\n"); }else{ sb.append(tempString+"\n"); } } reader.close(); } catch (IOException e) { e.printStackTrace(); } finally { if (reader != null) { try { reader.close(); } catch (IOException e1) { } } } //System.out.println(sb); appendMethodB(fileName,sb.toString()); } /** * 增加Manager接口 * @param fileIn */ public void addManager(File fileIn){ BufferedReader reader = null; StringBuffer sb=new StringBuffer(""); try { reader = new BufferedReader(new FileReader(fileIn)); String tempString = null; int line = 1; // 一次读入一行,直到读入null为文件结束 while ((tempString = reader.readLine()) != null) { line++; if(tempString.indexOf("interface")>0 && tempString.indexOf("DAO")>0){ String temp=tempString.replace("DAO", "Manager"); sb.append(temp+"\n"); }else if(tempString.indexOf("package")!=-1){ String temp=tempString.replace("dao", "service"); sb.append(temp+"\n"); }else{ sb.append(tempString+"\n"); } } reader.close(); } catch (IOException e) { e.printStackTrace(); } finally { if (reader != null) { try { reader.close(); } catch (IOException e1) { } } } //System.out.println(sb); String name=fileIn.getName().replace("DAO", "Manager"); String newFilename=fileIn.getParent().replace("dao", "service")+"\\"+name; appendMethodB(newFilename,sb.toString()); } /** * 更改DAO的名字 * @param name * @return */ public String chgName(String name){ String firstC=name.substring(0, 1).toLowerCase(); String otherC=name.substring(1); return firstC+otherC; } /** * 第一个字母大写 * @param word * @return */ private String firstWordToUpper(String word) { String first = word.substring(0, 1); return first.toUpperCase() + word.substring(1); } /** * setter getter * @param name */ public String getset(String name){ StringBuffer sb=new StringBuffer(""); sb.append(" public void set"+name+"("+name+" "+chgName(name)+"){\n"); sb.append(" this."+chgName(name)+"="+chgName(name)+";\n"); sb.append(" }\n"); sb.append(" public "+name+" get"+name+"("+name+" "+chgName(name)+"){\n"); sb.append(" return "+chgName(name)+";\n"); sb.append(" }\n"); return sb.toString(); } /** * 取方法名 * @param ss * @return */ public String getMethodName(String ss){ int s1=ss.indexOf("("); String temp=ss.substring(0,s1); int s2=temp.lastIndexOf(" "); return (ss.substring(s2,s1)); } /** * 得到变量名字的串 * @param line * @return */ public String getParam(String line){ int s1=line.indexOf("("); int s2=line.indexOf(")"); String params=line.substring(s1+1,s2); String p1=""; String p2=""; String paramStr=""; if(params.indexOf(",")>0){ int s3=params.indexOf(" "); int s4=params.indexOf(","); int s5=params.lastIndexOf(" "); p1=params.substring(s3,s4); p2=params.substring(s5); paramStr="("+p1+","+p2+")"; }else{ int s6=params.lastIndexOf(" "); p1=params.substring(s6); paramStr="("+p1+")"; } return paramStr; } /** * 更具接口方法声明生成方法体 * @param line * @param daoName * @return */ public String getMethod(String line,String daoName){ String methodname=getMethodName(line); StringBuffer sb=new StringBuffer(""); if(line.indexOf("SQLException;")>0 && line.indexOf("import")<0){ if(line.indexOf("void")>0 && line.indexOf(";")>0){ String temp=line.replace(";", "{\n"); sb.append(" public "+temp); sb.append(" "+chgName(daoName)+"."+methodname+getParam(line)+";\n"); sb.append(" }\n\r"); }else{ String temp=line.replace(";", "{\n"); sb.append(" public "+temp); sb.append(" return "+chgName(daoName)+"."+methodname+getParam(line)+";\n"); sb.append(" }\n\r"); } } return sb.toString(); } /** * 传入DAO接口的File,生成ManagerImpl * @param file */ public void newManagerImpl(File file){ String oldname=file.getName(); int s1=oldname.indexOf("."); oldname=oldname.substring(0,s1); String name=oldname.replace("DAO", "ManagerImpl"); String filename=file.getParent().replace("dao", "service")+"\\"+name+".java"; file.getName(); BufferedReader reader = null; StringBuffer sb=new StringBuffer(""); try { reader = new BufferedReader(new FileReader(file)); String tempString = null; int line = 1; // 一次读入一行,直到读入null为文件结束 while ((tempString = reader.readLine()) != null) { line++; if(tempString.indexOf("interface")>0){ sb.append(""); String temp=tempString.replace("interface", "class"); temp=temp.replace(oldname, name); temp=temp.replace("{", ""); temp=temp+" implements "+oldname.replace("DAO", "Manager")+" {\n"; sb.append(temp); sb.append("\n"); sb.append(" private "+oldname+" "+chgName(oldname)+";\n\n"); sb.append(" public "+name+"() {\n"); sb.append(" super();\n"); sb.append(" }\n"); sb.append(getset(oldname)); }else if(tempString.indexOf("SQLException;")>0 && tempString.indexOf("import")<0){ String methodBody=getMethod(tempString,oldname); sb.append(methodBody); }else if(tempString.indexOf("package")!=-1){ String tempIMP=tempString.replace("package", "import"); tempIMP=tempIMP.replace("service", "dao"); tempIMP=tempIMP.replace(";", ".")+oldname+";"; String temp=tempString.replace("dao", "service"); sb.append(temp+"\n\n"); sb.append(tempIMP); }else{ sb.append(tempString+"\n"); } } reader.close(); } catch (IOException e) { e.printStackTrace(); } finally { if (reader != null) { try { reader.close(); } catch (IOException e1) { } } } appendMethodB(filename,sb.toString()); } public void addSpringDao(String filename){ } public String getDaoModel(){ String daoM= " <bean id=\"#id#\" class=\"#classname#\">\n"+ " <property name=\"sqlMapClient\" ref=\"sqlMapClient\" />\n"+ " </bean>\n"; return daoM; } public String getServiceModel(){ String serviceM= " <bean id=\"#id#\" class=\"#classname#\">\n"+ " <property name=\"#daoname#\" ref=\"#daoref#\" />\n"+ " </bean>\n"; return serviceM; } /** * 取类得全路径名,dao属性名 * @param fileName * @param oldstring * @param newstring */ public Map getDaoAllName(String fileName) { String daoname=""; //String name=""; Map<String,String> map=new HashMap<String,String>(); File file = new File(fileName); BufferedReader reader = null; StringBuffer sb=new StringBuffer(""); try { reader = new BufferedReader(new FileReader(file)); String tempString = null; int line = 1; // 一次读入一行,直到读入null为文件结束 while ((tempString = reader.readLine()) != null) { line++; if(tempString.indexOf("package")!=-1){ daoname=tempString.substring(tempString.indexOf("package")+7,tempString.indexOf(";")).trim()+"."; }else if(tempString.indexOf("public class")!=-1){ daoname+=tempString.substring(tempString.indexOf("public class")+12,tempString.indexOf("implements")).trim(); } } reader.close(); } catch (IOException e) { e.printStackTrace(); } finally { if (reader != null) { try { reader.close(); } catch (IOException e1) { } } } String oldname=file.getName(); int s1=oldname.indexOf("."); oldname=oldname.substring(0,s1); String daoAttrname=this.chgName(oldname); daoAttrname=daoAttrname.substring(0,daoAttrname.indexOf("Impl")); map.put("daoname", daoname); map.put("daoAttrname", daoAttrname); return map; } /** * 取service类全路径名和dao属性的名字 * @param fileName * @return */ public Map getServiceAllName(String fileName) { String servicename=""; String daoname=""; Map<String,String> map=new HashMap<String,String>(); File file = new File(fileName); BufferedReader reader = null; StringBuffer sb=new StringBuffer(""); try { reader = new BufferedReader(new FileReader(file)); String tempString = null; int line = 1; // 一次读入一行,直到读入null为文件结束 while ((tempString = reader.readLine()) != null) { line++; if(tempString.indexOf("package")!=-1){ servicename=tempString.substring(tempString.indexOf("package")+7,tempString.indexOf(";")).trim()+"."; }else if(tempString.indexOf("public class")!=-1){ servicename+=tempString.substring(tempString.indexOf("public class")+12,tempString.indexOf("implements")).trim(); }else if(tempString.indexOf("private")>0 && tempString.indexOf("DAO")>0){ daoname=tempString.substring(tempString.indexOf("DAO ")+4,tempString.indexOf(";")).trim(); } String temp=tempString; } reader.close(); } catch (IOException e) { e.printStackTrace(); } finally { if (reader != null) { try { reader.close(); } catch (IOException e1) { } } } String oldname=file.getName(); int s1=oldname.indexOf("."); oldname=oldname.substring(0,s1); String serviceAttrname=this.chgName(oldname); serviceAttrname=serviceAttrname.substring(0,serviceAttrname.indexOf("Impl")); map.put("servicename", servicename); map.put("daoname", daoname); map.put("serviceAttrname", serviceAttrname); return map; } /** * 生成dao bean * @param filename * @return */ public String getDaoBean(String filename){ Map<String,String> map=getDaoAllName(filename); String daoname=map.get("daoname"); String daoAttrname=map.get("daoAttrname"); String daobean=getDaoModel(); daobean=daobean.replace("#classname#", daoname); daobean=daobean.replace("#id#", daoAttrname); return daobean; } /** * 生成service bean * @param filename * @return */ public String getServiceBean(String filename){ Map<String,String> map=getServiceAllName(filename); String servicename=map.get("servicename"); String daoname=map.get("daoname"); String serviceAttrname=map.get("serviceAttrname"); String servicebean=getServiceModel(); servicebean=servicebean.replace("#classname#", servicename); servicebean=servicebean.replace("#id#", serviceAttrname); servicebean=servicebean.replace("#daoname#", daoname); servicebean=servicebean.replace("#daoref#", daoname); return servicebean; } }
您还没有登录,请您登录后再发表评论
Abator是一款基于Java的开源工具,它主要用于简化数据库与XML之间的映射转换工作。这款工具在IBatis(现为MyBatis)框架中扮演着重要角色,能够帮助开发者半自动化地生成SQL映射文件、实体类以及DAO接口,极大地提高...
《Ibatis代码自动生成工具—Abator的应用详解》 Ibatis作为一款轻量级的Java持久层框架,因其灵活的SQL映射机制深受开发者喜爱。然而在实际开发中,面对大量的数据库表,手动编写对应的Java实体类、Mapper接口以及...
Abator 是一个强大的工具,主要用于简化基于 Apache iBATIS 的数据库开发工作。它是一个自动生成 Java 源代码、SQL 映射文件以及 MyBatis 配置文件的工具,大大提高了开发效率。这个“abator-插件包”特别为 ...
Abator 是一个强大的工具,主要用于自动化Java开发过程中的部分任务,特别是针对数据库操作的代码生成。这个工具基于MyBatis框架,能够自动生成Java Bean类和对应的iBatis SQL Map文件,大大减轻了开发者手动编写...
Abator 是一个基于 Apache License 的开源工具,用于简化 MyBatis 框架中的 SQL 映射文件和 DAO 接口的生成工作。它通过自动化的代码生成,帮助开发者快速构建项目的数据访问层,减少手动编写重复代码的时间,提高...
Abator 是一个基于 Java 的代码生成工具,它简化了数据库模型到 Java 代码的转换过程,极大地提高了开发效率。在Java开发中,特别是在企业级应用中,数据访问层(DAO)的代码通常需要大量手动编写,这既费时又容易...
Abator则是iBatis项目的一部分,是一个强大的自动化代码生成工具,能够帮助开发者自动生成Java实体类、Mapper接口及XML配置文件等,极大地提高了开发效率。本教程将详细介绍如何使用Abator进行自动代码生成。 1. **...
- **定义**:Abator是一款针对iBATIS框架的专业代码生成工具,它能够显著减少开发人员在使用iBATIS时需要手动编写的代码量,尤其是针对数据访问对象(DAO)、数据传输对象(DTO)以及SQL映射文件等的生成。...
Abator 是一个强大的工具,专为 iBatis 数据库映射框架设计,用于自动生成 Java 源代码、SQL 映射文件以及相关的构建文件。它简化了开发过程,减轻了开发者手动编写重复代码的工作负担。这个离线安装包允许你在没有...
Abator 是一个强大的工具,专为 iBATIS 框架设计,用于自动化代码生成,减轻开发人员在数据访问层的编码负担。通过Abator,你可以快速生成与数据库表对应的各类文件,包括SqlMap配置文件、Java Bean模型、主键模型、...
Abator就是这样一个工具,它是一个自动化代码生成器,能够自动生成iBatis所需的SQL映射文件、DAO接口、实体类等,大大减轻了开发工作量。本教程将介绍如何在Eclipse中配置并使用无注释版的Abator插件。 首先,我们...
`Abator`是`Ibatis`项目的一部分,是一个代码生成工具,能自动生成基于`Ibatis`的数据访问层(DAO)和模型(Model)代码,大大提高了开发效率。 在`Ibatis`中,数据库操作通过SQL映射文件实现,这些文件包含了SQL...
本篇文章将详细介绍如何使用Abator工具搭建基于Ibatis的DAO框架。 Abator是一款自动化工具,它可以自动生成Java代码和SQL映射文件,大大简化了开发过程。下面我们将分步骤解析如何利用Abator来创建Ibatis DAO框架。...
### IBatis-Abator插件自动生成代码和配置的方法 #### 概述 在软件开发过程中,为了提高开发效率和减少重复性工作,自动化工具变得越来越重要。其中,代码生成工具是开发人员不可或缺的好帮手之一。本文将详细介绍...
abator是ibatis的自动生成文档的工具插件,而ibatis则是用于持久层类似Hibernate,但可以手动写sql, 使得我们的工作更加便捷。 附件中包括使用说明文档和DEMO参考。适合初学者
Abator 是一个基于 Apache License 的开源项目,它是一款强大的代码生成工具,主要用于简化基于 MyBatis 框架的数据库模型、DAO 接口、Mapper XML 文件以及 Service 层代码的自动化生成工作,大大提高了开发效率。...
我相信现在很多人想用abator的话已经不容易了,因为高版本的eclipse安装不了abator的插件。 如果你现在还用ibatis的,我这个是一个abator的工程,打开后配置abatorConfig.xml文件之后找到src->org.apache.ibatis....
"IBATIS视频入门 abator代码生成器" 这个标题指出,这是一份关于学习IBATIS框架的初级教程,特别关注的是其代码生成工具——Abator。IBATIS是一个开源的Java框架,它允许开发人员将SQL语句直接集成到Java代码中,以...
abator.jar ibatis的一个插件,用于将数据库当中的表结构转换成java bean类和对应的sqlmap文件。
Abator 插件是针对 iBatis 框架的一个自动化工具,它的主要功能是帮助开发者自动生成与 iBatis 相关的各种代码,从而提高开发效率,减少手动编写重复代码的工作量。iBatis 是一个优秀的 Java 数据库访问框架,它提供...
相关推荐
Abator是一款基于Java的开源工具,它主要用于简化数据库与XML之间的映射转换工作。这款工具在IBatis(现为MyBatis)框架中扮演着重要角色,能够帮助开发者半自动化地生成SQL映射文件、实体类以及DAO接口,极大地提高...
《Ibatis代码自动生成工具—Abator的应用详解》 Ibatis作为一款轻量级的Java持久层框架,因其灵活的SQL映射机制深受开发者喜爱。然而在实际开发中,面对大量的数据库表,手动编写对应的Java实体类、Mapper接口以及...
Abator 是一个强大的工具,主要用于简化基于 Apache iBATIS 的数据库开发工作。它是一个自动生成 Java 源代码、SQL 映射文件以及 MyBatis 配置文件的工具,大大提高了开发效率。这个“abator-插件包”特别为 ...
Abator 是一个强大的工具,主要用于自动化Java开发过程中的部分任务,特别是针对数据库操作的代码生成。这个工具基于MyBatis框架,能够自动生成Java Bean类和对应的iBatis SQL Map文件,大大减轻了开发者手动编写...
Abator 是一个基于 Apache License 的开源工具,用于简化 MyBatis 框架中的 SQL 映射文件和 DAO 接口的生成工作。它通过自动化的代码生成,帮助开发者快速构建项目的数据访问层,减少手动编写重复代码的时间,提高...
Abator 是一个基于 Java 的代码生成工具,它简化了数据库模型到 Java 代码的转换过程,极大地提高了开发效率。在Java开发中,特别是在企业级应用中,数据访问层(DAO)的代码通常需要大量手动编写,这既费时又容易...
Abator则是iBatis项目的一部分,是一个强大的自动化代码生成工具,能够帮助开发者自动生成Java实体类、Mapper接口及XML配置文件等,极大地提高了开发效率。本教程将详细介绍如何使用Abator进行自动代码生成。 1. **...
- **定义**:Abator是一款针对iBATIS框架的专业代码生成工具,它能够显著减少开发人员在使用iBATIS时需要手动编写的代码量,尤其是针对数据访问对象(DAO)、数据传输对象(DTO)以及SQL映射文件等的生成。...
Abator 是一个强大的工具,专为 iBatis 数据库映射框架设计,用于自动生成 Java 源代码、SQL 映射文件以及相关的构建文件。它简化了开发过程,减轻了开发者手动编写重复代码的工作负担。这个离线安装包允许你在没有...
Abator 是一个强大的工具,专为 iBATIS 框架设计,用于自动化代码生成,减轻开发人员在数据访问层的编码负担。通过Abator,你可以快速生成与数据库表对应的各类文件,包括SqlMap配置文件、Java Bean模型、主键模型、...
Abator就是这样一个工具,它是一个自动化代码生成器,能够自动生成iBatis所需的SQL映射文件、DAO接口、实体类等,大大减轻了开发工作量。本教程将介绍如何在Eclipse中配置并使用无注释版的Abator插件。 首先,我们...
`Abator`是`Ibatis`项目的一部分,是一个代码生成工具,能自动生成基于`Ibatis`的数据访问层(DAO)和模型(Model)代码,大大提高了开发效率。 在`Ibatis`中,数据库操作通过SQL映射文件实现,这些文件包含了SQL...
本篇文章将详细介绍如何使用Abator工具搭建基于Ibatis的DAO框架。 Abator是一款自动化工具,它可以自动生成Java代码和SQL映射文件,大大简化了开发过程。下面我们将分步骤解析如何利用Abator来创建Ibatis DAO框架。...
### IBatis-Abator插件自动生成代码和配置的方法 #### 概述 在软件开发过程中,为了提高开发效率和减少重复性工作,自动化工具变得越来越重要。其中,代码生成工具是开发人员不可或缺的好帮手之一。本文将详细介绍...
abator是ibatis的自动生成文档的工具插件,而ibatis则是用于持久层类似Hibernate,但可以手动写sql, 使得我们的工作更加便捷。 附件中包括使用说明文档和DEMO参考。适合初学者
Abator 是一个基于 Apache License 的开源项目,它是一款强大的代码生成工具,主要用于简化基于 MyBatis 框架的数据库模型、DAO 接口、Mapper XML 文件以及 Service 层代码的自动化生成工作,大大提高了开发效率。...
我相信现在很多人想用abator的话已经不容易了,因为高版本的eclipse安装不了abator的插件。 如果你现在还用ibatis的,我这个是一个abator的工程,打开后配置abatorConfig.xml文件之后找到src->org.apache.ibatis....
"IBATIS视频入门 abator代码生成器" 这个标题指出,这是一份关于学习IBATIS框架的初级教程,特别关注的是其代码生成工具——Abator。IBATIS是一个开源的Java框架,它允许开发人员将SQL语句直接集成到Java代码中,以...
abator.jar ibatis的一个插件,用于将数据库当中的表结构转换成java bean类和对应的sqlmap文件。
Abator 插件是针对 iBatis 框架的一个自动化工具,它的主要功能是帮助开发者自动生成与 iBatis 相关的各种代码,从而提高开发效率,减少手动编写重复代码的工作量。iBatis 是一个优秀的 Java 数据库访问框架,它提供...