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

OSCHINA-MIRROR/leo_xi-spring-jba

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 12 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 30.11.2024 00:28 b435e59

Spring-JBA

JavaBeanAccess — доступ к объектам Java на основе JDK1.8+.

На данный момент поддерживается только MySql.

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

Последняя версия:

<dependency>
    <groupId>xin.xihc</groupId>
    <artifactId>spring-jba</artifactId>
    <version>${jba.version}</version>
</dependency>

Примечание: начиная с версии 1.7.0, проект не совместим с предыдущими версиями.

Рекомендуется обновить версию.

<a target="_blank" href="https://search.maven.org/search?q=g:%22xin.xihc%22%20AND%20a:%22spring-jba%22">
    <img src="https://img.shields.io/maven-central/v/xin.xihc/spring-jba.svg?label=Maven%20Central">
</a>

SpringJbaDemo демонстрация

Демонстрация доступна по ссылке: https://gitee.com/leo_xi/SpringJbaDemo.

Объяснение аннотаций

  1. @EnableJba — включает создание таблиц spring-jba;

  2. @Table — эта аннотация объявляет объект как табличный объект. Свойства включают следующее: (не поддерживает отношения наследования):

    value      — имя таблицы, начиная с 1.2.0 можно использовать пользовательские имена таблиц;
    remark     — примечание к таблице;
    order      — (начиная с 1.5.0) порядок, по умолчанию 9999;
    ignore     — (начиная с 1.5.0) следует ли игнорировать таблицу, по умолчанию false.
  3. @Column — объявляет свойства поля. Включает следующее: (поддерживает отношения наследования, можно использовать свойства родительского класса):

    value    — имя столбца, начиная с версии 1.7.6 можно использовать пользовательское имя столбца;
    defaultValue — значение по умолчанию;
    notNull  — разрешено ли быть пустым (по умолчанию разрешено);
    primary  — является ли столбец первичным ключом (по умолчанию нет);
    policy  — стратегия генерации первичного ключа (по умолчанию отсутствует);
    length  — ограничение длины;
    remark  — примечание;
    precision — точность (меньше длины), по умолчанию 4;
    charset  — (начиная с версии 1.5.5) устанавливает кодировку символов таблицы, по умолчанию utf8;
    order    — (начиная с версии 1.7.8) соответствует порядку столбцов таблицы, по умолчанию 0.
  4. @Index (начиная с версии 1.5.7) — эта аннотация используется для объявления индекса (одностолбцовый индекс) поля таблицы. Свойства включают в себя следующее: (поддерживает наследование отношений, можно использовать свойства родительского класса):

    value  — имя индекса, используется для группировки, по умолчанию idx_xxxx;
    type  — тип индекса, по умолчанию обычный индекс (Normal, Unique, FullText);
    remark — (начиная с версии 1.5.8) примечание индекса.
  5. @OnUpdateCurrentTimestamp (начиная с версии 1.6.1) — эта аннотация используется для объявления того, будет ли поле таблицы автоматически обновлять временную метку (java.util.Date/java.sql.Timestamp). Поддерживает наследование отношений.

  6. @Alias — атрибут, соответствующий имени столбца (начиная с версии 1.7.6). В основном используется при запросах, когда имя столбца и имя атрибута не совпадают.

  7. @GroupIndex — групповой индекс, составной индекс (начиная с версии 1.7.8). Используется для создания составных индексов, в настоящее время не поддерживает наследование.

  8. @JsonHandler (начиная с версии 1.8.9) — используется для сериализации Json в базу данных (при запросе также десериализуется в объект). Поддерживает наследование.

Тип Java (рекомендуется использовать класс упаковки) Тип MySQL
String (1–64) char (65–19999) varchar / длина > 20000 — text
Byte tinyint(3)
Short smallint(5)
Integer int(10)
Long bigint(19)
Double double(длина, точность)
Float double(длина, точность)
BigDecimal decimal(длина, точность)
Boolean tinyint(3)
java.util.Date datetime(точность)
java.sql.Date date
java.sql.Timestamp Timestamp(точность)
java.sql.Time Time(точность)
Перечисление varchar(длина)
Другое varchar(длина)

Использование учебника

Этот проект представляет собой упрощённую ORM, основанную на spring-JdbcTemplate, поддерживает управление транзакциями, сложные операции требуют самостоятельного написания SQL.

Конфигурация источника данных

# Конфигурация источника данных
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test
spring.datasource.username=root
spring.datasource.password=*****
# Использование пула соединений базы данных Alibaba Druid
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

# Связанные конфигурации jba
# Режим обновления структуры таблицы jba NONE — без операции, CREATE — только создание таблицы, UPDATE — только обновление структуры таблицы, ALL — все, CREATE_DROP — создание при запуске, удаление при закрытии
spring.jba.mode=NONE/ALL/CREATE/UPDATE/CREATE_DROP

# Запись выполнения SQL, ведение журнала с использованием slf4j
logging.level.xin.xihc.jba.core.JbaTemplate=debug

Интерфейс инициализации данных InitDataInterface

Необходимо реализовать следующий метод:

void doInit(JbaTemplate jbaTemplate);

Операции вставки, удаления, изменения и запроса объектов таблицы

Фактическое использование:

Сначала добавьте аннотацию @EnableJba в основной класс входа. Затем введите в нужном месте:

private JbaTemplate jbaTemplate;```

**PageInfo объекта разбивки на страницы, добавление needTotalCount, нужно ли запрашивать общее количество (по умолчанию true)**

Можно использовать методы JbaTemplate следующим образом:

Объект таблицы (необходимо получить имя таблицы) — model, объект параметра — params

`1、public boolean insertModel(Object model);` вставить один объект INSERT INTO tblName (id, name) VALUES (: id,: name);

`2、public void insertModels(Object... models);` пакетная вставка нескольких одинаковых объектов таблицы (рекомендуется не более 50 за раз)

`3、public boolean updateModel(Object model, String... fieldNames) throws RuntimeException;` обновить объект

`4、public boolean deleteModel(Object model) throws RuntimeException;` удалить объект

`5、public <T> T queryColumn(String sql, Object params, Class<T> clazz);` можно запросить только значение столбца, поддерживая параметры Map

`6、public` 1. **queryCount(String sql, Object params)** — подсчёт количества, поддерживает параметры Map.

2. **public int queryCount(Object model)** — подсчитывает количество объектов определённого типа.
3. **public <T> T queryModelOne(Object model, Class<T> clazz, String... orderBy)** — поиск одного объекта.
4. **public <T> T queryOne(String sql, Object params, Class<T> clazz)** — поиск смешанного (пользовательского) объекта, поддерживает параметры Map.
5. **public <T> List<T> queryModelList(Object model, Class<T> clazz, PageInfo pageInfo, String... orderBy)** — список объектов определённого типа.
6. **public <T> List<T> queryList(String sql, Object params, Class<T> clazz, PageInfo pageInfo)** — список смешанных объектов, поддерживает параметры Map.
7. **public boolean executeSQL(final String sql)** — выполняет определённый SQL-запрос.
8. **public boolean executeSQL(final String sql, Object params)** — выполняет SQL-запросы с параметрами, поддерживает параметры Map.
9. **public NamedParameterJdbcTemplate getJdbcOperations()** — позволяет использовать больше внутренних методов (например, обработку полей BLOB и вызов хранимых процедур).
10. **public void batchUpdate(final String sql, Map<String, ?>... params)** — пакетное выполнение SQL, можно вставлять INSERT и UPDATE.
11. **public void batchUpdate(final String sql, Object[] models)** — пакетное выполнение SQL, можно вставлять INSERT и UPDATE.

**Новые методы версии 1.8.6:**

12. **public <T> List<T> queryList(Select select, Class<T> clazz, PageInfo pageInfo)** — запрос списка из базы данных с использованием Select.
13. **public <T> T queryOne(Select select, Class<T> clazz)** — запрос одного элемента из базы данных с помощью Select.
14. **public boolean update(Update update)** — выполнение SQL-запроса с использованием объекта Update.

# Контакты и общение
QQ группа: 340654726

<a target="_blank" href="//shang.qq.com/wpa/qunwpa?idkey=161c33ee05b20185424556f09f488ddefb55ef0599c3695c3d59d64f876d4ccd"><img border="0" src="//pub.idqqimg.com/wpa/images/group.png" alt="Spring-Jba交流群" title="Spring-Jba交流群"></a>

Обновление: 2020-05-27

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

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

1
https://api.gitlife.ru/oschina-mirror/leo_xi-spring-jba.git
git@api.gitlife.ru:oschina-mirror/leo_xi-spring-jba.git
oschina-mirror
leo_xi-spring-jba
leo_xi-spring-jba
master