Implicit Queries
Implicit Join OneToOne, ManyToOne automatically implement join queries, filtering, sorting and result fetching
Implicit Subquery OneToMany, ManyToMany automatically implement subquery filtering, sorting and aggregate function result fetching
Implicit Grouping OneToMany, ManyToMany automatically optimize subqueries, merging multiple subqueries into one grouped query with support for filtering, sorting and aggregate functions
Implicit Partition Grouping OneToMany, ManyToMany automatically implement filtering, sorting and aggregate function results for first/Nth records
Implicit CASE WHEN Property.aggregate().filter(), e.g., o.age().sum().filter(()->o.name().like("123"))
Features
A complete solution for JDBC-based relational database queries
Code-First
Rapidly generate and maintain database table structures based on entity objects
Elegant Object Relations
Perfectly combine DSL with object relations to perform database queries with simple dot notation
Arbitrary SQL Fragments
Support inserting arbitrary SQL fragments in DSL to ensure implementation of various customized SQL
POJO-Based
Framework implements database access based on POJOs, ensuring compatibility with most mainstream ORMs with one set of object code
Zero Dependencies
Framework based on Java 8 and org.jetbrains.annotations (compile-time) with truly zero dependencies, a fully JDBC-based high-performance ORM that is completely self-controllable
One DSL
Highly abstract elegant DSL for multiple database solutions into 'Java-like' methods, requiring only one set of code to run across multiple databases
Low Learning Curve
Implement 'Stream API-like' operations to convert database operations into Java collection operations
Native Sharding
Achieve high-performance sharding without introducing and deploying any middleware or JAR packages, with custom sharding support
Structured Object Fetching
Quickly create DTOs based on database object mapping relationships and fetch structured data
Seamless APT
Use plugins to quickly generate APT-required classes for seamless APT in IDEA, without requiring build||compile to immediately use APT classes
Quick Lambda Parameters
Quickly implement lambda parameter input based on plugins and write DSL at the fastest speed
Group Awareness
The only ORM in Java that supports group awareness, allowing data to transform from flat to structured when writing DSL
Rich APIs
Provides commonly used APIs for returning collections, single objects, pagination, and features like dynamic conditions and dynamic sorting
Computed Properties
Provides powerful in-memory and database computed properties, with database computed properties supporting filtering, sorting, and returning within DSL
Unlimited Extensibility
EQ is a multi-instance framework with service isolation provided by an IoC container. All internal services can be replaced by users, and users can also inject any services to work with EQ
Direct DTO/VO Returns
Directly map database result sets to DTOs/VOs, supporting explicit or implicit assignment for data fetching without frameworks like map-struct
Enterprise-Grade Column Encryption
Support enterprise-grade database column encryption/decryption for improved data security after database breaches, with high-performance like searches on encrypted columns
Optimistic Locking
Native support for optimistic locking to ensure database data concurrency safety and business logic accuracy
Data Tracking
AOP-based data tracking during database queries to generate minimal granular updates
Logical Deletion
Native support for logical deletion and customizable logical deletion with support for recording deletion time, person, reason and other custom features
Computed Properties
A special type of property column that differs from regular table columns - it's a property derived through table columns or more complex functions
JSON Computed Properties Map objects to database columns using JSON format
Enum Computed Properties Map enums to database columns; when using in Java, enum hints clearly show values and their meanings
Column Computed Properties Special column processing through database functions, e.g., storing in database using base64 encode, retrieving using base64 decode
Non-Column Computed Properties Columns that don't exist in the database, e.g., age calculated from current time and birthday, usable for filtering, sorting, and returning
Cross-Table Computed Properties Properties obtained by combining values across multiple tables, e.g., class table can implement student count through subquery without redundant storage
Contact Us
Blog Features Display articles by date, tags and categories
Blog Homepage Brand new blog homepage
Blogger Info Customize name, avatar, motto and social media links
Timeline Browse and read blog posts in timeline