经常用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; /** * @Description: ibator补丁工具,生成Manager类,替换xml,java里的Date数据类型 * @author: 尹滨 * @E-mail: yinbinhome@163.com * @date 2011-3-7 上午09:55:26 * @version 1.0 * */ public class IbatorConfig { /** * @param args */ public static void main(String[] args) { String path="D:\\workspace\\portal\\src\\com\\bfb\\portal\\vo\\ab"; new IbatorConfig().start(path); } /** * 按目录查找文件, * 1.换文件中的指定字符串 * 2.生成Manager接口 * 3.生成ManagerImpl类 */ public void start(String path){ File file=new File(path); File[] files = file.listFiles(); int i=0; int j=0; int m=0; int n=0; 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); } } } } /** * 按行读取,替换指定字符串 */ 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{ 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()+"\\"+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()+"\\"+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{ 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()); } }
您还没有登录,请您登录后再发表评论
标题 "ibatis自动生成工具ibator及配置文件示例" 提到的是关于iBatis的自动化工具ibator的使用和配置。iBatis是一个优秀的Java持久层框架,它允许开发者将SQL语句直接写在XML配置文件中,使得数据库操作与业务逻辑...
而IBATOR则在此基础上,增加了代码生成器的功能,能够自动生成SQL映射文件、DAO接口和其实现类,大大提升了开发效率。 在实际开发过程中,使用IBATOR可以遵循以下步骤: 1. **环境配置**:首先,你需要在项目中...
ibator-huoniao通过它你可以通过配置少量参数,通过一键生成dao层的全部文件,能够应付对dao层的所有操作 产物包括: 1. pojo文件 2. dao接口类 3. dao接口实现类文件 4. ibatis sql map文件 5. 数据库查询时...
"mybatis根据数据库表自动生成SQL、实体类、mapper文件工具"就是这样一个解决方案,它基于Eclipse集成开发环境,特别适用于使用SSM(Spring、SpringMVC、MyBatis)框架的项目。 首先,MyBatis是一个优秀的持久层...
为了解决这个问题,MyBatis提供了ibator,它是一个代码生成器,能够根据数据库表自动生成实体类、Mapper接口、Mapper XML文件以及对应的DAO层实现类,大大减轻了开发人员的工作负担。 首先,让我们了解如何安装...
Ibator是MyBatis的自动化工具,它能够根据数据库表结构自动生成Java实体类、Mapper接口及XML配置文件等,从而快速构建基于Ibatis的数据访问层。Ibator 1.2.1是其一个稳定版本,包含了多项改进和优化,使得代码生成...
Ibator是iBATIS(现在已经演变为MyBatis)的一个扩展,它能够根据数据库表结构自动生成Java源代码,包括DTO(Data Transfer Objects)、DAO(Data Access Object)类以及对应的XML映射文件,大大减少了手动编写这些...
开源ibator什么xml和pojo的时候,经常会带一些讨厌的注释还有一些没用的ibatorgenerator等的,我改了它的源代码,弄了个干净的ibator
Ibator is a code generator for iBATIS. Ibator will introspect a database table (or many tables) and will generate iBATIS artifacts that can be used to access the table(s). This abates some of the ...
这些工具能够通过读取数据库的表结构信息,自动创建对应的Java实体类(Entity)、Mapper接口及XML配置文件、DAO接口及实现类、以及Service接口和实现类。DTO(Data Transfer Object)对象则用于在服务层和表现层之间...
而iBATOR则是iBATIS的扩展,它通过简单的配置,可以根据数据库中的表结构自动化地生成与之对应的Java模型类、DAO接口和Mapper XML文件,使得开发过程更加高效。 iBATOR的使用通常涉及到以下几个关键知识点: 1. **...
完成配置后,你可以选择要操作的数据库和表,Ibator会自动生成相应的Java类和MyBatis相关的XML文件。对于每个表,它会生成一个实体类,包含表中的所有字段,以及对应的getter和setter方法。同时,还会生成一个Mapper...
首先,ibator是一个基于Mybatis的代码生成工具,它可以自动生成Java实体类、Mapper接口和XML配置文件,极大地提高了开发效率。在本例中,我们关注的是"ibator_3.0.6.full mybatis 代码生成器插件.zip"这个压缩包,它...
Ibator,全称“Introspected Table Abstraction”,是Apache MyBatis框架的一个子项目,它提供了一个代码生成器,能够自动生成JavaBean、Mapper接口和XML配置文件,大大减少了开发者手动编写这些重复代码的工作量。...
它的核心功能是根据数据库表结构自动生成Java源代码,包括Model类、Mapper接口和XML配置文件,帮助开发者快速构建基于Ibatis的数据访问层。 Ibatis是一个轻量级的持久层框架,它不同于ORM(对象关系映射)框架如...
`ibator`(IntelliJ IDEA的iBATIS Generator的Eclipse版本)是一款强大的数据库代码自动生成工具,它能够帮助开发者快速地生成Java持久层代码,包括实体类、Mapper接口及XML配置文件等,大大提高了开发效率。...
修改完毕后,通过右键点击`ibatorConfig.xml`,选择`Generate iBatis Artifacts`,Ibator将自动生成包括模型类、XML映射文件和DAO接口在内的相关代码。 ibatorConfig.xml的注释提供了详细的配置选项说明,包括...
【ibator插件+ibatorConfig文件】是用于简化Java开发中的数据库操作的工具,尤其在构建Maven或Gradle项目时,它能自动生成基于Active Record模式的DAO层、Service层以及实体类代码,极大地提高了开发效率。ibator是...
IBator是Apache iBATIS项目的一个子项目,它是一个代码生成器,能够帮助开发人员自动化创建基于iBATIS的持久层代码,包括Java模型类、SQL映射文件以及DAO接口。通过减少手动编写这些常见的重复性工作,IBator可以...
`ibator`,全称Apache iBATIS Auto Generator,是一个基于Java的代码生成工具,源自iBATIS项目,用于帮助开发者快速生成与数据库交互的Java类和XML映射文件。相较于Hibernate,ibator允许开发者拥有更多的SQL控制权...
相关推荐
标题 "ibatis自动生成工具ibator及配置文件示例" 提到的是关于iBatis的自动化工具ibator的使用和配置。iBatis是一个优秀的Java持久层框架,它允许开发者将SQL语句直接写在XML配置文件中,使得数据库操作与业务逻辑...
而IBATOR则在此基础上,增加了代码生成器的功能,能够自动生成SQL映射文件、DAO接口和其实现类,大大提升了开发效率。 在实际开发过程中,使用IBATOR可以遵循以下步骤: 1. **环境配置**:首先,你需要在项目中...
ibator-huoniao通过它你可以通过配置少量参数,通过一键生成dao层的全部文件,能够应付对dao层的所有操作 产物包括: 1. pojo文件 2. dao接口类 3. dao接口实现类文件 4. ibatis sql map文件 5. 数据库查询时...
"mybatis根据数据库表自动生成SQL、实体类、mapper文件工具"就是这样一个解决方案,它基于Eclipse集成开发环境,特别适用于使用SSM(Spring、SpringMVC、MyBatis)框架的项目。 首先,MyBatis是一个优秀的持久层...
为了解决这个问题,MyBatis提供了ibator,它是一个代码生成器,能够根据数据库表自动生成实体类、Mapper接口、Mapper XML文件以及对应的DAO层实现类,大大减轻了开发人员的工作负担。 首先,让我们了解如何安装...
Ibator是MyBatis的自动化工具,它能够根据数据库表结构自动生成Java实体类、Mapper接口及XML配置文件等,从而快速构建基于Ibatis的数据访问层。Ibator 1.2.1是其一个稳定版本,包含了多项改进和优化,使得代码生成...
Ibator是iBATIS(现在已经演变为MyBatis)的一个扩展,它能够根据数据库表结构自动生成Java源代码,包括DTO(Data Transfer Objects)、DAO(Data Access Object)类以及对应的XML映射文件,大大减少了手动编写这些...
开源ibator什么xml和pojo的时候,经常会带一些讨厌的注释还有一些没用的ibatorgenerator等的,我改了它的源代码,弄了个干净的ibator
Ibator is a code generator for iBATIS. Ibator will introspect a database table (or many tables) and will generate iBATIS artifacts that can be used to access the table(s). This abates some of the ...
这些工具能够通过读取数据库的表结构信息,自动创建对应的Java实体类(Entity)、Mapper接口及XML配置文件、DAO接口及实现类、以及Service接口和实现类。DTO(Data Transfer Object)对象则用于在服务层和表现层之间...
而iBATOR则是iBATIS的扩展,它通过简单的配置,可以根据数据库中的表结构自动化地生成与之对应的Java模型类、DAO接口和Mapper XML文件,使得开发过程更加高效。 iBATOR的使用通常涉及到以下几个关键知识点: 1. **...
完成配置后,你可以选择要操作的数据库和表,Ibator会自动生成相应的Java类和MyBatis相关的XML文件。对于每个表,它会生成一个实体类,包含表中的所有字段,以及对应的getter和setter方法。同时,还会生成一个Mapper...
首先,ibator是一个基于Mybatis的代码生成工具,它可以自动生成Java实体类、Mapper接口和XML配置文件,极大地提高了开发效率。在本例中,我们关注的是"ibator_3.0.6.full mybatis 代码生成器插件.zip"这个压缩包,它...
Ibator,全称“Introspected Table Abstraction”,是Apache MyBatis框架的一个子项目,它提供了一个代码生成器,能够自动生成JavaBean、Mapper接口和XML配置文件,大大减少了开发者手动编写这些重复代码的工作量。...
它的核心功能是根据数据库表结构自动生成Java源代码,包括Model类、Mapper接口和XML配置文件,帮助开发者快速构建基于Ibatis的数据访问层。 Ibatis是一个轻量级的持久层框架,它不同于ORM(对象关系映射)框架如...
`ibator`(IntelliJ IDEA的iBATIS Generator的Eclipse版本)是一款强大的数据库代码自动生成工具,它能够帮助开发者快速地生成Java持久层代码,包括实体类、Mapper接口及XML配置文件等,大大提高了开发效率。...
修改完毕后,通过右键点击`ibatorConfig.xml`,选择`Generate iBatis Artifacts`,Ibator将自动生成包括模型类、XML映射文件和DAO接口在内的相关代码。 ibatorConfig.xml的注释提供了详细的配置选项说明,包括...
【ibator插件+ibatorConfig文件】是用于简化Java开发中的数据库操作的工具,尤其在构建Maven或Gradle项目时,它能自动生成基于Active Record模式的DAO层、Service层以及实体类代码,极大地提高了开发效率。ibator是...
IBator是Apache iBATIS项目的一个子项目,它是一个代码生成器,能够帮助开发人员自动化创建基于iBATIS的持久层代码,包括Java模型类、SQL映射文件以及DAO接口。通过减少手动编写这些常见的重复性工作,IBator可以...
`ibator`,全称Apache iBATIS Auto Generator,是一个基于Java的代码生成工具,源自iBATIS项目,用于帮助开发者快速生成与数据库交互的Java类和XML映射文件。相较于Hibernate,ibator允许开发者拥有更多的SQL控制权...