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

OSCHINA-MIRROR/zycgit-dbvisitor

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

Введение


Документы переводятся с помощью программного обеспечения для перевода. Оригинал для README.md.

Project Home: https://www.dbvisitor.net

QQ群:948706820 zyc@byshell.org License Maven Central

dbVisitor — это инструмент ORM для баз данных, предоставляющий сопоставление объектов, более богатую обработку типов, чем Mybatis, динамический SQL, хранимые процедуры, более 20 диалектов, вложенные транзакции, несколько источников данных, условные конструкторы, стратегии INSERT и множественные операторы/множественные результаты. Он совместим с использованием Spring и MyBatis.

Он не зависит от какого-либо другого фреймворка, поэтому его можно легко интегрировать с любым фреймворком.

Особенности

  • Знакомое

    • JdbcTemplate (как Spring JDBC)
    • Файлы маппера (совместимы с большинством MyBatis)
    • LambdaTemplate (похож на MyBatis Plus, jOOQ и BeetlSQL)
    • @Insert, @Update, @Delete, @Query, @Callable (как JPA)
  • Поддержка транзакций

    • Поддержка 5 уровней изоляции транзакций, 7 моделей распространения транзакций (так же, как Spring TX)
    • Предоставляет управление транзакциями TransactionTemplate и TransactionManager (такое же использование, как и Spring)
  • Функции

    • Поддержка запросов с разбивкой на страницы и нескольких диалектов баз данных (более 20)
    • Поддержка стратегий INSERT (INTO, UPDATE, IGNORE)
    • Более богатый TypeHandler (MyBatis 40+, dbVisitor 60+)
    • Файл маппера поддерживает несколько операторов и несколько результатов
    • предоставляет специальный механизм расширения правил '@{XXX, expr, XXXXX}', чтобы упростить динамический SQL
    • Поддержка хранимых процедур
    • Поддерживает типы времени в JDBC 4.2 и Java8
    • Поддержка нескольких источников данных

Быстрый старт

Зависимости

<dependency>
  <groupId>net.hasor</groupId>
  <artifactId>dbvisitor</artifactId>
  <version>5.4.1</version><!-- 查看最新版本:https://mvnrepository.com/artifact/net.hasor/dbvisitor -->
</dependency>

Драйверы базы данных, например:

<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <version>8.0.22</version>
</dependency>

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

<dependency>
  <groupId>com.zaxxer</groupId>
  <artifactId>HikariCP</artifactId>
  <version>4.0.3</version>
</dependency>

Наконец, подготовьте таблицу базы данных и инициализируйте некоторые данные ('createdB.sql' файл)

drop table if exists `test_user`;
create table `test_using` (
    `id`          int(11) auto_increment,
    `name`        varchar(255),
    `age`         int,
    `create_time` datetime,
    primary key (`id`)
);

insert into `test_user` values (1, 'mali', 26, now());
insert into `test_user` values (2, 'dative', 32, now());
insert into `test_user` values (3, 'jon wes', 41, now());
insert into `test_user` values (4, 'mary', 66, now());
insert into `test_user` values (5, 'matt', 25, now());

Использование SQL

// создание источника данных
DataSource dataSource = DsUtils.dsMySql();

// создать объект JdbcTemplate
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);

// загрузить скрипт тестовых данных
jdbcTemplate.loadSQL("CreateDB.sql");

// Запрос данных и возврат их в виде карты
List<Map<String, Object>> mapList = jdbcTemplate.queryForList("select * from test_user");

Выведите «mapList» на консоль

/--------------------------------------------\
| id | name    | age | create_time           |
|--------------------------------------------|
| 1  | mali    | 26  | 2021-11-12 19:14:06.0 |
| 2  | dative  | 32  |
``` 2021-11-12 19:14:06.0  
| 3  | jon wes | 41  | 2021-11-12 19:14:06.0 |  
| 4  | mary    | 66  | 2021-11-12 19:14:06.0 |   
| 5  | matt    | 25  | 2021-11-12 19:14:06.0 |
\--------------------------------------------/

Для получения данных с помощью объекта DTO необходимо создать объект DTO.
```java
// Объявить его с аннотацией @Table
// - 'test_user' преобразует горб, чтобы получить имя класса 'TestUser'
@Table(mapUnderscoreToCamelCase = true)
public class TestUser {
  private Integer id;
  private String name;
  private Integer age;
  private Date createTime;

  // геттеры и сеттеры опущены
}

Затем используйте метод queryForList, чтобы выполнить запрос напрямую, и консоль может получить тот же результат.

List<TestUser> dtoList = jdbcTemplate.queryForList("select * from test_user", TestUser.class);

Использование CURD

Для операций однотабличного CURD можно использовать подкласс JdbcTemplate — LambdaTemplate.

// создание источника данных
DataSource dataSource = DsUtils.dsMySql();

// создать объект LambdaTemplate
LambdaTemplate lambdaTemplate = new LambdaTemplate(dataSource);

// Запрос, все данные
List<TestUser> dtoList = lambdaTemplate.lambdaQuery(TestUser.class)
                .queryForList();

// Вставить новые данные
TestUser newUser = new TestUser();
newUser.setName("new User");
newUser.setAge(33);
newUser.setCreateTime(new Date());

int result = lambdaTemplate.lambdaInsert(TestUser.class)
                .applyEntity(newUser)
                .executeSumResult();

// Обновить, обновить имя с Mali на mala
TestUser sample = new TestUser();
sample.setName("mala");

int result = lambdaTemplate.lambdaUpdate(TestUser.class)
                .eq(TestUser::getId, 1)
                .updateBySample(sample)
                .doUpdate();

// Удалить данные, чей ID равен 2
int result = lambdaTemplate.lambdaUpdate(TestUser.class)
                .eq(TestUser::getId, 2)
                .doDelete();

Общий Mapper

Интерфейс универсального Mapper выполняет некоторые базовые операции, всё ещё используя однотабличный CRUD в качестве примера.

// Создание источника данных
DataSource dataSource = DsUtils.dsMySql();

// Создать BaseMapper
DalSession session = new DalSession(dataSource);
BaseMapper<TestUser> baseMapper = session.createBaseMapper(TestUser.class);

// Запрос, все данные
List<TestUser> dtoList = baseMapper.query().queryForList();

// Вставка новых данных
TestUser newUser = new TestUser();
newUser.setName("new User");
newUser.setAge(33);
newUser.setCreateTime(new Date());

int result = baseMapper.insert(newUser);

// Обновление, обновление имени с Mali на mala
TestUser sample = baseMapper.queryById(1);
sample.setName("mala");

int result = baseMapper.updateById(sample);

// Удаление данных, чей ID равен 2
int result = baseMapper.deleteById(2);

Аннотированный Mapper

Как Mapper, вы можете определить свои собственные методы и выполнять SQL-запросы через аннотации.

// BaseMapper необязателен, и наследование ему эквивалентно добавлению расширенного набора однотабличных curds.
@SimpleMapper
public interface TestUserMapper extends BaseMapper<TestUser> {
  @Insert("insert into `test_user` (name,age,create_time) values (#{name}, #{age}, now())")
  int insertUser(@Param("name") String name, @Param("age") int age);
  
  @Update("update `test_user` set age = #{age} where id = #{id}")
  int updateAge(@Param("id") int userId, @Param("age") int newAge);
  
  @Delete("delete from `test_user` where age > #{age}")
  int deleteByAge(@Param("age") int age);
  
  @Query(value = "select * from `test_user` where  #{beginAge} < age and age < #{endAge}", resultType = TestUser.class)
  List<TestUser> queryByAge(@Param("beginAge") int beginAge, @Param("endAge") int endAge);
}
// Создать сеанс
DalSession session = new DalSession(dataSource);

// Создаём интерфейс Mapper
TestUserMapper userMapper = session.createMapper(TestUserMapper.class);

Управление SQL с использованием XML

Лучшее место для унифицированного управления SQL по-прежнему остаётся в файлах Mapper, а файлы dbVisitor Mapper очень хорошо совместимы с MyBatis при очень низких затратах на обучение. Текст запроса:

Associate Mapper files with interface classes (extends from BaseMapper is optional):

@RefMapper("/mapper/quick_dao3/TestUserMapper.xml")
public interface TestUserDAO extends BaseMapper<TestUser> {
    int insertUser(@Param("name") String name, @Param("age") int age);

    int updateAge(@Param("id") int userId, @Param("age") int newAge);

    int deleteByAge(@Param("age") int age);

    List<TestUser> queryByAge(@Param("beginAge") int beginAge, @Param("endAge") int endAge);
}

In order to better understand and use dbVisitor Mapper files, it is recommended to add DTD validation. In addition dbVisitor compatible with MyBatis3 DTD for most of the MyBatis project can be normally compatible.

Перевод текста запроса на русский язык:

Связывание файлов Mapper с интерфейсами классов (расширение от BaseMapper необязательно):

@RefMapper("/mapper/quick_dao3/TestUserMapper.xml")
public interface TestUserDAO расширяет BaseMapper<TestUser> {
  int insertUser(имя строки @Param, возраст int @Param);

  int updateAge(идентификатор пользователя int @Param, новый возраст int @Param);

  int deleteByAge(возраст int @Param);

  Список<Тестовый пользователь> запрос по возрасту (начальный возраст int @Param, конечный возраст int @Param);
}

В целях лучшего понимания и использования файлов Mapper dbVisitor рекомендуется добавить проверку DTD. Кроме того, dbVisitor совместим с DTD MyBatis3 для большинства проектов MyBatis, что обычно совместимо. // Вы также можете вернуть результаты постраничного поиска с информацией о разбиении на страницы

PageResult<TestUser> queryByAge2(
          @Param("beginAge") int beginAge, 
          @Param("endAge") int endAge, 
          Page pageInfo);

}


### Использование транзакции

Начиная и передавая транзакцию, вы также можете последовательно включить несколько транзакций, например:

```java {4,8}
DataSource dataSource = DsUtils.dsMySql();
TransactionManager manager = DataSourceManager.getManager(dataSource);

TransactionStatus tranA = manager.begin();
...
manager.commit(tranA);
DataSource dataSource = DsUtils.dsMySql();
TransactionManager manager = DataSourceManager.getManager(dataSource);

TransactionStatus tranA = manager.begin();
TransactionStatus tranB = manager.begin();
TransactionStatus tranC = manager.begin();

...

manager.commit(tranC);
manager.commit(tranB);
manager.commit(tranA);

Параметры метода «begin» позволяют вам установить распространение и изоляцию транзакции.

TransactionStatus tranA = manager.begin(
        Propagation.REQUIRES_NEW, // распространение
        Isolation.READ_COMMITTED  // изоляция
);

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

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

Введение

dbVisitor — это инструмент ORM для баз данных, который предоставляет объектное отображение, богатую обработку типов, динамический SQL, хранимые процедуры, встроенный язык разбиения на страницы, поддержку вложенных транзакций, множественных источников данных, конструктора условий, стратегий INSERT, а также многооператорных/многорезультатных запро... Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

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

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