自己封装mybatis模板生成

  • Post author:
  • Post category:其他



第一步


通过加入hibernate框架,通过hibernate来自动生成model层的东西,用完撤出hibernate框架。


第二步

package com.yrmt.controller;

import java.io.*;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;

/**
 * Created by 存 on 2016/8/4.
 */
public class YRMTool {

    //在idea下model层的路径
    public String y_path = "E:\\IDEAWorkSpace\\finance\\src\\main\\java\\com\\yrmt\\model";
    //要生成的路径
    public String x_path = "E:\\Temp\\com\\yrmt";
    //包名
    public String pack_name = "com.yrmt";
    //生成时间
    private String time = "";

    private ArrayList<String> mname = new ArrayList<String>();

    public static void main(String[] args) throws Exception {
        new YRMTool().domain();
    }

    public void domain() {
        setMname();//设置数组
        SimpleDateFormat sf = new SimpleDateFormat("yyyy/MM/dd");
        time = sf.format(new Date());//设置写入时间
        File dao_file = new File(x_path + "\\dao");
        dao_file.mkdirs();//生成dao包
        File service_file = new File(x_path + "\\service\\impl");
        service_file.mkdirs();//生成service包 和impl包
        File conf_file = new File(x_path + "\\cm");
        conf_file.mkdir();//资源配置包
        for (String cname : mname) {//生成代码
            writeDao(cname);//写入dao包的所有
            writeSer(cname);//写入service包所有
            writeImp(cname);//写入impl包所有
            writeMapper(cname);//写入对应mapper配置文件
        }
        writeMyBatis_config();//mybatis配置
    }

    private void writeMapper(String name) {
        File file = new File(x_path + "\\cm\\" + name + "Mapper.xml");
        BufferedWriter bw = null;
        try {
            file.createNewFile();
            bw = new BufferedWriter(
                    new OutputStreamWriter(
                            new FileOutputStream(file)));
        } catch (IOException e) {
            System.out.println(name + "Mapper.xml 创建失败");
        }
        StringBuffer sb = new StringBuffer();
        sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>");
        sb.append("<!DOCTYPE mapper");
        sb.append(" PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\"");
        sb.append("\"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">");
        sb.append("<mapper namespace=\"" + pack_name + ".dao." + name + "DAO\">");
        sb.append("</mapper>");
        try {
            bw.write(sb.toString());
            bw.flush();
            bw.close();
        } catch (IOException e) {
            System.out.println(name + "Mapper.xml 更新失败");
        }
    }

    //mybatis资源配置
    private void writeMyBatis_config() {
        File file = new File(x_path + "\\cm\\mybatis-config.xml");
        BufferedWriter bw = null;
        try {
            file.createNewFile();
            bw = new BufferedWriter(
                    new OutputStreamWriter(
                            new FileOutputStream(file)));
        } catch (IOException e) {
            System.out.println("mybatis_congif.xml 创建失败");
        }
        StringBuffer sb = new StringBuffer();
        sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>");
        sb.append("<!DOCTYPE configuration ");
        sb.append("PUBLIC \"-//mybatis.org//DTD Config 3.0//EN\"");
        sb.append("\"http://mybatis.org/dtd/mybatis-3-config.dtd\">");
        sb.append("<configuration><!-- 命名空间 --><typeAliases>");
        for (String n : mname) {
            sb.append(" <typeAlias alias=\"" + n + "\" type=\"" + pack_name + ".model." + n + "\"/>");
        }
        sb.append("</configuration>");
        try {
            bw.write(sb.toString());
            bw.flush();
            bw.close();
        } catch (IOException e) {
            System.out.println("文件写入失败");
        }
    }

    private void writeImp(String name) {
        File file = new File(x_path + "\\service\\impl\\" + name + "ServiceImpl.java");
        BufferedWriter bw = null;
        try {
            file.createNewFile();
            bw = new BufferedWriter(
                    new OutputStreamWriter(
                            new FileOutputStream(file)));
        } catch (Exception e) {
            System.out.println("创建-" + name + "impl-错误");
        }
        StringBuffer sb_imp = new StringBuffer();//向内添加代码
        sb_imp.append("package " + pack_name + ".service.impl;");
        sb_imp.append("import org.springframework.beans.factory.annotation.Autowired;");
        sb_imp.append("import org.springframework.stereotype.Service;");
        sb_imp.append("import " + pack_name + ".dao." + name + "DAO;");
        sb_imp.append("import " + pack_name + ".model." + name + ";");
        sb_imp.append("import " + pack_name + ".service." + name + "Service;");
        sb_imp.append("@Service\r\n public class " + name + "ServiceImpl implements " + name + "Service{");
        String lname = name.toLowerCase();
        sb_imp.append("@Autowired \r\n private " + name + "DAO " + lname + "DAO;}");
        try {
            bw.write(sb_imp.toString());
            bw.flush();
            bw.close();
        } catch (IOException e) {
            System.out.println("impl包写入失败:" + name);
        }
    }

    private void writeSer(String name) {
        File file = new File(x_path + "\\service\\" + name + "Service.java");
        BufferedWriter bw = null;
        try {
            file.createNewFile();
            bw = new BufferedWriter(
                    new OutputStreamWriter(
                            new FileOutputStream(file)));
        } catch (Exception e) {
            System.out.println("创建-" + name + "Service-错误");
        }
        StringBuffer sb_ser = new StringBuffer();//向内添加代码
        sb_ser.append("package " + pack_name + ".service;");
        sb_ser.append("import " + pack_name + ".model." + name + ";");
        sb_ser.append("public interface " + name + "Service{}");
        try {
            bw.write(sb_ser.toString());
            bw.flush();
            bw.close();
        } catch (IOException e) {
            System.out.println("service包写入错误:" + name);
        }
    }

    private void writeDao(String name) {
        File file = new File(x_path + "\\dao\\" + name + "DAO.java");
        BufferedWriter bw = null;
        try {
            file.createNewFile();
            bw = new BufferedWriter(
                    new OutputStreamWriter(
                            new FileOutputStream(file)));
        } catch (Exception e) {
            System.out.println("创建-" + name + "DAO-错误");
        }
        StringBuffer sb_dao = new StringBuffer();//向内添加代码
        sb_dao.append("package " + pack_name + ".dao;");
        sb_dao.append("import " + pack_name + ".model." + name + ";");
        sb_dao.append("/**\n * Created by 存 on " + time + ".\n*/");
        sb_dao.append("public interface " + name + "DAO {}");
        try {
            bw.write(sb_dao.toString());
            bw.flush();
            bw.close();
        } catch (IOException e) {
            System.out.println("dao 写入失败:" + name);
        }
    }

    //对于有些model层下生成的有其他注解的,此方法可以去掉上面注解,保留 @Override 注解
    private void remove_annotation(File file) throws IOException {
        BufferedReader br = new BufferedReader(
                new InputStreamReader(
                        new FileInputStream(file)));
        StringBuffer sb = new StringBuffer();
        String temp;
        while ((temp = br.readLine()) != null) {
            if (temp.indexOf("@Override") != -1 || temp.indexOf("@") == -1) {
                sb.append(temp);
            }
        }
        br.close();
        BufferedWriter bw = new BufferedWriter(
                new OutputStreamWriter(
                        new FileOutputStream(file)));
        bw.write(sb.toString());
        bw.flush();
        bw.close();
    }

    //将model层下所有的实体类的名字放在 mname下
    private void setMname() {
        File m_path = new File(y_path);
        for (File f : m_path.listFiles()) {
            mname.add(f.getName().replace(".java", ""));
        }
    }
}



版权声明:本文为sinat_32836653原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。