Замечательное видение С развитием интернета за последние двадцать лет каждое предприятие достигло определённого уровня цифровизации. Однако с появлением эпохи "промышленного интернета", "новой инфраструктуры", "национальных баз данных" и "национальных открытых фреймворков" всё больше компаний нуждается в создании нового уровня агрегации данных поверх существующей цифровизации (различных баз данных). Поэтому современные системы часто используют несколько баз данных поверх существующих систем.
Поэтому крайне важно иметь фреймворк, который можно освоить за пять минут и который будет идеально решать проблемы работы с несколькими базами данных и источниками данных.
Именно поэтому команда лаборатории 1024 Innovation Lab в городе Лоян, провинции Хэнань, разработала легкий ORM-фреймворк.
MyBatis уже давно доминирует на рынке в Китае и является очень удобным инструментом. Автор также рекомендует использовать MyBatis в больших проектах. Но есть ситуации, когда MyBatis оказывается недостаточно эффективным, и тогда выбор в пользу SmartDb становится отличной альтернативой.
SmartDb — это ORM-фреймворк на Java, который сосредоточен на работе с SQL и поддерживает работу с несколькими источниками данных и разделение чтения и записи. При этом он не конфликтует с существующими проектами, использующими MyBatis или Hibernate.
Основные характеристики:
GitHub: https://github.com/1024-lab/smartdb
Gitee: https://gitee.com/lab1024/smartdb
Официальная документация: https://zhuoda.vip/smartdb
Примеры: https://gitee.com/lab1024/smartdb-demos
<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.
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);
SmartDb поддерживает быстрый разработку с помощью четырёх типов цепочек Builder-операций.
Поддерживает 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);
smartDb.insertSqlBuilder()
.table("t_user")
.insertColumn("id",1)
.insertColumn("name","smartdb")
.insertFunctionColumn("login_time","now()") // SQL функция
.execute();
Обновление поддерживает and, or, in, like и другие.
smartDb.updateSqlBuilder()
.table("t_user")
.updateColumn("name = ?","smart")
.updateColumn("login_time = now()")
.whereAnd("id = 1")
.execute();
Удаление поддерживает and, or, in, like и другие.
smartDb.deleteSqlBuilder()
.table("t_user")
.whereAnd("id = 1")
.execute();
smartDb.replaceSqlBuilder()
.table("t_user")
.replaceColumn("id",1)
.replaceColumn("name","smartdb")
.replaceFunctionColumn("login_time","now()")
.execute();
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();
Официальная документация: https://zhuoda.vip/smartdb
Примеры: https://gitee.com/lab1024/smartdb-demos
Открытый исходный код требует времени и усилий. Большое спасибо за ваш донат!>Будьте благословлены донатом этих людей, чтобы они никогда не сталкивалися с ошибками при программировании, получали удвоенную зарплату, встречались с обеспеченными мужчинами-европейцами и достигали вершины своей карьеры!
Автор: Zhuo Da, руководитель лаборатории 1024 Innovation, участник различных технических сообществ, исследователь информационных технологий, знакомый с Java и имеющий базовое понимание фронтенд-разработки.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )