`

Spring dao 和Service 生成文件类

 
阅读更多
package com.annotationtodaotoservice;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.logging.Logger;

/**
 * @see  生成dao 和service 文件和文件夹
 * @author liuqing
 * @since  2011-5-1
 * @version 1.0
 */
public class DaoServiceImpl {

    private Logger log = Logger.getLogger(DaoServiceImpl.class.getName());

    private String entityDir;

    public static void main(String args[]) throws Exception {
    	
        DaoServiceImpl dao = new DaoServiceImpl();
       
        dao.entityDir = "D:\\cache\\entity";
        dao.packageToFile("dao.impl");
        dao.packageToFile("service.impl");
        Map<String,List<File>> fileMap = dao.entityFileToDaoFile();
        List<File> daoFile = fileMap.get("dao");
        List<File> daoImplFile = fileMap.get("daoImpl");
        List<File> serviceFile = fileMap.get("service");
        List<File> serviceFileImpl = fileMap.get("serviceImpl");
        OutputStream out = null;
        dao.outFileDaoAndService(daoFile,out,1);
        dao.outFileDaoAndService(daoImplFile,out,2);
        dao.outFileDaoAndService(serviceFile,out,3);
        dao.outFileDaoAndService(serviceFileImpl,out,4);
        if (out != null) {
        	out.close();
        }
        
    }

    public void outFileDaoAndService(List<File> files,OutputStream out,int type)
            throws FileNotFoundException {
        for (File fileName:files) {
            out = new FileOutputStream(fileName);
            this.print(out, type, fileName.getName());
        }
    }
    
    public String toLowerFirst(String str) {
    	if (str != null && !"".equals(str)) {
    		char ch[] = str.toCharArray();
    		if (ch.length > 0) {
    			if (ch[0] < 'a') {
    				ch[0] = (char) (ch[0] + 32);
    			}
    		}
    		return (new String(ch));
    	}
    	return str;
    }
    
    public String toUpFirst(String str) {
    	if (str != null && !"".equals(str)) {
    		char ch[] = str.toCharArray();
    		if (ch.length > 0) {
    			if (ch[0] > 'Z') {
    				ch[0] = (char) (ch[0] - 32);
    			}
    		}
    		return (new String(ch));
    	}
    	return str;
    }

    /**
     *
     * @param out
     * @param typeInfo 1:为IDao 2 DaoImpl 3 IService 4 ServiceImpl
     */
    public void print(OutputStream output,int typeInfo,String clazzName) {

        PrintWriter out = new PrintWriter(output);
        if (typeInfo == 1) {
            this.fileToDao(this.javaFileToClassName(clazzName), out, " com.bs.phs.dao.jkjy");
        }
        else if (typeInfo == 2) {
            this.fileToDaoImpl(this.javaFileToClassName(clazzName), out, " com.bs.phs.dao.jkjy.impl");
        }
        else if (typeInfo == 3) {
            this.fileToService(this.javaFileToClassName(clazzName), out, " com.bs.phs.service.jkjy");
        }
        else {
            this.fileToServiceImpl(this.javaFileToClassName(clazzName), out, " com.bs.phs.service.jkjy.impl");
        }
        out.flush();
        
    }

    public void fileToDao(String clazzName,PrintWriter out,String packageInfo) {
        out.println("package " + packageInfo + ";");
        out.println("");
      //  out.println("import " + packageInfo +"." + clazzName + ";");
        this.toLogger(clazzName, out, packageInfo);
        out.println("public interface " + clazzName +
                " extends IBaseDao<" + this.daoService(clazzName,1) + "> {");
        out.println();
        out.println("}");
        out.flush();
    }

    /**
     * 文件头部信息日志
     * @param clazzName
     * @param out
     * @param packageInfo
     */
    public void toLogger(String clazzName,PrintWriter out,String packageInfo) {
        out.println();
        out.println("/**");
        out.println(" * @since " + packageInfo + "." + clazzName + ".java");
        out.println(" * @see  " +
                clazzName + " create datetime:" + dateToString()
                + "");
        out.println(" * @author liuqing");
        out.println(" * @version 1.0");
        out.println(" */");
    }

    public void fileToDaoImpl(String clazzName,PrintWriter out,String packageInfo) {
        out.println("package " + packageInfo + ";");
        out.println("");
        out.println("import " + packageInfo +"." + clazzName + ";");
        this.toLogger(clazzName, out, packageInfo);
        out.println("@Repository(\"" +
        		this.toLowerFirst(clazzName).substring(0, clazzName.length() - 4) +
        		"\")");
        out.println("public class " + clazzName +
                " extends BaseDaoImpl<" + this.daoService(clazzName,2) + "> implements " +
                "I" + this.daoService(clazzName, 2) +
                "Dao {");
        out.println();
        out.println("}");
        out.flush();
    }

    public void fileToService(String clazzName,PrintWriter out,String packageInfo) {
        out.println("package " + packageInfo + ";");
        out.println("");
        out.println("import " + packageInfo +"." + clazzName + ";");
        this.toLogger(clazzName, out, packageInfo);
        out.println("public interface " + clazzName +
                " extends IBaseService<" + this.daoService(clazzName,3) + "> {");
        out.println();
        out.println("}");
        out.flush();
    }

    /**
     * UsbServiceImpl
     * @param clazzName
     * @param out
     * @param packageInfo
     */
    public void fileToServiceImpl(String clazzName,PrintWriter out,String packageInfo) {
        out.println("package " + packageInfo + ";");
        out.println("");
        out.println("import " + packageInfo +"." + clazzName + ";");
        this.toLogger(clazzName, out, packageInfo);
        out.println("@Transactional");
        out.println("@Service(\"" + this.toLowerFirst(clazzName).substring(0, clazzName.length() - 4) + "\")");
        out.println("public class " + clazzName +
                " extends BaseServiceImpl<" + this.daoService(clazzName,4) + "> implements " +
                "I" + this.daoService(clazzName,4) + "Service" +
                " {");
        out.println("");
        String annotationName = clazzName.substring(0, clazzName.length() - 4);
        out.println("");
        String daoName = annotationName.substring(0, annotationName.length() - 7) + "Dao";
        out.println("@Resource(name=\"" + this.toLowerFirst(daoName) + "\")");
        out.println("private I" + this.toUpFirst(daoName) + " " + this.toLowerFirst(daoName) +";");
        out.println("");
        out.println("@Override");
        out.println("public IBaseDao<" +
        		this.toUpFirst(daoName.substring(0, daoName.length() - 3)) +
        		"> getTargetDao() {");
        out.println("    return " + this.toLowerFirst(daoName) + ";");
        out.println("}");
        out.println("");
        
        out.println("}");
        out.flush();

    }
    
    /**
     *  根据文件生成 ClassName
     * @param inclassName
     * @param typeInfo 1:为IDao 2 DaoImpl 3 IService 4 ServiceImpl
     * @return
     */
    public String daoService(String inclassName,int typeInfo) {
        int classLength = inclassName.length();
        if (typeInfo == 1) {
            return inclassName.substring(1, classLength - 3);
        }
        else if (typeInfo == 2){
            return inclassName.substring(0, classLength - 7);
        }
        else if (typeInfo == 3){
            return inclassName.substring(1, classLength - 7);
        }
        else {
            return inclassName.substring(0, classLength - 11);
        }
    }

    /**
     * 找到entityFile
     * @param covertDao
     * @param packageInfo
     * @throws FileNotFoundException
     */
    public File[] entityFileDir ()
            throws FileNotFoundException {
        List<File> files = new ArrayList<File>();
        File entityDirInfo = new File(entityDir);
        //新生成File类型
        File[] newFiles = new File[]{};
        File[] entityFiles = entityDirInfo.listFiles();
        entityDirInfo.mkdirs();
        	for (File f:entityFiles) {
        		if (f.getName().endsWith(".java")) {
        			files.add(f);
        			//System.out.println("---" + f.getName());
        		}
        	}
       return files.toArray(newFiles);
    }

    /**
     * 通过实体文件生成dao 和 service 文件
     * @param entityDir
     * @param typeInfo
     */
    public Map<String,List<File>> entityFileToDaoFile()
            throws FileNotFoundException {
        Map<String,List<File>> fileMap = new HashMap<String,List<File>>();
        List<File> dao = new ArrayList<File>();
        List<File> daoImpl = new ArrayList<File>();
        List<File> service = new ArrayList<File>();
        List<File> serviceImpl = new ArrayList<File>();
        File[] entityFiles = this.entityFileDir();
        for (File enFile:entityFiles) {
            int pos = enFile.getName().indexOf(".");
            String fileName = enFile.getName();
            String daoFileName = "I" + fileName.substring(0, pos) + "Dao.java";
            String daoImplFileName = fileName.substring(0, pos) + "DaoImpl.java";
            dao.add(new File(this.basePath() + File.separator +
                    "dao" + File.separator + daoFileName));
            daoImpl.add(new File(this.basePath() +
                    File.separator + "dao" + File.separator + "impl" +
                    File.separator + daoImplFileName));
            String serviceFileName = "I" + fileName.substring(0, pos) + "Service.java";
            String serviceImplFileName = fileName.substring(0, pos) + "ServiceImpl.java";
            service.add(new File(this.basePath() + "" +
                    File.separator + "service" + File.separator +serviceFileName));
            serviceImpl.add(new File(this.basePath() +
                    File.separator + "service" + File.separator + "impl" +
                    File.separator + serviceImplFileName));
        }
        fileMap.put("dao", dao);
        fileMap.put("daoImpl", daoImpl);
        fileMap.put("service", service);
        fileMap.put("serviceImpl", serviceImpl);
        return fileMap;
    }

    /**
     * 返加文件夹操作权限
     * @param directoryFile
     * @param packageInfo 创建文件夹
     * @return File
     */
    public File packageToFile(String packageInfo) {
        StringBuffer strBuff = new StringBuffer(basePath());
        strBuff.append(File.separator + packageInfo.replace(".", File.separator));
        File file = new File(strBuff.toString());
        file.mkdirs();
        return file;
    }

    /**
     * 基础信息
     * @return String
     */
    public String basePath(){
        int i = this.entityDir.lastIndexOf(File.separator);
        System.out.println("");
        System.out.println(this.entityDir.substring(0, i));
        String basePath = this.entityDir.substring(0, i);
        log.info(basePath);
        return basePath;
    }

    public String javaFileToClassName(String javaFileName) {
        int i = javaFileName.indexOf(".");
        return javaFileName.substring(0, i);
    }

    public String dateToString() {
        SimpleDateFormat simp = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        return simp.format(new Date());
    }

    public String getEntityDir() {
        return entityDir;
    }

    public void setEntityDir(String entityDir) {
        this.entityDir = entityDir;
    }

}

 

 

spring2.5之前片本

package com.annotationtodaotoservice;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

/**
 * @see 生成Spring bean 文件
 * @author liuqing
 */
public class SpringBeanFileImpl extends DaoServiceImpl {

    private String packeInformation;

    private String outFilePath;


    public static void main(String args[]) throws FileNotFoundException {
        SpringBeanFileImpl imp =
                new SpringBeanFileImpl("com.hd.digitalxcampus","f:\\beaninfo");
        imp.setEntityDir("E:\\liuqing\\workspace\\phs\\workspace\\phs\\src\\com\bs\\phs\\domain\\report");
        imp.toSpringBeanFile();
    }

    public SpringBeanFileImpl() {
    }

    public SpringBeanFileImpl(String packeInformation, String outFilePath) {
        this.packeInformation = packeInformation;
        this.outFilePath = outFilePath;
    }

    public void toSpringBeanFile() throws FileNotFoundException {
        System.out.println("---" + this.outFilePath);
        OutputStream outputDao = new FileOutputStream(this.outFilePath + File.separator + "spring-dao.xml");
        OutputStream outputService = new FileOutputStream(this.outFilePath + File.separator + "spring-service.xml");
        PrintWriter outDao = new PrintWriter(outputDao);
        PrintWriter outService = new PrintWriter(outputService);
        for (String clazzName:this.getClazzName()) {
            bean(clazzName,outDao,outService);
        }
        if (outputDao != null) {
            try {
                outputDao.close();
            }
            catch (IOException ex) {
            }
        }
        if (outputService != null) {
            try {
                outputService.close();
            }
            catch (IOException ex) {
            }
        }

    }

    public List<String> getClazzName() throws FileNotFoundException {
        List<String> classNames = new ArrayList<String>();
        File entityFiles[] = this.entityFileDir();
        for (File en:entityFiles) {
            classNames.add(this.javaFileToClassName(en.getName()));
        }
        return classNames;
    }

    public void bean(String clazzName,PrintWriter outDao
            ,PrintWriter serviceDao) {
        this.toIdInfo(clazzName, 1);
        outDao.println("<bean id=\"" + this.firstLower(clazzName) + "Dao" +
                "\" parent=\"adminInfoDao\" class=\"" + this.daoClassName(clazzName) +
                "\"> ");
        outDao.println("</bean>");

        serviceDao.println("<bean id=\"" + this.firstLower(clazzName) + "Service" +
                "\" class=\"" + this.serviceClassName(clazzName) +
                "\"> ");
//        <property name="baseDao" ref="foodTypeDao" />
        serviceDao.println("    <property name=\"baseDao\" ref=\"" +
                this.firstLower(clazzName) + "Dao" +
                "\" />");
        serviceDao.println("</bean>");
        outDao.flush();
        serviceDao.flush();
    }
    /**
     * 
     * @param clazzName
     * @param type 1: dao; 2: service;
     * @return
     */
    public String toIdInfo(String clazzName,int type) {
        if (type == 1) {
            return this.packeInformation + ".dao.impl." + clazzName + "DaoImpl";
        }
        else if (type == 2) {
            return this.packeInformation + ".service.impl." + clazzName + "ServiceImpl";
        }
        else {
            return null;
        }
    }
    /**
     *
     * @param clazzName
     * @return
     */
    public String daoClassName(String clazzName) {
        return this.toIdInfo(clazzName, 1);
    }

    /**
     * 
     * @param clazzName
     * @return
     */
    public String serviceClassName(String clazzName) {
         return this.toIdInfo(clazzName, 2);
    }

    /**
     * 
     * @param clazzName
     * @return String
     */
    public String firstLower(String clazzName) {
        char ch[] = clazzName.toCharArray();
        if (ch[0] <= ((char)'z') && ch[0] >= ((char)'A')) {
            ch[0] = (char)(ch[0] + 32);
        }
        return new String(ch);
    }

    public String getPackeInformation() {
        return packeInformation;
    }

    public void setPackeInformation(String packeInformation) {
        this.packeInformation = packeInformation;
    }

    public String getOutFilePath() {
        return outFilePath;
    }

    public void setOutFilePath(String outFilePath) {
        this.outFilePath = outFilePath;
    }

}

 

 

分享到:
评论

相关推荐

    自动生成dao,service

    这些工具可以通过配置XML或YAML文件定义模板,然后根据数据库的表结构自动生成对应的DAO和Service类。 以MyBatis Generator为例,开发者首先需要配置generatorConfig.xml文件,指定数据库连接信息、表名以及需要...

    快速生成dao、service、controller等相关代码

    该插件支持MyBatis,意味着它可以自动生成对应于数据库表的DAO接口和实现类,包括方法签名和SQL映射文件。 2. Service层:Service层是业务逻辑的载体,它调用DAO层的方法来完成实际的数据操作。插件能够生成服务...

    Spring Boot Mybatis 自动生成Entity,controller、serviceImpl ,Dao,方便开发,无需手写

    本项目“Spring Boot Mybatis 自动生成Entity,controller、serviceImpl,Dao”正是这样一个工具,旨在提升开发效率。 1. **Spring Boot**: Spring Boot是Spring框架的一个扩展,旨在简化Spring应用的初始搭建...

    strut2+spring+ibatis 的ation层,service层,dao层自动生成,简单易用

    在使用时,开发者可能需要配置数据库连接信息、实体类、表名等参数,然后工具就会根据预设的模板生成相应的Action、Service和DAO代码。这些代码通常会包含基本的CRUD(创建、读取、更新、删除)操作,也可以通过扩展...

    Java利用Freemarker模板自动生成dto、dao、rowmapper、bo、service代码

    开发者可以创建模板文件,定义类的结构和内容,然后Freemarker会根据提供的数据模型填充这些模板,生成最终的Java源代码。 2. **DTO(Data Transfer Object)**: DTO是一种设计模式,用于在不同系统或层之间传递...

    Eclipse 插件 生成dao层实现类 和服务层 action等

    生成struts2 dwr spring 配置文件和数据操作类(com.comm 中BaseDao) idao层 dao层的实现类 Service 层和IService层 总的情况为 src 下有 com.comm BaseDao com.idao pojo所在的类的接口 com.daoimlp pojo所在...

    代码生成器,自动生成Mapper,Controller,service文件

    生成Service文件时,代码生成器会创建Service接口和实现类,定义业务方法,并可能包含事务控制、异常处理等通用逻辑。这样,开发者可以直接专注于业务逻辑的实现,而不是重复的框架代码。 三、xuecheng-plus-...

    create-springbootjava自动实体类生成包含pojo,papper;service和实体类).zip

    为了提高开发效率,程序员经常需要处理大量的实体类(Entity),包括POJO(Plain Old Java Object)、DAO(Data Access Object)以及对应的Service层。手动创建这些类可能会消耗大量时间,因此,"create-...

    Spring-generator一键生成数据库文件

    Spring-generator 是基于 javafx8 开发的图形界面 Spring 代码生成器,使用 Apache FreeMarker 作为代码文件的模板,用户可以一键将数据库中的表生成为任意风格的 .java 代码文件(比如经典的三层模型)。 Spring-...

    自动生成MVC中的Service层、Dao层及Model层代码

    3. 设定生成代码的模板,例如Service接口、实现类、Dao接口、Mapper XML文件以及Model类的格式。 4. 运行代码生成工具,生成的代码会被保存到指定的项目目录下。 5. 将生成的代码导入到项目中,根据业务需求进行适当...

    使用freemarker生成controller service impl pojo dao mapper

    - 编写数据模型,包括实体类和数据库表信息。 - 使用Java代码调用FreeMarker API,将数据模型传递给模板。 - FreeMarker解析模板并生成对应的Java代码或XML文件。 - 将生成的文件引入项目,编译并运行。 通过以上...

    mybatis-plus反向工程 自动生成3层架构的文件controller,service,dao,mapper.zip

    首先,我们来看"mybatis-plus反向工程 自动生成3层架构的文件controller,service,dao,mapper.zip"这个标题,这表明我们有一个压缩包,其中包含了使用MyBatis-Plus反向工程功能生成的代码。反向工程通常涉及到以下...

    struts2+spring+hibernate+生成报表

    在报表生成过程中,Spring可以管理Struts2中的Action实例,负责数据访问对象(DAO)与业务服务对象(Service)的创建和生命周期,确保事务的一致性。此外,Spring还提供了数据访问抽象层,如JdbcTemplate或...

    Spring MVC Ibatis Bean 根据mysql数据表——代码生成工具

    生成的代码包括但不限于:Controller、Service、ServiceImpl、DAO、Mapper接口和XML配置文件,以及对应的Entity(Bean)类。 总的来说,Spring MVC Ibatis Bean 根据mysql数据表的代码生成工具是提升开发效率、降低...

    spring boot 代码生成方法块

    1. **MyBatis Generator**:这是一款强大的MyBatis代码生成工具,可以生成DAO层和Mapper XML文件,以及实体类和Mapper接口。 2. **JHipster**:这是一个全面的Spring Boot应用生成器,不仅可以生成服务层和DAO层...

    现有Mysql数据库,写Spring + Hibernate的配置文件

    最后,为了在服务层(Service)中使用DAO,需要配置Service类和相应的bean。Service类通常包含业务逻辑,调用DAO来完成数据操作。例如UserService类,它会注入UserRepository并提供业务方法。 ```java @Service ...

    mvc代码自动生成

    总结来说,"mvc代码自动生成"是通过工具自动化创建Java Spring MVC应用中的DAO、Service和Controller代码,提高开发效率。结合使用Eclipse这样的IDE和代码生成器,开发者能够更快地搭建起符合MVC架构的Web应用,并且...

    JavaBean实体类 配置文件 代码一键自动生成工具

    代码一键自动生成工具 可生成Action、JavaBean实体类、Dao及实现类、service及实现类、spring.xml、struts.xml、mybatis.xml *该工具目前支持3种数据源的生成方式,分别是:JDBC、.table、PDM *JDBC:选择JDBC是只...

    基于HIbernateTemplate的代码自动生成

    在Java开发领域,高效能和快速迭代是开发者追求的目标之一...在实际开发中,类似的代码生成工具还有MyBatis的Mapper和Service生成,以及各类ORM框架提供的代码生成插件,它们都在不同程度上帮助开发者提升了开发效率。

    SSM框架使用Generator生成实体类,映射文件

    Generator,通常指的是MyBatis Generator,它是MyBatis提供的一个代码生成工具,可以从数据库表中自动生成对应的Java实体类、DAO接口、Mapper XML映射文件以及Service层接口和服务实现。通过配置Generator的XML文件...

Global site tag (gtag.js) - Google Analytics