1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/huntlabs-hunt-entity

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
README.md 4.1 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 06.03.2025 19:52 9d6536a

Статус сборки

Hunt-entity

Hunt-entity — это объектно-реляционный отображающий инструмент для языка программирования D. Основывается на концепциях JPA.

Поддерживаемые базы данных

  • PostgreSQL 9.0+
  • MySQL 5.1+
  • SQLite 3.7.11+

Внешние зависимости

Пример простого кода

import hunt.entity;

@Table("user")
class User
{
    mixin MakeModel;

    @PrimaryKey
    @AutoIncrement
    int id;

    string name;
    double money;
    string email;
    bool status;
}

void main()
{
    auto option = new EntityOption;

    option.database.driver = "mysql";
    option.database.host = "localhost";
    option.database.port = 3306;
    option.database.database = "test";
    option.database.username = "root";
    option.database.password = "123456";
    option.database.charset = "utf8mb4";
    option.database.prefix = "hunt_";

    EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("default", option);
    EntityManager em = entityManagerFactory.createEntityManager();

    // начинаем транзакцию
    em.getTransaction().begin();

    // определим существующий в базе данных идентификатор строки здесь
    int id = 10;

    auto user = em.find!User(id);
    log("Имя пользователя: ", user.name);

    // завершаем транзакцию
    em.getTransaction().commit();

    em.close();
    entityManagerFactory.close();
}

Вставка строки

    auto user = new User();
    user.name = "Brian";
    user.email = "brian@huntlabs.cn";
    user.money = 99.9;
    
    // вставка пользователя
    em.persist(user);
    log("ID пользователя: ", user.id);

Удаление строки

    int n = em.remove!User(id);
    log("Количество удалённых пользователей: ", n);
```## Обновление строки
```D
    auto user = em.find!User(id);
    log("Имя пользователя: ", user.name);
    user.name = "zoujiaqing";
    em.merge!User(user);
    log("Количество обновлённых пользователей: ", n);

Поиск с использованием CriteriaQuery

    // Создание объекта CriteriaBuilder из em
    CriteriaBuilder builder = em.getCriteriaBuilder();

Использование CriteriaQuery для поиска с несколькими условиями

    // Создание объекта CriteriaBuilder из em
    CriteriaBuilder builder = em.getCriteriaBuilder();

    CriteriaQuery!User criteriaQuery = builder.createQuery!User;
    Root!User root = criteriaQuery.from();

    Predicate p1 = builder.lt(root.field(User.id), 1000);  // ID пользователя меньше 1000.
    Predicate p2 = builder.gt(root.field(User.money), 0);  // Деньги пользователя больше 0.
    Predicate p3 = builder.like(root.field(User.name), "z%");  // Префикс имени пользователя начинается с z.

    TypedQuery!User typedQuery = em.createQuery(criteriaQuery.select(root).where(builder.and(p1, p2), p3));
    User[] users = typedQuery.getResultList();

    log("Количество найденных пользователей: ", users.length);

Доступные версии

Идентификатор Описание
HUNT_SQL_DEBUG Используется для логирования отладочных сообщений о работе с SQL
HUNT_SQL_DEBUG_MORE Используется для логирования более подробных отладочных сообщений о работе с SQL

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/huntlabs-hunt-entity.git
git@api.gitlife.ru:oschina-mirror/huntlabs-hunt-entity.git
oschina-mirror
huntlabs-hunt-entity
huntlabs-hunt-entity
master