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

OSCHINA-MIRROR/lab1024-smartdb

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Это зеркальный репозиторий, синхронизируется ежедневно с исходного репозитория.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

SmartDb

Замечательное видение С развитием интернета за последние двадцать лет каждое предприятие достигло определённого уровня цифровизации. Однако с появлением эпохи "промышленного интернета", "новой инфраструктуры", "национальных баз данных" и "национальных открытых фреймворков" всё больше компаний нуждается в создании нового уровня агрегации данных поверх существующей цифровизации (различных баз данных). Поэтому современные системы часто используют несколько баз данных поверх существующих систем.

Поэтому крайне важно иметь фреймворк, который можно освоить за пять минут и который будет идеально решать проблемы работы с несколькими базами данных и источниками данных.

Именно поэтому команда лаборатории 1024 Innovation Lab в городе Лоян, провинции Хэнань, разработала легкий ORM-фреймворк.

Основные характеристики SmartDb

MyBatis уже давно доминирует на рынке в Китае и является очень удобным инструментом. Автор также рекомендует использовать MyBatis в больших проектах. Но есть ситуации, когда MyBatis оказывается недостаточно эффективным, и тогда выбор в пользу SmartDb становится отличной альтернативой.

  • Подключение других баз данных через MyBatis или Hibernate
  • Сценарии разделения чтения и записи, где некоторые данные должны обрабатываться основной базой данных, а другие — дополнительными
  • Сценарии работы с несколькими источниками данных, такие как чтение данных из MySQL и последующее преобразование и запись в SQL Server
  • Выполнение операций с несколькими источниками данных внутри одного метода
  • Простые проекты, ориентированные на скорость разработки, такие как SmartBlog (официальный блог команды)
  • Отказ от использования тяжёлых решений для разделения чтения и записи, таких как Sharding-Sphere, Sharding-JDBC, MyCAT и Cobar

Введение в SmartDb

SmartDb — это ORM-фреймворк на Java, который сосредоточен на работе с SQL и поддерживает работу с несколькими источниками данных и разделение чтения и записи. При этом он не конфликтует с существующими проектами, использующими MyBatis или Hibernate.

Основные характеристики:

  • Поддержка операций ORM, простых CRUD-операций, массовых вставок и пагинации
  • Поддержка MySQL, Oracle, PostgreSQL и SQL Server
  • Возможность внедрения SmartDb в проекты, использующие MyBatis или Hibernate
  • Поддержка нескольких источников данных
  • Поддержка разделения чтения и записи
  • Поддержка маппинга перечислений Enum
  • Поддержка Spring и транзакций Spring
  • Поддержка цепочки вызовов API SQL
  • Поддержка генерации кода
  • Поддержка фильтров
  • Все классы могут быть расширены
  • Поддержка Java 6 (по умолчанию поддерживается Java 8; если требуется поддержка Java 6, добавьте меня в WeChat)

Документация SmartDb

GitHub: https://github.com/1024-lab/smartdb

Gitee: https://gitee.com/lab1024/smartdb

Официальная документация: https://zhuoda.vip/smartdb

Примеры: https://gitee.com/lab1024/smartdb-demos

Примеры использования SmartDb

SmartDb зависимости

<dependency>
  <groupId>net.1024lab</groupId>
  <artifactId>smartdb</artifactId>
  <version>1.2.0</version>
</dependency>

Управление несколькими источниками данных

Выполняйте операции с несколькими базами данных внутри одного метода без необходимости использования аннотаций для переключения между ними.

public void multiDatasource(UserEntity userEntity) {
    // Объект mysqlSmartDb представляет собой соединение с базой данных SQL Server
    SmartDb mysqlSmartDb = build1(); 
    // Объект sqlServerSmartDb представляет собой соединение с базой данных SQL Server
    SmartDb sqlServerSmartDb = build2();
    // Вставка данных в базу данных MySQL
    mysqlSmartDb.insert(userEntity);
    // Вставка данных в базу данных SQL Server
    sqlServerSmartDb.insert(userEntity);
}

Базовые операции ORM

Поддерживает простые операции ORM.

UserEntity userEntity = new UserEntity(1, "zhuoda");
// Вставка
smartDb.insert(userEntity);
smartDb.insertSelective(userEntity); // Вставка только полей, которые не являются null
smartDb.batchInsert(userList); // Массовая вставка
// Обновление
smartDb.update(userEntity);  
smartDb.updateSelective(userEntity); // Обновление только полей, которые не являются null
// Удаление
smartDb.delete(userEntity); // Удаление по первичному ключу

Операции разделения чтения и записи

// По умолчанию все операции выполняются с использованием дополнительных баз данных
List<UserEntity> userList = smartDb.selectSqlBuilder()
        .select("*")
        .from(UserEntity.class)
        .queryList(UserEntity.class);

// Получение основной базы данных
SmartDb writeSmartDb = smartDb.getMaster();
// Вставка данных в основную базу данных
writeSmartDb.insert(userEntity);
// Выполнение других операций с основной базой данных
writeSmartDb.delete(userEntity);
writeSmartDb.updateSelective(userEntity);

Цепочка Builder-операций

SmartDb поддерживает быстрый разработку с помощью четырёх типов цепочек Builder-операций.

Цепочка SelectBuilder-операций

Поддерживает and, or, in, like, group, having, limit и другие.

UserEntity userEntity = smartDb.selectSqlBuilder()
        .select("user.*")
        .select("score.*")
        .from(UserEntity.class)
        .joinLeft("t_score on t_user.id = t_score.user_id")
        .whereAnd("user.id = ?", 1)
        .whereAnd("type = 3")
        .whereAndIn("status", Arrays.asList(1, 2, 3))
        .groupBy("user.type")
        .havingAnd("user.type = 1")
        .queryFirst(UserEntity.class);
Цепочка InsertBuilder-операций
smartDb.insertSqlBuilder()
        .table("t_user")
        .insertColumn("id",1)
        .insertColumn("name","smartdb")
        .insertFunctionColumn("login_time","now()") // SQL функция
        .execute();
Цепочка UpdateBuilder-операций

Обновление поддерживает and, or, in, like и другие.

smartDb.updateSqlBuilder()
        .table("t_user")
        .updateColumn("name = ?","smart")
        .updateColumn("login_time = now()")
        .whereAnd("id = 1")
        .execute();
Цепочка DeleteBuilder-операций

Удаление поддерживает and, or, in, like и другие.

smartDb.deleteSqlBuilder()
        .table("t_user")
        .whereAnd("id = 1")
        .execute();
Цепочка ReplaceBuilder-операций
smartDb.replaceSqlBuilder()
        .table("t_user")
        .replaceColumn("id",1)
        .replaceColumn("name","smartdb")
        .replaceFunctionColumn("login_time","now()")
        .execute();

Создание объекта SmartDb

SmartDb smartDb = 
	SmartDbBuilder.create()
	// Установка источника данных для основной базы данных
	.setMasterDataSource(writeDataSource)
	// Установка источников данных для двух дополнительных баз данных
	.setSlaveDataSource(readDataSource1, readDataSource2)
	// Включение вывода SQL запросов на уровне INFO
	 setShowSql(true)
	// Установка типа поддерживаемой базы данных
	.setSupportDatabaseType(SupportDatabaseType.MYSQL)
	// Установка поддержки Spring
	.setSmartDbExtEnum(SmartDbExtEnum.SPRING5)
	// Преобразование имени таблицы
	.setTableNameConverter(cls -> "t_" + CaseFormat.UPPER_CAMEL.to(CaseFormat.LOWER_UNDERSCORE, cls.getSimpleName()))
	// Преобразование имени столбца
	.setColumnNameConverter(new CaseFormatColumnNameConverter(CaseFormat.LOWER_CAMEL, CaseFormat.LOWER_UNDERSCORE))
	.build();

Документация SmartDb

Официальная документация: https://zhuoda.vip/smartdb

Примеры: https://gitee.com/lab1024/smartdb-demos


Связаться с нами:

Лаборатория 1024 Innovation

Группа общения SmartDb в WeChat (Добавьте меня в WeChat, чтобы присоединиться к группе!)

QR-код группы WeChat

Донат

Открытый исходный код требует времени и усилий. Большое спасибо за ваш донат!>Будьте благословлены донатом этих людей, чтобы они никогда не сталкивалися с ошибками при программировании, получали удвоенную зарплату, встречались с обеспеченными мужчинами-европейцами и достигали вершины своей карьеры!

QR-код для доната


Автор: Zhuo Da, руководитель лаборатории 1024 Innovation, участник различных технических сообществ, исследователь информационных технологий, знакомый с Java и имеющий базовое понимание фронтенд-разработки.

Комментарии ( 0 )

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

Введение

SmartDb — это легковесный Java ORM-фреймворк с поддержкой SQL, множества баз данных и источников данных, а также разделения операций чтения и записи. Он не конфликтует с существующими проектами на основе mybatis или hibernate. Для начала работы потребуется всего 5 минут, что позволит идеально решить проблему с множеством источников данных. Развернуть Свернуть
Apache-2.0
Отмена

Обновления (1)

все

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://gitlife.ru/oschina-mirror/lab1024-smartdb.git
git@gitlife.ru:oschina-mirror/lab1024-smartdb.git
oschina-mirror
lab1024-smartdb
lab1024-smartdb
master