精华内容
下载资源
问答
  • java代码自动生成工具

    2017-07-21 21:14:52
    java代码自动生成工具,可按个人需求自由扩展。
  • Java代码自动生成工具

    2010-04-18 18:33:44
    自动生成代码工具中,通过分析输入的设计文档,利用内置的代码模版,自动生成数据访问层(简称D层)和业务逻辑层代码(简称B层)的基本代码。并且预留出程序员加入逻辑控制代码的位置。
  • java代码自动生成工具 mybatisGenerator 适配MySQL Oracle 代码生成器,在原有mybatis生成器基础上面扩展。除了生成entity,example,mapper外,额外生成controller,service,impl等。如果生成过程有问题,联系QQ:...
  • 本地部署 ...修改generator.properties mainPath:主路径 项目的主路径,PageUtil等util包路径,无需改动 package: 项目包名 ...项目访问Swagger路径:[http://localhost:9999/zltz/swagger-ui.html][],点击生成代码
  • <br>AutoJava 是一款针对于Oracle和SQLserver数据库的、以面向对象模式的Java代码生成工具。AutoJava根据O/R Mapping规则生成表对应的Java对象,并且生成了所有的添加、删除、修改、查询等底层数据库操作代码。...
  • Any-java代码自动生成工具(java模板语言)发布V1.2.1 一、Any-java代码自动生成工具(java模板语言)简介 简单说明: 模板解释性语言,在模板中没有特殊标记的部分,原封不动输出, 标记的部分允许所有的java...
    转载:http://bbs.skystonesoft.com/viewthread.php?tid=1&extra=page%3D1
    Any-java代码自动生成工具(java模板语言)发布V1.2.1
    一、Any-java代码自动生成工具(java模板语言)简介
    简单说明:
    模板解释性语言,在模板中没有特殊标记的部分,原封不动输出,
    标记的部分允许所有的java语法,并解释执行。
    用途:代码自动生成
    比如:开发完了一个类文件,但还有很多类似的类要做,只是要改变一些个别的地方,
    那么,可以把需要改动的地方用java变量标记,然后运行该模板,自动生成多个类。
    同时,我们也提供了一些工具类(比如excel读取),则设计书和模板联动,可以大大提高开发速度。
    当然,如果没有设计书,也可以直接读取DB的表结构来自动生成代码。

    起名为“any"的理由
    1。简单:只要懂java任何人都可以在2小时内学会。 anyone can use it easily.
    2。灵活:任何文件都可以轻易的转化为模板。 anything is template.
    3。强大:几乎能实现你所有想自动化的部分,只要你有灵感。anything is real.
    展开全文
  • 我发现java好多代码都是重复的,想找一个好一点工具可以生成java代码,减少工作量。 求各位大牛帮助。
  • java代码自动生成

    万次阅读 多人点赞 2018-10-15 17:46:41
    Java代码自动生成(优化封装版) 一、前言  最近自己做了个项目,为了提升开发效率,节约不必要的开发时间,特意花时间优化了下代码自动生成工具。成果不错,效率提高了不少,空闲时间特意写下这篇文章,希望对...

    Java代码自动生成(优化封装版)

    一、前言

           最近自己做了个项目,为了提升开发效率,节约不必要的开发时间,特意花时间优化了下代码自动生成工具。成果不错,效率提高了不少,空闲时间特意写下这篇文章,希望对大家有所帮助。

    PS文章底部是我的代码下载链接,大家可以自行下载。

     

    二、项目背景

    框架

            本套生成工具是基于SpringMVC + MyBatis框架,同样也适用于SpringBoot框架。

    包含内容

           本套工具是在原来工具的基础上,优化封装完成的,包含实体类,mapper层, dao层,service层,serviceImpl层,工具类,等较为全面的代码。节约了大部分不必要的开发时间。

    三、项目讲解流程

    项目导入

           从链接中下载工具,解压将Generator文件拖入开发文件中。

     

    修改配置

             在generator.xml中修改生成代码本地存放路径,与代码文件前缀。数据库链接地址等。

    表代码生成

           在Generator.java文件中,修改要代码自动生成的表已经表的主键,运行main方法。

     

    代码本地生成位置

    这样该表的代码算自动生成了。

    四、代码详解

            代码从mapper到service层都有可以自己查看

           这是生成的工具类,把这三个文件,第一个是验证参数是否为空,第二个是返回json封装格式,第三个是时间工具类。把这三个方法放入自己项目的工具类中就行。

     

    这是分页所需要的实体类。把这个page实体类放入项目对应的model文件中。

    以上代码生成基本完成。

     

    五、注意事项

    1.本套代码工具对应的数据库主键不是自增。

    2.本套代码工具对应的数据库表中必须有createtime这个字段,(因为排序用的)。

    3.当然也可以在我的基础上自行优化,也可以私我。

     

    五、下载地址

    工具我都已经上传了,大家可直接下载使用。

    download:https://download.csdn.net/download/qq_25814003/10722054

     

    展开全文
  • 1.方便快捷的实现dao层和mapper的增删改查代码和entity类 2.公司人自动生成基本的代码,然后进行修改 3.学生使用,生成即可直接操作完成操作数据库的代码,只需要撰写dao层和service层
  • 自动读取数据库的表,生成Javabean或者生产insert、select、update、delete。还有生成给javabean赋值的语句。
  • 通过此代码生成工具可以自动生成相关代码,当然不局限于controller层、service层、entity层、mapper层的代码生成!因为本项目中自定义代码生成规则的配置比较简单,只需自定义模板并创建工厂实例即可。同时可自定义...

    前言

    此项目主要解决在项目搭建初期,创建项目时很多代码手动创建太过繁琐,耗费不必要的开发时间。通过此代码生成工具可以自动生成相关代码,当然不局限于controller层、service层、entity层、mapper层的代码生成!因为本项目中自定义代码生成规则的配置比较简单,只需自定义模板并创建工厂实例即可。同时可自定义代码的生成路径,未设置则默认生成在本项目下(可更直观查看生成的结构效果,文末有效果图)。

    本项目基于SpringBoot,通过beetl模板引擎自动渲染生成代码。

    项目源码地址:bhy702-generator


    项目结构

    在这里插入图片描述


    一: 导入pom文件相关依赖
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
    
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <optional>true</optional>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    
    <!-- mybatis -->
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>1.3.2</version>
    </dependency>
    
    <dependency>
        <groupId>com.ibeetl</groupId>
        <artifactId>beetl-framework-starter</artifactId>
        <version>1.1.68.RELEASE</version>
    </dependency>
    <!-- 升级beetl的依赖,保证在1.8上不出现警告 -->
    <dependency>
        <groupId>org.antlr</groupId>
        <artifactId>antlr4-runtime</artifactId>
        <version>4.7.1</version>
    </dependency>
    
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
    </dependency>
    
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    

    二: 编写beetl配置类
    /**
     * @author: brbai
     * @create: 2019-10-16 17:12:45
     * @description:
     */
    @Configuration
    @Slf4j
    @Data
    public class BeetlConfiguration {
    
        @Value("${beetl.template-path}")
        private String templatePath;
    
        @Value("${beetl.delimiter-statement-start}")
        private String delimiterStatementStart;
    
        @Value("${beetl.delimiter-statement-end}")
        private String delimiterStatementEnd;
    
        @Bean(name = "beetlConfig")
        public BeetlGroupUtilConfiguration beetlGroupUtilConfiguration() {
            BeetlGroupUtilConfiguration beetlGroupUtilConfiguration = new BeetlGroupUtilConfiguration();
    
            // Beetl的配置
            Properties properties = new Properties();
            properties.setProperty("statementStart",delimiterStatementStart);
            properties.setProperty("statementEnd",delimiterStatementEnd);
            properties.setProperty("DELIMITER_STATEMENT_START", delimiterStatementStart);
            properties.setProperty("DELIMITER_STATEMENT_END", delimiterStatementEnd);
            beetlGroupUtilConfiguration.setConfigProperties(properties);
    
            ClasspathResourceLoader resourceLoader = new ClasspathResourceLoader(templatePath);
    
            beetlGroupUtilConfiguration.setResourceLoader(resourceLoader);
            // 调用Beetl的初始化方法
            beetlGroupUtilConfiguration.init();
    
            return beetlGroupUtilConfiguration;
        }
    
    }
    

    三: 配置properties文件

    application.properties文件:

    server.port=8090
    server.servlet.context-path=/
    
    spring.datasource.url=jdbc:mysql://localhost:3306/building_materials?useUnicode=true&characterEncoding=UTF-8&nullCatalogMeansCurrent=true&tinyInt1isBit=false
    spring.datasource.username=root
    spring.datasource.password=bhy702
    
    # beetl模板引擎的加载路径。以resources为根路径,此时表示加载resources/template文件夹中的模板文件
    beetl.template-path = template
    # beetl模板引擎语法开始标记
    beetl.delimiter-statement-start = @
    # beetl模板引擎语法结束标记。为空时在有开始标记@的行末结束
    beetl.delimiter-statement-end =
    
    # 代码文件的保存路径,注释后默认保存在本项目中
    #project.base-path = F:\\360MoveData\\Users\\n551\\Desktop
    

    为了便于查看代码生成效果,默认代码生成在此项目内,同时提供自定义代码生成位置。自定义代码生成位置只需配置application.properties中的project.base-path


    四: 设计代码模板(代码模板没限制,想怎么设计都行)
    下面以Entity.tpl代码模板文件为例:
    package ${props.params.packageName};
    
    import lombok.Data;
    @for(column in props.columnList){
    @if(column.type=='Date'){
    import java.util.Date;
    @break;
    @}}
    
    \@Data
    public class ${props.className}{
    
        @for(column in props.columnList){
        private ${column.type} ${column.lowerPropertyName};
    
        @}
    }
    
    

    五: 根据代码模板确定所需参数数据,添加代码模板的工厂实例。

    为了便于开发,我封装了一个模板所需的参数类TplProperties

    TplProperties参数类:
    /**
     * @author: brbai
     * @create: 2019-12-26 11:13:42
     * @description: 模板参数
     */
    @Data
    public class TplProperties {
    
        private String basePath;
        private String rootPackage;
        private String tableName;
        private List<Column> columnList;
    
        private Map<String,Object> params = new HashMap();;
        /**
         * 表名格式转换
         * xxx_yyy->XxxYyy
         */
        private String className;
    
        /**
         * 表名格式转换
         * xxx_yyy->xxxYyy
         */
        private String propertyName;
    
        public TplProperties(String basePath, String rootPackage, String tableName, List<Column> columnList) {
            this.basePath = basePath;
            this.rootPackage = rootPackage;
            this.tableName = tableName;
            this.columnList = columnList;
        }
    
        public TplProperties(String rootPackage, String tableName, List<Column> columnList) {
            this.rootPackage = rootPackage;
            this.tableName = tableName;
            this.columnList = columnList;
        }
    
        public String getClassName() {
            return StringUtil.mapTableNameToClassName(tableName);
        }
        public String getPropertyName() {
            return StringUtil.mapTableNameToPropertyName(tableName);
        }
        
        public void setParam(String key,Object value) {
            this.params.put(key,value);
        }
    
        public String getBasePath() {
            if(basePath == null){
                //未在properties文件中设置代码生成路径时,代码默认生成在此项目下
                return System.getProperty("user.dir") + "/src";
            }
            return basePath;
        }
    }
    
    
    工厂实例:
    /**
     * @author: brbai
     * @create: 2019-12-14 19:12:59
     * @description:
     */
    public class Entity implements Code {
    
        @Override
        public void create(GroupTemplate gt, TplProperties properties, String tplPath) throws IOException {
    
            String packageName =  properties.getRootPackage()+ ".entity";
            properties.setParam("packageName",packageName);
    
            Template t = gt.getTemplate(tplPath);
            t.binding("props", properties);
    
            GenerateUtil.createFile(t,properties.getBasePath()+"/main/java/"
                    + packageName.replace(".", "/") + "/" + properties.getClassName() + ".java");
        }
    }
    

    六: 识别数据库类型,读取数据库表结构
    /**
     * @Description: 获取数据库表结构
     * @Param: [sqlSessionFactory]
     * @return: java.util.Map<java.lang.String,java.util.Map<java.lang.String,java.lang.String>>
     */
    public static Map<String, Map<String, String>> getDatabaseAttribute(SqlSession sqlSession) throws SQLException {
    
        Map<String, Map<String, String>> databaseAttribute = new HashMap<>();
    
        Connection connection = sqlSession.getConnection();
    
        //获得数据库信息
        DatabaseMetaData metaData = connection.getMetaData();
    
        String databaseName = metaData.getDatabaseProductName();
    
        if ("MySQL".equals(databaseName)) {
            //获得数据库表
            ResultSet resultSet = metaData.getTables(null, null, null, new String[]{"TABLE"});
            while (resultSet.next()) {
                String tableName = resultSet.getString(3);
                String sql = "SELECT * FROM " + tableName;
                PreparedStatement preparedStatement = connection.prepareStatement(sql);
                ResultSet set = preparedStatement.executeQuery();
                //获得表信息
                ResultSetMetaData md = set.getMetaData();
                //获得表字段数
                int columnCount = md.getColumnCount();
    
                Map<String, String> attributes = new LinkedHashMap<>();
    
                for (int i = 1; i <= columnCount; i++) {
                    //字段名
                    String columnName = md.getColumnName(i);
                    //字段属性
                    String columnType = md.getColumnTypeName(i);
    
                    attributes.put(columnName, columnType);
                }
                databaseAttribute.put(tableName,attributes);
            }
        }else if("Oracle".equals(databaseName)){
        		//DEVTEST是oracle的用户名。此Oracle代码还没怎么测试。
                ResultSet rs = metaData.getTables("null", "DEVTEST", "%", new String[]{"TABLE"});
    
                while (rs.next()) {
                    String tableName = rs.getString("TABLE_NAME");
                    ResultSet columns = metaData
                            .getColumns(null, "DEVTEST", tableName, "%");
    
                    Map<String, String> attributes = new LinkedHashMap<>();
                    while (columns.next()) {
                        attributes.put(columns.getString("COLUMN_NAME"), columns.getString("TYPE_NAME"));
                    }
                    databaseAttribute.put(tableName, attributes);
                }
        }
    
    
        return databaseAttribute;
    }
    

    七: 数据清洗,设置生成代码的包名,获取工厂实例生成代码文件
    /**
     * @author: brbai
     * @create: 2019-11-20 14:12:12
     * @description: test
     */
    
    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class CodeTest {
    
        @Autowired
        private SqlSessionFactory sqlSessionFactory;
    
        @Autowired
        private BeetlGroupUtilConfiguration beetlConfig;
    
        @Autowired
        private CodeFactory codeFactory;
    
        @Value("${project.base-path:#{null}}")
        private String basePath;
    
        @Test
        public void codeGeneratorTest() throws SQLException{
    
    		//生成代码的项目包名
            String rootPackage = "aaa.bbb.ccc";
            
            GroupTemplate gt = beetlConfig.getGroupTemplate();
            //获取数据库表结构
            SqlSession sqlSession = sqlSessionFactory.openSession();
            Map<String, Map<String, String>> databaseAttribute = DBUtil.getDatabaseAttribute(sqlSession);
    
            String databaseName = sqlSession.getConnection().getMetaData().getDatabaseProductName();
      
            databaseAttribute.forEach((tableName,columnMap)->{
                List<Column> columnList = new ArrayList<>();
                columnMap.forEach((name,type)->{
                    String javaType = null;
                    //数据库行字段类型以及字段名格式转换,并存入模板参数集合
                    if("MySQL".equals(databaseName)){
                        javaType = DBUtil.sqlTypeToJavaType(type);
                    }else if("Oracle".equals(databaseName)){
                        javaType = DBUtil.oracleSqlTypeToJavaType(type);
                    }
                    columnList.add(new Column(name, javaType, StringUtil.mapUnderscoreToCamelCase(name), StringUtil.mapTableNameToClassName(name)));
                });
                
                //构建参数
                TplProperties properties = null;
                if(basePath != null){
                    properties = new TplProperties(basePath,rootPackage,tableName,columnList);
                }else{
                    properties = new TplProperties(rootPackage,tableName,columnList);
                }
    
                try {
                    //代码生成
                    codeFactory.getCodeInstance("CONTROLLER").create(gt,properties,"/Controller.tpl");
                    codeFactory.getCodeInstance("SERVICE").create(gt,properties,"/Service.tpl");
                    codeFactory.getCodeInstance("ENTITY").create(gt,properties,"/Entity.tpl");
                    codeFactory.getCodeInstance("MAPPER").create(gt,properties,"/Mapper.tpl");
                    codeFactory.getCodeInstance("MAPPER_XML").create(gt,properties,"/MapperXml.tpl");
                } catch (IOException e) {
                    e.printStackTrace();
                }
            });
    
        }
    }
    

    运行codeGeneratorTest()方法

    效果图如下:

    在这里插入图片描述
    未配置代码生成路径时:
    在这里插入图片描述
    配置了代码生成路径时:
    在这里插入图片描述


    由于项目代码比较多,没能全部贴出来,源码我已经上传码云了,想看源码的小伙伴可以点这里。bhy702-generator


    欢迎访问本文的个人博客链接: https://br-bai.github.io/2019/12/26/Java实现代码自动生成工具,基于Spring Boot/

    展开全文
  • 支持mysql数据库,自动导出 hibernate/mybatis 实体类、service、dao、action,以及简单的页面,全套流程。
  • java代码自动生成插件 for IDEA 看了网上很多自动生成代码的插件或者工具,要么需要定义模板,要么需要下载大的项目,感觉都太复杂不好使用,所以决定自己开发一个。 自动生成Java后台代码:包括 : Vo,Controller,...

    java代码自动生成插件 for IDEA

    看了网上很多自动生成代码的插件或者工具,要么需要定义模板,要么需要下载大的项目,感觉都太复杂不好使用,所以决定自己开发一个。

    自动生成Java后台代码:包括 : Vo,Controller,Service,Dao,DDL and Mybatis配置 file。
    生成Java代码是基于spring+struts框架的。

    原理: 通过定义一个java元数据(这个元数据定义有个标志,很简单,下面说明),然后用这个元数据自动生成代码。
    下面是一键自动生成过程:
    在这里插入图片描述

    项目源码:github地址:

    for IDEA:
    https://github.com/hilinw/IdeaAutoGenerateCodePlugin.git
    for Eclipse:
    https://github.com/hilinw/EclipseAutoGenerateCodePlugin.git

    编译好的idea插件(for IDEA2019.1):
    https://github.com/hilinw/IdeaAutoGenerateCodePlugin/blob/master/IdeaAutoGenerateCodePlugin.jar
    下载链接包上面这个包可以使用,但是各个项目不同,架构不同,
    建议下载源代码后自己根据自己项目情况修改后打包成插件包使用。

    idea插件安装: 在setting中找到plugins,选择本地文件,就是上面下载的这个IdeaAutoGenerateCodePlugin.jar
    在这里插入图片描述

    安装好后,重启idea,可以在 项目的java文件右键菜单,或者打开的java文件右键菜单中发现一个新增加的菜单项:
    在这里插入图片描述
    结果出现下图(说明这个java文件不能自动生成代码): 在这里插入图片描述
    要能自动生成代码,这个java文件(元数据文件)必须满足条件:
    1、java文件且包名称以"metadata."开头;
    2、有注解 'www.autogeneratecode.model.Entity’

    点击OK,会帮你自动生成一个可以 用于自动生成代码的 java元数据文件:

    package metadata.www.test.com;
    
    import www.autogeneratecode.model.Column;
    import www.autogeneratecode.model.Comment;
    import www.autogeneratecode.model.Entity;
    import www.autogeneratecode.model.Table;
    
    @Entity
    @Comment(content = "ExampleFile")
    @Table(name="T_ExampleFile")
    public class ExampleFile {
    /**
    * note:
    * import class:(Entity,Column,Comment,Table) is in jarfile: auto_generate_code_mode.jar, can download from :
    * https://github.com/hilinw/IdeaAutoGenerateCodePlugin.git  dir: lib/ 
    * 
    */
    
        @Comment(content="用户ID")
        @Column(name="FUSERID", dataType="decimal", precision=32)
        public long id;
     
        @Comment(content="用户名")
        @Column(name="FNAME", dataType="VARCHAR" ,nullable=false ,length=50)
        public String name;
    
        @Comment(content="用户编码")
        @Column(name="FNUMBER", dataType="VARCHAR" ,nullable=false ,length=20)
        public String number;
    
    }
    

    其中引入的注释类,需要下载后引入本项目中,仅用于生成代码。
    下载地址:
    https://github.com/hilinw/IdeaAutoGenerateCodePlugin/blob/master/lib/auto_generate_code_mode.jar
    插件包里面也可以找到:IdeaAutoGenerateCodePlugin.jar

    在这个元数据文件右键菜单,打开刚才那个自动生成代码的菜单项,就可以看到:
    在这里插入图片描述
    如果选择了“Generate files in the same directory”,则生成的java文件会在一个目录里面。否则会在不同目录下。

    这里元数据支持继承,你可以定义一个基础类元数据,然后自动生成VO。
    新建子元数据继承于基础元数据,子元数据自动生成代码后,也有继承基础元数据的 VO。

    点击OK后,生成代码如下图所示:
    在这里插入图片描述
    如果文件编译出错,可能你需要在项目中引入 spring相关文件,项目的spring_lib目录下有提供下载。

    附:

    idea插件开发入门参考:
    IntelliJ IDEA插件开发指南(一)
    https://blog.csdn.net/ExcellentYuXiao/article/details/80273109
    IntelliJ IDEA插件开发指南(二)
    https://blog.csdn.net/ExcellentYuXiao/article/details/80273347
    IntelliJ IDEA插件开发指南(三)
    https://blog.csdn.net/ExcellentYuXiao/article/details/80273448

    idea插件开发入门:
    https://blog.csdn.net/mmk1992/article/details/106320025/
    idea插件安装:
    https://blog.csdn.net/qq_39597203/article/details/88683118

    展开全文
  • java代码自动生成插件 for Eclipse 看了网上很多自动生成代码的插件或者工具,要么需要定义模板,要么需要下载大的项目,感觉都太复杂不好使用,所以决定自己开发一个。 自动生成Java后台代码:包括 : Vo,Controller,...
  • java代码自动生成UML-工具

    万次阅读 2017-06-22 14:41:21
    在网上找了很多,要不就是过期没有更新,新版本Eclipse无法兼容,要不就是收费,后来终于在开源组织找到了能用的 ...使用java编写的开源UML产品,功能比较全。最受欢迎的UML建模工具。  更多ArgoUML信息 
  • java自动生成代码工具

    2014-04-15 16:07:33
    工具,可以根据表属性,自动创建与之对应的增删改查java类,并且附有详细的使用教程
  • 3.执行成功后 就可以在你配置的生成文件存放路径中 找到你想要的java代码类和xml 文件 注意: 1.库表一定要配置正确 2.数据库字段命名建议规范(全大写 多词之间用 '_' 隔开),这样实体类中的属性名会生成驼峰形式的...
  • low-code 是一款为 java 打造的低代码平台。 开源地址:https://github.com/houbb/low-code 特性 支持基本的增删改查 支持枚举值处理 支持 EXCEL 导出 代码一键生成 生产代码一键清理 技术选型 ...
  • 所有jar已打包,修改generatorConfig.xml相关配置,运行make.bat可自动生成mybatis相关model,dao,mapping到src目录,复制到项目就ok。
  • 代码一键自动生成工具 可生成Action、JavaBean实体类、Dao及实现类、service及实现类、spring.xml、struts.xml、mybatis.xml *该工具目前支持3种数据源的生成方式,分别是:JDBC、.table、PDM *JDBC:选择JDBC是只...
  • 关于java代码自动生成的一个工程,可配置properties文件设置 java文件的生成位置,包名,生成的实体名。运行即可生成实体对应的service,controller。可以根据自己的需要,自行修改扩展。

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,066
精华内容 1,226
关键字:

java代码自动生成工具

java 订阅