欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于resty orm的ActiveRecord操作數(shù)據(jù)指南

 更新時(shí)間:2022年03月07日 13:02:03   作者:gitbooks  
這篇文章主要為大家介紹了基于resty orm的ActiveRecord操作數(shù)據(jù)指南,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步

Active Record(中文名:活動(dòng)記錄)是一種領(lǐng)域模型模式,特點(diǎn)是一個(gè)模型類(lèi)對(duì)應(yīng)關(guān)系型數(shù)據(jù)庫(kù)中的一個(gè)表,而模型類(lèi)的一個(gè)實(shí)例對(duì)應(yīng)表中的一行記錄。

Active Record 和 Row Gateway (行記錄入口)十分相似,但前者是領(lǐng)域模型,后者是一種數(shù)據(jù)源模式。關(guān)系型數(shù)據(jù)庫(kù)往往通過(guò)外鍵來(lái)表述實(shí)體關(guān)系,Active Record 在數(shù)據(jù)源層面上也將這種關(guān)系映射為對(duì)象的關(guān)聯(lián)和聚集。

Active Record 適合非常簡(jiǎn)單的領(lǐng)域需求,尤其在領(lǐng)域模型和數(shù)據(jù)庫(kù)模型十分相似的情況下。如果遇到更加復(fù)雜的領(lǐng)域模型結(jié)構(gòu)(例如用到繼承、策略的領(lǐng)域模型),往往需要使用分離數(shù)據(jù)源的領(lǐng)域模型,結(jié)合 Data Mapper (數(shù)據(jù)映射器)使用。

Active Record 驅(qū)動(dòng)框架一般兼有 ORM 框架的功能,但 Active Record 不是簡(jiǎn)單的 ORM,正如和 Row Gateway 的區(qū)別。

著名的例子是全棧(Full Stack) Web 開(kāi)發(fā)框架 Ruby on Rails ,其默認(rèn)使用一個(gè)純 Ruby 寫(xiě)成的 Active Record 框架來(lái)驅(qū)動(dòng) MVC 中的模型層。

在Resty中ActiveRecord表現(xiàn)為兩部分:

Model

映射指定的表數(shù)據(jù),數(shù)據(jù)存儲(chǔ)在一個(gè)attrs的map中,map的key不區(qū)分大小寫(xiě),適合具有固定業(yè)務(wù)的實(shí)體,可動(dòng)態(tài)切換數(shù)據(jù)源,內(nèi)部實(shí)現(xiàn)了屬性檢測(cè)和Query Cache,包含了基本的數(shù)據(jù)操作方法

Record

除了具有model的全部特征外,還是一個(gè)動(dòng)態(tài)的映射,適合動(dòng)態(tài)的數(shù)據(jù)表業(yè)務(wù),不需要建立指定的model來(lái)映射數(shù)據(jù)

使用方法

1. 在application.properties 配置jdbc連接,連接池等

##druid plugin auto load,default 為數(shù)據(jù)源名字
##druid plugin auto load
db.default.url=jdbc:mysql://127.0.0.1/example?useUnicode=true&characterEncoding=UTF-8
db.default.user=dev
db.default.password=dev1010
db.default.dialect=mysql
#c3p0配置
c3p0.default.minPoolSize=3
c3p0.default.maxPoolSize=20
#druid配置
#druid.default.initialSize=10
#druid.default.maxPoolPreparedStatementPerConnectionSize=20
#druid.default.timeBetweenConnectErrorMillis=1000
#druid.default.filters=slf4j,stat,wall
#flyway database migration auto load
flyway.default.valid.clean=true
flyway.default.migration.auto=true
flyway.default.migration.initOnMigrate=true

2. 在AppConfig類(lèi)中配置ActiveRecordPlugin,來(lái)加載連接和映射model

public void configPlugin(PluginLoader pluginLoader) {
    C3p0DataSourceProvider cdsp = new C3p0DataSourceProvider("default");
    ActiveRecordPlugin activeRecordCdsp = new ActiveRecordPlugin(cdsp, true);
    //映射的model必須能被掃描到 
    activeRecordCdsp.addIncludePaths("cn.dreampie.orm");
    pluginLoader.add(activeRecordCdsp);
}

3. 編寫(xiě)一個(gè)Model類(lèi)映射數(shù)據(jù)表,需要繼承Model

  //假設(shè)cn.dreampie.orm目錄下有個(gè)model叫User
  //使用table注解來(lái)映射指定的數(shù)據(jù)表,generatedKey是自增主鍵(自增方式分為數(shù)據(jù)庫(kù)自增和自定義生成器自增,如uuid),primaryKey非自增主鍵,generated=true 表示使用自定義的生成器生成主鍵,cached 表示緩存
  @Table(name = "sec_user",generatedKey="id", primaryKey = "sid",generated=true, cached = true)
  public class User extends Model<User> {
    public static User dao = new User();
  }

4. 編寫(xiě)一個(gè)Resouce來(lái)執(zhí)行某個(gè)數(shù)據(jù)操作

如果你只使用了orm部分,在其他地方也可以執(zhí)行該操作

@API("/users")
public class UserResource extends ApiResource {
  /**
   * 查詢(xún)一個(gè)user的集合
   */
  @GET
  public List<User> findAll() {
    //使用Record 達(dá)到相同的效果,而不需要編寫(xiě)User.java
    //Record userDAO=new Record("sec_user","id,sid",true,true);
    //userDAO.findAll();
    return User.dao.findAll();
  }
}

以上就是基于resty orm的ActiveRecord操作數(shù)據(jù)指南的詳細(xì)內(nèi)容,更多關(guān)于resty orm的ActiveRecord數(shù)據(jù)操作的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 基于Spring Batch向Elasticsearch批量導(dǎo)入數(shù)據(jù)示例

    基于Spring Batch向Elasticsearch批量導(dǎo)入數(shù)據(jù)示例

    本文介紹了基于Spring Batch向Elasticsearch批量導(dǎo)入數(shù)據(jù)示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-02-02
  • SpringMVC?bean加載控制的實(shí)現(xiàn)分析

    SpringMVC?bean加載控制的實(shí)現(xiàn)分析

    SpringMVC是一種基于Java,實(shí)現(xiàn)了Web?MVC設(shè)計(jì)模式,請(qǐng)求驅(qū)動(dòng)類(lèi)型的輕量級(jí)Web框架,即使用了MVC架構(gòu)模式的思想,將Web層進(jìn)行職責(zé)解耦?;谡?qǐng)求驅(qū)動(dòng)指的就是使用請(qǐng)求-響應(yīng)模型,框架的目的就是幫助我們簡(jiǎn)化開(kāi)發(fā),SpringMVC也是要簡(jiǎn)化我們?nèi)粘eb開(kāi)發(fā)
    2023-02-02
  • js實(shí)現(xiàn)拖拽拼圖游戲

    js實(shí)現(xiàn)拖拽拼圖游戲

    這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)拖拽拼圖游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 基于SpringBoot接口+Redis解決用戶(hù)重復(fù)提交問(wèn)題

    基于SpringBoot接口+Redis解決用戶(hù)重復(fù)提交問(wèn)題

    當(dāng)網(wǎng)絡(luò)延遲的情況下用戶(hù)多次點(diǎn)擊submit按鈕導(dǎo)致表單重復(fù)提交,用戶(hù)提交表單后,點(diǎn)擊瀏覽器的【后退】按鈕回退到表單頁(yè)面后進(jìn)行再次提交也會(huì)出現(xiàn)用戶(hù)重復(fù)提交,辦法有很多,我這里只說(shuō)一種,利用Redis的set方法搞定,需要的朋友可以參考下
    2023-10-10
  • 通過(guò)Java組合問(wèn)題看透回溯法

    通過(guò)Java組合問(wèn)題看透回溯法

    今天給大家分享一道LeetCode算法題,題目不是很困難,但是從這到簡(jiǎn)單的題目我們可以分析出回溯算法的幾個(gè)核心要點(diǎn),感興趣的可以了解一下
    2022-09-09
  • 手把手教你如何搭建SpringBoot+Vue前后端分離

    手把手教你如何搭建SpringBoot+Vue前后端分離

    這篇文章主要介紹了手把手教你如何搭建SpringBoot+Vue前后端分離,前后端分離是目前開(kāi)發(fā)中常用的開(kāi)發(fā)模式,達(dá)成充分解耦,需要的朋友可以參考下
    2023-03-03
  • java進(jìn)階解析Springboot上傳excel存入數(shù)據(jù)庫(kù)步驟

    java進(jìn)階解析Springboot上傳excel存入數(shù)據(jù)庫(kù)步驟

    項(xiàng)目需要,寫(xiě)了一個(gè),批量導(dǎo)入的接口。因?yàn)樾枰褂胑xcel去批量導(dǎo)入數(shù)據(jù),所以寫(xiě)了一個(gè)例子,經(jīng)過(guò)測(cè)試已經(jīng)可以用于實(shí)際開(kāi)發(fā),這里記錄一下
    2021-09-09
  • 三種Java求最大值的方法

    三種Java求最大值的方法

    本篇文章給大家總結(jié)了在JAVA中求最大值的三種常用方法,以及代碼做了分享,需要的朋友參考下。
    2018-02-02
  • 基于feign傳參MultipartFile問(wèn)題解決

    基于feign傳參MultipartFile問(wèn)題解決

    這篇文章主要介紹了基于feign傳參MultipartFile問(wèn)題解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • java開(kāi)啟遠(yuǎn)程debug竟有兩種參數(shù)(最新推薦)

    java開(kāi)啟遠(yuǎn)程debug竟有兩種參數(shù)(最新推薦)

    這篇文章主要介紹了java開(kāi)啟遠(yuǎn)程debug竟有兩種參數(shù),本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-07-07

最新評(píng)論