zoukankan      html  css  js  c++  java
  • JFinal极速开发框架使用笔记(四) _JFinalDemoGenerator实体类生成及映射自动化

    运行_JFinalDemoGenerator生成实体类和映射之前的项目结构:

    运行之后:

    生成和改变的文件:

    实体类:

    package com.wazn.model;
    
    import com.wazn.model.base.BaseStudent;
    
    /**
     * Generated by JFinal.
     */
    @SuppressWarnings("serial")
    public class Student extends BaseStudent<Student> {
        public static final Student dao = new Student().dao();
    }
    package com.wazn.model.base;
    
    import com.jfinal.plugin.activerecord.Model;
    import com.jfinal.plugin.activerecord.IBean;
    
    /**
     * Generated by JFinal, do not modify this file.
     */
    @SuppressWarnings({"serial", "unchecked"})
    public abstract class BaseStudent<M extends BaseStudent<M>> extends Model<M> implements IBean {
    
        public M setStudentid(java.lang.Integer studentid) {
            set("studentid", studentid);
            return (M)this;
        }
        
        public java.lang.Integer getStudentid() {
            return getInt("studentid");
        }
    
        public M setStudentname(java.lang.String studentname) {
            set("studentname", studentname);
            return (M)this;
        }
        
        public java.lang.String getStudentname() {
            return getStr("studentname");
        }
    
    }
    package com.wazn.model;
    
    import com.wazn.model.base.BaseBlog;
    
    /**
     * Generated by JFinal.
     */
    @SuppressWarnings("serial")
    public class Blog extends BaseBlog<Blog> {
        public static final Blog dao = new Blog().dao();
    }
    package com.wazn.model.base;
    
    import com.jfinal.plugin.activerecord.Model;
    import com.jfinal.plugin.activerecord.IBean;
    
    /**
     * Generated by JFinal, do not modify this file.
     */
    @SuppressWarnings({"serial", "unchecked"})
    public abstract class BaseBlog<M extends BaseBlog<M>> extends Model<M> implements IBean {
    
        public M setId(java.lang.Integer id) {
            set("id", id);
            return (M)this;
        }
        
        public java.lang.Integer getId() {
            return getInt("id");
        }
    
        public M setTitle(java.lang.String title) {
            set("title", title);
            return (M)this;
        }
        
        public java.lang.String getTitle() {
            return getStr("title");
        }
    
        public M setContent(java.lang.String content) {
            set("content", content);
            return (M)this;
        }
        
        public java.lang.String getContent() {
            return getStr("content");
        }
    
        public M setDate(java.lang.String date) {
            set("date", date);
            return (M)this;
        }
        
        public java.lang.String getDate() {
            return getStr("date");
        }
    
    }

    自动写入映射:

    package com.wazn.model;
    
    import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
    
    /**
     * Generated by JFinal, do not modify this file.
     * <pre>
     * Example:
     * public void configPlugin(Plugins me) {
     *     ActiveRecordPlugin arp = new ActiveRecordPlugin(...);
     *     _MappingKit.mapping(arp);
     *     me.add(arp);
     * }
     * </pre>
     */
    public class _MappingKit {
        
        public static void mapping(ActiveRecordPlugin arp) {
            arp.addMapping("blog", "id", Blog.class);
            arp.addMapping("student", "studentid", Student.class);
        }
    }

    这里需要注意的是,JFinal中的这个自动映射文件_MappingKit因为在继承JFinalConfig类的主文件中需要指定,所以生成后会在该文件中写入,但是,如在 _JFinalDemoGenerator

    中指定的 _MappingKit路径和原来的_MappingKit文件路径不一致,将会在新的指定的路径生成一个新的_MappingKit文件。

    接下来是主文件:

    package com.wazn.common;
    
    import com.jfinal.config.Constants;
    import com.jfinal.config.Handlers;
    import com.jfinal.config.Interceptors;
    import com.jfinal.config.JFinalConfig;
    import com.jfinal.config.Plugins;
    import com.jfinal.config.Routes;
    import com.jfinal.core.JFinal;
    import com.jfinal.kit.PropKit;
    import com.jfinal.plugin.activerecord.ActiveRecordPlugin;
    import com.jfinal.plugin.druid.DruidPlugin;
    import com.jfinal.template.Engine;
    import com.wazn.model._MappingKit;
    
    public class GeneratorConfig extends JFinalConfig{
        
        public static void main(String[] args) {
            JFinal.start("src/main/webapp", 80, "/", 5);
        }
    
        @Override
        public void configConstant(Constants me) {
            // 加载少量必要配置,随后可用PropKit.get(...)获取值
            PropKit.use("a_little_config.txt");
            me.setDevMode(PropKit.getBoolean("devMode", false));
            
        }
    
        @Override
        public void configEngine(Engine me) {
    
            
        }
    
        @Override
        public void configHandler(Handlers arg0) {
            // TODO Auto-generated method stub
            
        }
    
        @Override
        public void configInterceptor(Interceptors arg0) {
            // TODO Auto-generated method stub
            
        }
    
        @Override
        public void configPlugin(Plugins me) {
            // 配置 druid 数据库连接池插件
            DruidPlugin druidPlugin = new DruidPlugin(PropKit.get("jdbcUrl"), PropKit.get("user"), PropKit.get("password").trim());
            me.add(druidPlugin);
            
            // 配置ActiveRecord插件
            ActiveRecordPlugin arp = new ActiveRecordPlugin(druidPlugin);
            // 所有映射在 MappingKit 中自动化搞定
            _MappingKit.mapping(arp);
            me.add(arp);
            
        }
    
        @Override
        public void configRoute(Routes arg0) {
            // TODO Auto-generated method stub
            
        }
    
        public static DruidPlugin createDruidPlugin() {
            return new DruidPlugin(PropKit.get("jdbcUrl"), PropKit.get("user"), PropKit.get("password").trim());
        }
    
    }

    这里因为只是测试使用_JFinalDemoGenerator生成实体类,所以只有相关的代码,没有其他的代码配置。

    _JFinalDemoGenerator生成器:

    package com.wazn.model;
    
    import javax.sql.DataSource;
    import com.jfinal.kit.PathKit;
    import com.jfinal.kit.PropKit;
    import com.jfinal.plugin.activerecord.generator.Generator;
    import com.jfinal.plugin.druid.DruidPlugin;
    import com.wazn.common.GeneratorConfig;
    
    public class _JFinalDemoGenerator {
        
        public static DataSource getDataSource() {
            PropKit.use("a_little_config.txt");
            DruidPlugin druidPlugin = GeneratorConfig.createDruidPlugin();
            druidPlugin.start();
            return druidPlugin.getDataSource();
        }
        
        public static void main(String[] args) {
            // base model 所使用的包名
            String baseModelPackageName = "com.wazn.model.base";
            // base model 文件保存路径
            String baseModelOutputDir = PathKit.getWebRootPath() + "/src/main/java/com/wazn/model/base";
            
            // model 所使用的包名 (MappingKit 默认使用的包名)
            String modelPackageName = "com.wazn.model";
            // model 文件保存路径 (MappingKit 与 DataDictionary 文件默认保存路径)
            String modelOutputDir = baseModelOutputDir + "/..";
            
            // 创建生成器
            Generator generator = new Generator(getDataSource(), baseModelPackageName, baseModelOutputDir, modelPackageName, modelOutputDir);
            // 设置是否生成链式 setter 方法
            generator.setGenerateChainSetter(false);
            // 添加不需要生成的表名
            generator.addExcludedTable("adv");
            // 设置是否在 Model 中生成 dao 对象
            generator.setGenerateDaoInModel(true);
            // 设置是否生成链式 setter 方法
            generator.setGenerateChainSetter(true);
            // 设置是否生成字典文件
            generator.setGenerateDataDictionary(false);
            // 设置需要被移除的表名前缀用于生成modelName。例如表名 "osc_user",移除前缀 "osc_"后生成的model名为 "User"而非 OscUser
            generator.setRemovedTableNamePrefixes("t_");
            // 生成
            generator.generate();
        }
    }
  • 相关阅读:
    Linux常用命令大全详解
    C++语言关键字及注解
    求两数的最大公约数
    ICOP完成端口详解
    C/C++常见面试题
    猴子吃桃问题之《C语言经典案例分析》
    DTD
    DTD
    DTD的使用
    Rust
  • 原文地址:https://www.cnblogs.com/jiangwz/p/8333973.html
Copyright © 2011-2022 走看看