NutzCN Logo
精华 使用NutzWk开发第一弹-使用h2db
发布于 2832天前 作者 enilu 1838 次浏览 复制 上一个帖子 下一个帖子
标签:

最近帮朋友做个项目,用jetty和h2db,以及springmvc。在坛子里看到鲨鱼兄出品,几位nutz界大神出品的nutzwk。想着可以学习看看,于是打算把项目基于nutzwk来做。接下来记录下整个开发过程。
今天第一弹,说点入门的。

开发环境

首先说下我的开发环境,centos6.5,idea14.1社区版,maven3.3,smartgit客户端。

跑起来

首先第一步,啥也不说,跑起来先,在run config中新建java application,Main Class中输入启动类:org.nutz.web.WebLauncher
剩下的建立好数据库,启动,ok-------报错了,
编译报错了,说是“无效的源发行版:8“。一看pom.xml文件中编译使用的jdk版本为1.8,而我机器默认是1.7的,于是将jdk版本设置为1.8。
重新启动,ok -----正常...
访问http://localhost:8080,正常,访问http://localhost:8080/private/login,登录正常。

日志配置

呃,日志输出,默认debug级别,看着太感人了(谁发明这句话,你很逗逼!),更改下log4j.properties;重启,恩,世界变得清爽多了。

更换数据库

恩,为了项目部署方便,所以朋友要求使用内置数据库,所以肯定要换数据库,我之前用的是sqlite;嗯?你问为什么?我也不知道为什么。只知道android内置的是这货。那谁有句名言:当我没有时间(或者没有能力)去判断哪个技术好用的时候,跟着大厂走就行了。

那么接下来就是把mysql换成h2db。谁在用饭菜扔我,哦,为什么不用slite!我也是刚知道,h2db和mysql兼容啊。我不用改动一行java代码就能把nutzwk的mysql换成h2db啊。我要用sqlite那不是二吗?
- 第一步,pom.xml中添加h2db依赖:

        <dependency>
            <groupId>com.h2database</groupId>
            <artifactId>h2</artifactId>
            <version>1.3.176</version>
        </dependency>
  • 第二步,更改jdbc连接配置
db.url=jdbc:h2:db/nutzwk
db.username=admin
db.password=admin
  • 第三步,刚才说错了,还是需要几行java代码的,怎么着也得把数据库服务启动起来啊,增加个h2服务类
public class H2Server {
    private static final Log log = Logs.get();

    private static Server h2Server;
    /**
     * 启动h2服务
     */
    public static void startH2Server() {
        if (h2Server != null && h2Server.isRunning(true)) {
            return;
        }
        try {
            log.info("database path is " + "正在启动h2...");
            boolean dbIsActive = new File("h2db").isDirectory();
            log.info("database path is " + new File("h2db").getAbsolutePath());
            h2Server = Server.createPgServer(new String[]{"-baseDir", "h2db"}).start();
        } catch (SQLException e) {
            log.error("启动h2出错:" + e.toString());
            e.printStackTrace();
            throw new RuntimeException(e);
        }
        log.info("数据库启动完毕...");
    }
    public static  void stopH2Server() {
        if ( h2Server!= null) {
            log.info("正在关闭h2...");
            h2Server.stop();
            log.info("关闭成功.");
        }
    }
}

然后在Setup.java的init方法中初始化数据表之前调用 : H2Server.startH2Server();

  • 最后,去掉daocache配置,因为这个插件不支持h2db了,在dao.js中将的dao的field配置注释掉
			fields : {
				executor : {refer:"cacheExecutor"}
			}

重启,ok, done

1 回复

一个int引发的血案,已修改并提交……
NutzWk基于MySQL开发,因Nutz框架特性,理论上来说仅需做少量修改即可兼容其他类型数据库,加上部分代码功能使用自定义SQL来实现,请使用其他数据库的同学自行测试、修改。

添加回复
请先登陆
回到顶部