美文网首页
06 - 增加数据库功能

06 - 增加数据库功能

作者: 勤劳的悄悄 | 来源:发表于2019-03-07 21:08 被阅读0次
06 - 增加数据库功能.png

配置 project.clj

增加相关依赖

[org.clojure/java.jdbc "0.7.8"]
[org.xerial/sqlite-jdbc "3.7.15-M1"]
[ragtime "0.8.0"]

配置开发时用户空间

lein repl 启动的时候会默认进入 env/dev/clj 下的 user 命名空间,我们可以把测试代码放到这个命名空间中。

在配置文件中加入以下代码,指定开发时空间的路径

  :profiles {
        :dev {
            :source-paths ["env/dev/clj"]
            :plugins [[lein-ancient "0.6.15"]]
            :dependencies [[ring/ring-devel "1.6.3"]]}}

注意:要把 :main ^:skip-aot soul-talk.core 注释掉,否则 lein repl 会进入 soul-talk.core 命名空间

静态资源

添加数据库迁移代码

resources 目录下新建 migrations 目录,并在 migrations 中新建 001-user.up.sql 文件,在文件中写入创建用户表的语句:

CREATE TABLE IF NOT EXISTS users
(id serial primary key,
name VARCHAR(30),
email VARCHAR(30) unique ,
admin BOOLEAN,
last_login TIME,
is_active BOOLEAN,
password VARCHAR(200) NOT NULL);

在相同目录下新建 001-user-down.sql

DROP TABLE IF EXISTS users;

Clojure

创建 soul-talk/models/db.clj 文件

其中包括数据库规格和数据库操作代码

(ns soul-talk.models.db
  (:require [clojure.java.jdbc :as sql]))

(def db-spec 
    { :dbtype "sqlite"
      :classname "org.sqlite.JDBC"
      :subprotocol "sqlite"
      :subname "db.sqlite"
      :dbname "db.sqlite"})

;; 使用 JDBC 查询语句,返回 3*5
(defn test-db []
  (sql/query db-spec "select 3*5 as result"))


(defn save-user! [user]
  (sql/insert! db-spec :users user))

(defn select-user [id]
  (sql/query db-spec ["SELECT * FROM users where email = ? " id]))

(defn select-all-users []
  (sql/query db-spec ["SELECT * from users"]))

创建 env/dev/clj/user.clj 文件

env/dev/clj 目录下新建 user.clj 文件,其中创建了一个迁移命令要用的的配置参数变量 config

(ns user
  (:require [soul-talk.models.db :as db :refer [db-spec]]
            [ragtime.jdbc :as jdbc]
            [ragtime.repl :as rag-repl]))

;; 迁移命令需要用到的配置
(def config
  {:datastore  (jdbc/sql-database db-spec)
   :migrations (jdbc/load-resources "migrations")})

运行

在 repl 中运行

(db/test-db)
=> ({:result 15})

迁移命令

(rag-repl/migrate config)
Applying 001-user
=> nil

回滚命令:

(rag-repl/rollback config)
Rolling back 001-user
=> nil

相关文章

  • 06 - 增加数据库功能

    配置 project.clj 增加相关依赖 配置开发时用户空间 lein repl 启动的时候会默认进入 env/...

  • xdl13

    详情页面增加评论功能 mongodb数据库结构

  • javaweb使用solr实现搜索功能

    需求明确,原应用使用mysql数据库,基本功能CRUD,增加一个搜索功能。数据库名wenda,下有一个questi...

  • wueasy基础开发框架3.4.0版本发布

    3.4.0版本升级功能 增加数据库读写分离支持 网关增加是否参数自动移除空格配置 网关商户验签拦截器增加自定义加密...

  • Despia

    2022-06-03增加 IV.8 中盘Branded Fusion + Red斩杀路线2022-06-02增加 ...

  • Asp.netCore3.0 WebApi从0到1手摸手教你写【

    今天要增加一个通过EF访问数据库的功能,同时写一个增加新用户的接口,接口访问地址:api/User/AddUser...

  • 2019-02-25

    今天将整个代码进行抽取分离,因为功能增加代码太多有点凌乱,增加了一个modelview文件夹,专门来存放操纵数据库...

  • greendao的数据库升级<5>

    数据库升级的意义: 如果我们再项目中使用了数据库。而数据库的结构在第一版的时候定下来,之后发布功能更新,或增加业务...

  • egg.js快速入门

    node 搭建服务端项目 技术选型 egg.js 搭建项目 配置 创建数据库 增加功能 配置路由 打包部署

  • Qt 局域网通讯系统——登录

    参考之前的Qt 局域网通讯系统——注册其中的结构和逻辑,这里实现简单的登录功能。 数据库操作 由于增加数据库基本操...

网友评论

      本文标题:06 - 增加数据库功能

      本文链接:https://www.haomeiwen.com/subject/przhpqtx.html