jfinal注解扫描 提供controller和model的扫描

#jfinal-ext-scan

该项目提供一个自动扫描controller的routes和一个自动扫描model的插件.


##使用说明:

###  AutoBindRoutes:自动绑定路由插件


使用方法:在配置类中绑定,并在要扫描的的controller中添加注解

public class MyConfig extends JFinalConfig {
    ...
    @Override
    public void configRoute(Routes routes) {
        //扫描的包为com,baseViewPath为pages
        routes.add(new AutoBindRoutes("com","pages"));
    }
    ...
}
@JAction("/a")
public class AController extends Controller {
}
@JAction(value = "/b",viewPath = "bView")
public class BController extends Controller {
}
//上述代码相当于做了以下操作:
routes.setBaseViewPath("pages");
routes.add("/a", AController.class);
routes.add("/b", BController.class,"bView");



### ScanTablePluigin:自动扫描数据库表插件

**使用方法:在配置类中添加注解,并在要扫描的model上添加注解**

public class MyConfig extends JFinalConfig {
    ...
    @Override
    public void configPlugin(Plugins plugins) {
        //连接池插件
        DruidPlugin dp = new DruidPlugin(PropKit.get("mysql.url"),              PropKit.get("mysql.userName"), PropKit.get("mysql.password"));
        plugins.add(dp);
        //db操作插件
        ActiveRecordPlugin arp = new ActiveRecordPlugin(dp);
        arp.setShowSql(PropKit.getBoolean("mysql.showSql"));
        //扫描映射关系 默认的dbName为default-db
        //该插件需要在arp插件添加之前,否则扫描不到model
        ScanTablePluigin scanTablePluigin = new ScanTablePluigin(arp, "com");
        plugins.add(scanTablePluigin);
        //最后添加arp插件
        plugins.add(arp);
    }
    ...
}
//默认"id"为主键
@JTable(tableName = "indexnav")
public class IndexNav extends Model<IndexNav> {
}
//以id1,id2两个字段为组合主键
@JTable(tableName = "user",id = "id1,id2")
public class User extends Model<User> {
}
//上述代码相当于做了以下操作:
arp.addMapping("indexnav", IndexNav.class);
arp.addMapping("user","id1,id2", User.class);


##安装说明:

1. 下载源码后导入为maven项目

2. 执行maven命令install,获取的jar包

3. 放入jfinal项目使用


项目地址(点此查看)


评论区

JFinal

2017-08-09 11:26

代码还是蛮简洁的,不过我有个疑问,jfinal 已经有 model 生成器,model 的映射配置也是自动生成,是不是就不需要 model 扫描了 ^_^

此外,routes 自 3.0 开始,可以配置 routes.setBaseViewPath(...),楼主的扫描功能是否可以支持这个功能

小亮

2017-08-22 16:27

@JFinal 现在很多项目中都是按模块分包的,每个包中都有的models包,这个模块的model放入此包中;这种情况下用model生成器就不合适了,用多个model生成器的话又懒得写...

小亮

2017-08-22 16:27

@JFinal routes的话第二个参数就是baseViewPath;也可以在注解上设置viewPath覆盖或添加

JFinal

2017-08-22 16:29

@小亮 baseViewPath 都支持,那就挺不错的了,赞一个

100520043

2017-08-23 10:43

不支持jar里的model和routes

小亮

2017-08-23 14:02

@100520043 扫描类还没加上jar的扫描

djs19960601

2017-09-04 11:24

很棒!很酷但是有点鸡肋

热门分享

扫码入社