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.
Объяснение аннотаций
@EnableJba
— включает создание таблиц spring-jba;
@Table
— эта аннотация объявляет объект как табличный объект. Свойства включают следующее: (не поддерживает отношения наследования):
value — имя таблицы, начиная с 1.2.0 можно использовать пользовательские имена таблиц;
remark — примечание к таблице;
order — (начиная с 1.5.0) порядок, по умолчанию 9999;
ignore — (начиная с 1.5.0) следует ли игнорировать таблицу, по умолчанию false.
@Column
— объявляет свойства поля. Включает следующее: (поддерживает отношения наследования, можно использовать свойства родительского класса):
value — имя столбца, начиная с версии 1.7.6 можно использовать пользовательское имя столбца;
defaultValue — значение по умолчанию;
notNull — разрешено ли быть пустым (по умолчанию разрешено);
primary — является ли столбец первичным ключом (по умолчанию нет);
policy — стратегия генерации первичного ключа (по умолчанию отсутствует);
length — ограничение длины;
remark — примечание;
precision — точность (меньше длины), по умолчанию 4;
charset — (начиная с версии 1.5.5) устанавливает кодировку символов таблицы, по умолчанию utf8;
order — (начиная с версии 1.7.8) соответствует порядку столбцов таблицы, по умолчанию 0.
@Index
(начиная с версии 1.5.7) — эта аннотация используется для объявления индекса (одностолбцовый индекс) поля таблицы. Свойства включают в себя следующее: (поддерживает наследование отношений, можно использовать свойства родительского класса):
value — имя индекса, используется для группировки, по умолчанию idx_xxxx;
type — тип индекса, по умолчанию обычный индекс (Normal, Unique, FullText);
remark — (начиная с версии 1.5.8) примечание индекса.
@OnUpdateCurrentTimestamp
(начиная с версии 1.6.1) — эта аннотация используется для объявления того, будет ли поле таблицы автоматически обновлять временную метку (java.util.Date/java.sql.Timestamp). Поддерживает наследование отношений.
@Alias
— атрибут, соответствующий имени столбца (начиная с версии 1.7.6). В основном используется при запросах, когда имя столбца и имя атрибута не совпадают.
@GroupIndex
— групповой индекс, составной индекс (начиная с версии 1.7.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 )