jFinal数据库插件脱离web独立使用

    今天想用jfinal数据库的功能,但是我不想启动web服务器,有没有什么办法能够在本地执行jfinal的数据库功能呢?

    答案是肯定的。

    jfinal给的教程是这样的,在插件里面加上对数据库的支持:

@Override
    public void configPlugin(Plugins me) {
        C3p0Plugin cp = new C3p0Plugin("jdbc:mysql://localhost/transportSafe", "root", "root");
        me.add(cp);
        ActiveRecordPlugin arp = new ActiveRecordPlugin(cp);
        me.add(arp);
        arp.addMapping("user_", User.class);
    }
    依次类推,我在测试类的main方法中这样写:

public static void main(String[] args) {
        C3p0Plugin cp = new C3p0Plugin("jdbc:mysql://localhost/transportSafe", "root", "root");
        ActiveRecordPlugin arp = new ActiveRecordPlugin(cp);
        arp.addMapping("user_", User.class);
        List<User> users = User.dao.find("select * from user_");
        for (User u : users) {
            System.out.println(u.getStr("id") + "=" + u.getStr("name"));
        }
    }
    很不幸,程序报空指针异常。

    简单的看了下,ActiveRecordPlugin和C3p0Plugin这2个类的构造方法:

public C3p0Plugin(String jdbcUrl, String user, String password) {
		this.jdbcUrl = jdbcUrl;
		this.user = user;
		this.password = password;
	}
public ActiveRecordPlugin(IDataSourceProvider dataSourceProvider) {
		ActiveRecordPlugin.dataSourceProvider = dataSourceProvider;
	}
    很明显,这2个构造方法仅仅只做了对类属性的赋值操作而已,连对象都没new出来,必定会报空指针异常。

    还好这两个类的方法不多,里面初始化变量的操作都在start()方法里面完成,于是,正确操作如下:

public static void main(String[] args) {
        C3p0Plugin cp = new C3p0Plugin("jdbc:mysql://localhost/safe", "root", "root");
        cp.start();
        ActiveRecordPlugin arp = new ActiveRecordPlugin(cp);
        arp.start();
        arp.addMapping("driver", Driver.class);
        List<Driver> drivers = Driver.dao.find("select * from driver limit 0,20");
        for(Driver d:drivers){
            Set<Entry<String, Object>> set = d.getAttrsEntrySet();
            Iterator<Entry<String, Object>> it = set.iterator();
            System.out.println("=================");
            while(it.hasNext()){
                Entry<String, Object> next = it.next();
                System.out.println(next.getKey()+":"+next.getValue());
            }
            System.out.println("=================");
        }
    }
    到此,数据如期的查出来了。

转载于:https://my.oschina.net/piaohao/blog/103003

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值