一键生成 dao service serverImpl controller 层

package com.nf147.policy_publishing_platform.util.auto;

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;

/**
 * @author: WBG
 * @description: 自动创建service、impl、controller
 * @date: 2019/02/18 08:15
 */
public class AutoCreate {
    //驱动
    static String DBDRIVER = "org.mariadb.jdbc.Driver";
    //服务器地址
    static String DBURL = "jdbc:mariadb://localhost:3306/policydb";
    //登录用户名
    static String DBUID = "root";
    //密码
    static String DBPWD = "123456";
    //项目包名
    static String Package = "com.nf147.policy_publishing_platform";
    
    private static String tablename;
    private String[] colnames; // 列名数组

    private String[] colTypes; // 列名类型数组

    private int[] colSizes; // 列名大小数组

    public static void main(String[] args) throws Exception {
        AutoCreate auto = new AutoCreate();
        //获取所有数据表
        List<String> list = auto.TBlist();
        for (String table : list) {
            createStart(tables(table));
        }

    }

    /**
     * 获取指定数据库中包含的表 TBlist
     *
     * @return 返回所有表名(将表名放到一个集合中)
     * @throws Exception
     * @time 2017年7月14日下午5:54:52
     * @packageName com.util
     */
    public List<String> TBlist() throws Exception {
        // 访问数据库 采用 JDBC方式
        Class.forName(DBDRIVER);

        Connection con = DriverManager.getConnection(DBURL, DBUID, DBPWD);

        DatabaseMetaData md = con.getMetaData();

        List<String> list = null;

        ResultSet rs = md.getTables(null, null, null, null);
        if (rs != null) {
            list = new ArrayList<String>();
        }
        while (rs.next()) {
            String tableName = rs.getString("TABLE_NAME");
            list.add(tableName);
        }
        rs = null;
        md = null;
        con = null;
        return list;
    }

    /**
     * 把输入字符串的首字母改成大写
     *
     * @param str
     * @return
     */
    private static String initcap(String str) {
        char[] ch = str.toCharArray();
        if (ch[0] >= 'a' && ch[0] <= 'z') {
            ch[0] = (char) (ch[0] - 32);
        }
        return new String(ch);
    }

    /**
     * 把输入字符串的首字母改成小写
     *
     * @param str
     * @return
     */
    private static String initlow(String str) {
        char[] ch = str.toCharArray();
        if (ch[0] >= 'A' && ch[0] <= 'Z') {
            ch[0] = (char) (ch[0] + 32);
        }
        return new String(ch);
    }

    //首字母转换和下划线转换
    private static String tables(String table) {
        String[] tables = table.split("_");
        table = "";
        for (String s : tables) {
            table += initcap(s);
        }
        return table;
    }
    /**
     * 创建Dao
     */
    private static String createDao(String tableName) {
        String service = "package "+Package+".dao;\n" +
                "\n" +
                "import "+Package+".entity."+tableName+";\n" +
                "import org.springframework.stereotype.Repository;\n" +
                "\n" +
                "import java.util.List;\n" +
                "\n" +
                "@Repository\n" +
                "public interface "+tableName+"Mapper {\n" +
                "    /**\n" +
                "     * 根据id删除操作\n" +
                "     *\n" +
                "     * @param id\n" +
                "     * @return\n" +
                "     */\n" +
                "    int deleteByPrimaryKey(Integer id);\n" +
                "\n" +
                "    /**\n" +
                "     * 添加操作\n" +
                "     *\n" +
                "     * @param "+initlow(tableName)+"\n" +
                "     * @return\n" +
                "     */\n" +
                "    int insert("+tableName+" "+initlow(tableName)+");\n" +
                "\n" +
                "    /**\n" +
                "     * 根据id查询操作\n" +
                "     *\n" +
                "     * @param id\n" +
                "     * @return\n" +
                "     */\n" +
                "    "+tableName+" selectByPrimaryKey(Integer id);\n" +
                "\n" +
                "    /**\n" +
                "     * 全部查询操作\n" +
                "     *\n" +
                "     * @return\n" +
                "     */\n" +
                "    List<"+tableName+"> selectAll();\n" +
                "\n" +
                "    /**\n" +
                "     * 根据id全部修改操作\n" +
                "     *\n" +
                "     * @param "+initlow(tableName)+"\n" +
                "     * @return\n" +
                "     */\n" +
                "    int updateByPrimaryKey("+tableName+" "+initlow(tableName)+");\n" +
                "}";
        return service;
    }
    
    /**
     * 创建Service
     *
     * @param tableName 数据库表
     */
    private static String createService(String tableName) {
        String service = "package "+Package+".service;\n" +
                "\n" +
                "import "+Package+".entity." + tableName + ";\n" +
                "\n" +
                "import java.util.List;\n" +
                "\n" +
                "public interface " + tableName + "Service {\n" +
                "\n" +
                "    /**\n" +
                "     * 删除操作 根据id\n" +
                "     *\n" +
                "     * @param id\n" +
                "     * @return\n" +
                "     */" +
                "\n" +
                "    int deleteByPrimaryKey(Integer id);\n" +
                "\n" +
                "    /**\n" +
                "     * 添加操作\n" +
                "     *\n" +
                "     * @param " + initlow(tableName) + "\n" +
                "     * @return\n" +
                "     */" +
                "\n" +
                "    int insert(" + tableName + " " + initlow(tableName) + ");\n" +
                "\n" +
                "    /**\n" +
                "     * 根据id查询操作\n" +
                "     *\n" +
                "     * @param id\n" +
                "     * @return\n" +
                "     */" +
                "\n" +
                "    " + tableName + " selectByPrimaryKey(Integer id);\n" +
                "\n" +
                "    /**\n" +
                "     * 全部查询操作\n" +
                "     *\n" +
                "     * @return\n" +
                "     */" +
                "\n" +
                "    List<" + tableName + "> selectAll();\n" +
                "\n" +
                "    /**\n" +
                "     * 修改操作\n" +
                "     *\n" +
                "     * @param " + initlow(tableName) + "\n" +
                "     * @return\n" +
                "     */" +
                "\n" +
                "    int updateByPrimaryKey(" + tableName + " " + initlow(tableName) + ");\n" +
                "}";
        return service;
    }

    /**
     * 创建ServiceImpl
     *
     * @param tableName 数据库表
     */
    private static String createServiceImpl(String tableName) {
        String serviceImpl = "package "+Package+".impl;\n" +
                "\n" +
                "import "+Package+".dao." + tableName + "Mapper;\n" +
                "import "+Package+".entity." + tableName + ";\n" +
                "import "+Package+".service." + tableName + "Service;\n" +
                "import org.springframework.beans.factory.annotation.Autowired;\n" +
                "import org.springframework.stereotype.Service;\n" +
                "\n" +
                "import java.util.List;\n" +
                "\n" +
                "@Service\n" +
                "public class " + tableName + "ServiceImpl implements " + tableName + "Service {\n" +
                "\n" +
                "    @Autowired\n" +
                "    private " + tableName + "Mapper " + initlow(tableName) + "Mapper;\n" +
                "\n" +
                "    /**\n" +
                "     * 删除操作 根据id删除\n" +
                "     *\n" +
                "     * @param id\n" +
                "     * @return\n" +
                "     */\n" +
                "    @Override\n" +
                "    public int deleteByPrimaryKey(Integer id) {\n" +
                "        return " + initlow(tableName) + "Mapper.deleteByPrimaryKey(id);\n" +
                "    }\n" +
                "\n" +
                "    /**\n" +
                "     * 添加操作\n" +
                "     *\n" +
                "     * @param " + initlow(tableName) + "\n" +
                "     * @return\n" +
                "     */\n" +
                "    @Override\n" +
                "    public int insert(" + tableName + " " + initlow(tableName) + ") {\n" +
                "        return " + initlow(tableName) + "Mapper.insert(" + initlow(tableName) + ");\n" +
                "    }\n" +
                "\n" +
                "    /**\n" +
                "     * 根据id查询操作\n" +
                "     *\n" +
                "     * @param id\n" +
                "     * @return\n" +
                "     */\n" +
                "    @Override\n" +
                "    public " + tableName + " selectByPrimaryKey(Integer id) {\n" +
                "        return " + initlow(tableName) + "Mapper.selectByPrimaryKey(id);\n" +
                "    }\n" +
                "\n" +
                "    /**\n" +
                "     * 全部查询操作\n" +
                "     *\n" +
                "     * @return\n" +
                "     */\n" +
                "    @Override\n" +
                "    public List<" + tableName + "> selectAll() {\n" +
                "        return " + initlow(tableName) + "Mapper.selectAll();\n" +
                "    }\n" +
                "\n" +
                "    /**\n" +
                "     * 修改操作\n" +
                "     *\n" +
                "     * @param " + initlow(tableName) + "\n" +
                "     * @return\n" +
                "     */\n" +
                "    @Override\n" +
                "    public int updateByPrimaryKey(" + tableName + " " + initlow(tableName) + ") {\n" +
                "        return " + initlow(tableName) + "Mapper.updateByPrimaryKey(" + initlow(tableName) + ");\n" +
                "    }\n" +
                "}\n";
        return serviceImpl;
    }

    /**
     * 创建Controller
     *
     * @param tableName 数据库表
     */
    private static String createController(String tableName) {
        String controller = "package "+Package+".controller;\n" +
                "import "+Package+".entity." + tableName + ";\n" +
                "import "+Package+".service." + tableName + "Service;\n" +
                "import "+Package+".util.Result;\n" +
                "import org.springframework.beans.factory.annotation.Autowired;\n" +
                "import org.springframework.web.bind.annotation.*;\n" +
                "import java.util.List;\n" +
                "\n" +
                "@RestController\n" +
                "@RequestMapping(\"/" + initlow(tableName) + "\")\n" +
                "public class " + tableName + "Controller {\n" +
                "    @Autowired\n" +
                "    private " + tableName + "Service " + initlow(tableName) + "Service;\n" +
                "\n" +
                "    /**\n" +
                "     * 根据aId删除\n" +
                "     * 要求转入 aId\n" +
                "     *\n" +
                "     * @param " + initlow(tableName) + "\n" +
                "     * @return\n" +
                "     */\n" +
                "    @GetMapping(\"/deleteByPrimaryKey\")\n" +
                "    public Result deleteByPrimaryKey(" + tableName + " " + initlow(tableName) + ") {\n" +
                "        try {\n" +
                "\n" +
                "            return " + initlow(tableName) + "Service.deleteByPrimaryKey(" + initlow(tableName) + ".getId()) > 0 ? new Result().successMessage(\"删除成功\") : new Result(\"删除失败\");\n" +
                "        } catch (Exception ex) {\n" +
                "            return new Result().error(\"出错,请重试!\");\n" +
                "        }\n" +
                "    }\n" +
                "\n" +
                "    /**\n" +
                "     * 添加对象" + initlow(tableName) + "\n" +
                "     *\n" +
                "     * @param " + initlow(tableName) + "\n" +
                "     * @return\n" +
                "     */\n" +
                "    @PostMapping(\"/insert\")\n" +
                "    public Result insert(@RequestBody " + tableName + " " + initlow(tableName) + ") {\n" +
                "        try {\n" +
                "            return " + initlow(tableName) + "Service.insert(" + initlow(tableName) + ") > 0 ? new Result().successMessage(\"添加成功!\") : new Result(\"添加失败!\");\n" +
                "        } catch (Exception ex) {\n" +
                "            return new Result().error(\"出错,请重试!\");\n" +
                "        }\n" +
                "\n" +
                "    }\n" +
                "\n" +
                "    /**\n" +
                "     * 根据aid查找对象  最多只能返回一个对象\n" +
                "     *\n" +
                "     * @param " + initlow(tableName) + "\n" +
                "     * @return\n" +
                "     */\n" +
                "    @GetMapping(\"/selectByPrimaryKey\")\n" +
                "    public Result selectByPrimaryKey(" + tableName + " " + initlow(tableName) + ") {\n" +
                "        try {\n" +
                "            " + tableName + " " + initlow(tableName) + "1 = " + initlow(tableName) + "Service.selectByPrimaryKey(" + initlow(tableName) + ".getId());\n" +
                "            if (" + initlow(tableName) + "1 == null) {\n" +
                "                return new Result().successMessage(\"无数据\");\n" +
                "            } else {\n" +
                "                return new Result().success(" + initlow(tableName) + "1);\n" +
                "            }\n" +
                "        } catch (Exception ex) {\n" +
                "            return new Result().error(\"出错,请重试!\");\n" +
                "        }\n" +
                "    }\n" +
                "\n" +
                "    /**\n" +
                "     * 查询所有数据\n" +
                "     *\n" +
                "     * @return\n" +
                "     */\n" +
                "    @GetMapping(\"/selectAll\")\n" +
                "    public Result selectAll() {\n" +
                "        //public Result selectAll(@RequestParam(defaultValue = \"1\") int pageNum, @RequestParam(defaultValue = \"10\") int pageSize) {\n" +
                "        try {\n" +
                "            //分页\n" +
                "            //PageHelper.startPage(pageNum, pageSize);\n" +
                "            List<" + tableName + "> list = " + initlow(tableName) + "Service.selectAll();\n" +
                "            if (list == null) {\n" +
                "                return new Result().successMessage(\"无数据\");\n" +
                "            } else {\n" +
                "                // return new Result().success(list, " + initlow(tableName) + "Service.count(\"\"));\n" +
                "                return new Result().success(list);\n" +
                "            }\n" +
                "        } catch (Exception ex) {\n" +
                "            return new Result().error(\"出错,请重试!\");\n" +
                "        }\n" +
                "    }\n" +
                "\n" +
                "    /**\n" +
                "     * 根据id修改全部字段\n" +
                "     *\n" +
                "     * @param " + initlow(tableName) + "\n" +
                "     * @return\n" +
                "     */\n" +
                "    @PostMapping(value = \"/updateByPrimaryKey\")\n" +
                "    public Result updateByPrimaryKey(@RequestBody " + tableName + " " + initlow(tableName) + ") {\n" +
                "        try {\n" +
                "            return " + initlow(tableName) + "Service.updateByPrimaryKey(" + initlow(tableName) + ") > 0 ? new Result().successMessage(\"修改成功\") : new Result(\"修改失败\");\n" +
                "        } catch (Exception ex) {\n" +
                "            return new Result().error(\"出错,请重试!\");\n" +
                "        }\n" +
                "\n" +
                "\n" +
                "    }\n" +
                "}\n";
        return controller;
    }

    /**
     * 开始创建
     *
     * @param tableName 数据库表
     */
    static void createStart(String tableName) {
        //获取当前项目的路径
        String url = System.getProperty("user.dir");
        url += "\\src\\main\\java\\com\\nf147\\policy_publishing_platform\\";
        //创建Dao
        createFile(new File(url + "dao\\" + tableName + "Mapper.java"), createDao(tableName));
        //创建Service
        createFile(new File(url + "service\\" + tableName + "Service.java"), createService(tableName));
        //创建ServiceImpl
        createFile(new File(url + "impl\\" + tableName + "ServiceImpl.java"), createServiceImpl(tableName));
        //创建Controller
        createFile(new File(url + "controller\\" + tableName + "Controller.java"), createController(tableName));
    }

    /**
     * @param file    创建的文件
     * @param context 文件里面的内容
     */
    static boolean createFile(File file, String context) {
        //获取文件
        File parent = file.getParentFile();
        //如果是目录
        if (parent != null) {
            //创建目录
            parent.mkdirs();
        }
        try {
            //创建文件
            file.createNewFile();
            FileWriter fileWriter = null;
            try {
                fileWriter = new FileWriter(file);
                fileWriter.write(context);
                fileWriter.flush();
                fileWriter.close();
            } catch (IOException e) {
                return false;
            }
        } catch (IOException e) {
            System.out.println("创建文件失败:" + e.getMessage());
        }
        return true;
    }
}

 

 

posted @ 2019-03-13 14:25  追梦滴小蜗牛  阅读(813)  评论(0编辑  收藏  举报