All Projects → skiptirengu → Advpl Orm

skiptirengu / Advpl Orm

Licence: gpl-3.0
Biblioteca ORM (Object Relational Mapping) desenvolvida inteiramente em ADVPL para o ERP Protheus

Projects that are alternatives of or similar to Advpl Orm

Prisma
Next-generation ORM for Node.js & TypeScript | PostgreSQL, MySQL, MariaDB, SQL Server, SQLite & MongoDB (Preview)
Stars: ✭ 18,168 (+302700%)
Mutual labels:  orm, sql-server
Nut
Advanced, Powerful and easy to use ORM for Qt
Stars: ✭ 181 (+2916.67%)
Mutual labels:  orm, sql-server
Securitydriven.tinyorm
.NET micro ORM done right.
Stars: ✭ 281 (+4583.33%)
Mutual labels:  orm, sql-server
Rapid.js
An ORM-like Interface and a Router For Your API Requests
Stars: ✭ 700 (+11566.67%)
Mutual labels:  orm
Nano Sql
Universal database layer for the client, server & mobile devices. It's like Lego for databases.
Stars: ✭ 717 (+11850%)
Mutual labels:  orm
Efcorepowertools
Entity Framework Core Power Tools - reverse engineering, migrations and model visualization for EF Core
Stars: ✭ 774 (+12800%)
Mutual labels:  sql-server
Diesel
A safe, extensible ORM and Query Builder for Rust
Stars: ✭ 7,702 (+128266.67%)
Mutual labels:  orm
Sqlcetoolbox
SQLite & SQL Server Compact Toolbox extension for Visual Studio, SSMS (and stand alone)
Stars: ✭ 651 (+10750%)
Mutual labels:  sql-server
One
一个极简高性能php框架,支持[swoole | php-fpm ]环境
Stars: ✭ 789 (+13050%)
Mutual labels:  orm
Smartsql
SmartSql = MyBatis in C# + .NET Core+ Cache(Memory | Redis) + R/W Splitting + PropertyChangedTrack +Dynamic Repository + InvokeSync + Diagnostics
Stars: ✭ 775 (+12816.67%)
Mutual labels:  orm
Azuredatastudio
Azure Data Studio is a data management tool that enables working with SQL Server, Azure SQL DB and SQL DW from Windows, macOS and Linux.
Stars: ✭ 6,605 (+109983.33%)
Mutual labels:  sql-server
Skinny Framework
🚝 "Scala on Rails" - A full-stack web app framework for rapid development in Scala
Stars: ✭ 719 (+11883.33%)
Mutual labels:  orm
Latke
🌀 一款以 JSON 为主的 Java Web 框架。
Stars: ✭ 781 (+12916.67%)
Mutual labels:  orm
Orm
A drop-in Doctrine ORM 2 implementation for Laravel 5+ and Lumen
Stars: ✭ 712 (+11766.67%)
Mutual labels:  orm
Gonet
go分布式服务器,基于内存mmo
Stars: ✭ 804 (+13300%)
Mutual labels:  orm
Sequelize
An easy-to-use and promise-based multi SQL dialects ORM tool for Node.js
Stars: ✭ 25,422 (+423600%)
Mutual labels:  orm
Droidparts
Stars: ✭ 785 (+12983.33%)
Mutual labels:  orm
Bookshelf
A simple Node.js ORM for PostgreSQL, MySQL and SQLite3 built on top of Knex.js
Stars: ✭ 6,252 (+104100%)
Mutual labels:  orm
Easy Php
A Faster Lightweight Full-Stack PHP Framework 🚀
Stars: ✭ 754 (+12466.67%)
Mutual labels:  orm
Xorm
Simple and Powerful ORM for Go, support mysql,postgres,tidb,sqlite3,mssql,oracle, Moved to https://gitea.com/xorm/xorm
Stars: ✭ 6,464 (+107633.33%)
Mutual labels:  orm

ADVPL ORM

Biblioteca ORM (Object Relational Mapping) desenvolvida inteiramente em ADVPL!

Instalação

Para utilização da biblioteca, basta copiar os arquivos de src/ e include/ para pasta do seu projeto. Note que esta biblioteca foi testada apenas com o banco de dados Microsoft SQL Server.

Utilização

Para cada tabela existente no banco, basta criar as classes DAO e Model extendendo as classes base e sobrescrever o método getAlias() para retornar corretamente o alias da tabela. Ex:

//SA2.prw
#include 'totvs.ch'

CLASS SA2 FROM BaseModel
	METHOD New() CONSTRUCTOR
	METHOD getAlias()
ENDCLASS

METHOD New() CLASS SA2
Return

METHOD getAlias() CLASS SA2
Return("SA2")
//SA2_DAO.prw
#include 'totvs.ch'

CLASS SA2_DAO FROM BaseDao
	METHOD New() CONSTRUCTOR
	METHOD getAlias()
ENDCLASS

METHOD New() CLASS SA2_DAO
Return

METHOD getAlias() CLASS SA2_DAO
Return("SA2")

Exemplos de uso

Além de serem totalmente dinâmicas por se basearem no SX3, as classes são extremamente fáceis e intuitivas.

Instanciando um novo objeto

// Instancia um novo model
oModel := SA2():new()
oModel:set("A2_LOJA", "1")
oModel:get("A2_LOJA") // 1

Trabalhando com o banco de dados

oModel  := SA2():new()
oSA2    := oModel:findOne(10) // Busca o registro com o RECNO 10

// Manipulando o model
oSA2:set("A2_LOJA", "1")
oSA2:get("A2_LOJA") // 1
oSA2:save() // Atualiza os valores no banco de dados
oSA2:delete() // Marca o campo D_E_L_E_T_ com *

Trabalhando com queries mais complexas

oModel  := SA2():new()
// Busca o primeiro registro com A2_FILIAL = 01 e A2_LOJA = 02
oModel:query({{"A2_FILIAL", "01"}, {"A2_LOJA", "02"}, "ONE") 
// Retorna uma array com todos os registros que possuem A2_FILIAL = 01 e A2_LOJA = 02
oModel:query({{"A2_FILIAL", "01"}, {"A2_LOJA", "02"}, "MANY") 
// Resultará na query SELECT * FROM SA2010 WHERE A2_FILIAL IN ('01', '02') WHERE D_E_L_E_T_ = ''
oModel:query({{"A2_FILIAL", {"01", "02"}}}, "MANY")
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].