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

OSCHINA-MIRROR/luckyjayce-DBExecutor

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

DBExecutor

Основные функции:

  1. Используется блокировка чтения-записи, поддерживается многопоточная работа с данными.
  2. Поддерживаются транзакции.
  3. Поддерживается ORM.
  4. Кэш SQL, кэш структуры таблицы.

Этот набор библиотек в основном используется для работы с базами данных Android. Он всегда основан на концепции «один класс — одна таблица». Достаточно создать класс сущности, и можно не беспокоиться о том, как он будет храниться в базе данных, а также не нужно заново писать код для добавления, изменения, удаления и запроса. Основные функции уже реализованы за вас. Добавление, изменение, удаление и запрос данных выполняются одной командой:

boolean isSuccess = db.insert(person);
boolean isSuccess = db.updateById(person);
boolean isSuccess  = db.deleteById(Person.class,1);
List<Person> persons = db.findAll(Person.class);
  • library_DB02 — исходный код проекта.
  • DBLibrary_TestCase — тестовые примеры проекта, которые описывают основные способы использования этой библиотеки.
  • doc — веб-документация.
  • db.jar — jar-пакет этой библиотеки.
  • doc.chm — chm-документация этой библиотеки.
  • дизайн фреймворка.docx — uml-диаграмма этой библиотеки, созданная в виде изображения.
  • дизайн фреймворка.mdl — uml-диаграмма этой библиотеки в формате mdl, описывающая архитектуру всей библиотеки.

Если у вас есть какие-либо предложения или вопросы, вы можете связаться со мной по электронной почте 794629068@qq.com.

В заключение я хотел бы выразить свою благодарность автору кода XUtils wyouflf. Этот код представляет собой пересмотр и оптимизацию модуля базы данных открытого исходного кода XUtils. Его структура очень разумна, и многие вещи были улучшены на её основе.

Определение простого класса сущности, соответствующего таблице

@Table(name = "Person")
public class Person {
 @Id(autoIncrement = true)
 private int id;
 private String name;
 private int age;
 
 public int getId() {
  return id;
 }
 
 public void setId(int id) {
  this.id = id;
 }
 
 public String getName() {
  return name;
 }
 
 public void setName(String name) {
  this.name = name;
 }
 
 public int getAge() {
  return age;
 }
 
 public void setAge(int age) {
  this.age = age;
 }
 
}

Необходимо, чтобы поле, объявленное с помощью @Id, соответствовало полю id в таблице. autoIncrement = true означает автоинкремент. @Table может быть опущено, если имя таблицы совпадает с именем пакета + именем класса. Поддерживаются базовые типы и их обёртки, а также типы, определённые java.sql.Date. Если вам нужно поддерживать другие типы полей, обратитесь к TestColumnConverter.java в DBLibrary_TestCase.

Основные классы

  1. DBExecutor используется для выполнения SQL-запросов. Один экземпляр DBExecutor соответствует одной базе данных. Чтобы получить исполнителя для базы данных по умолчанию: DBExecutor executor = DBExecutor.getInstance(context); Чтобы получить исполнителя для конкретной базы данных: DBExecutor.getInstance(dbHelper)

Он предоставляет основные методы, такие как db.execute(sqls), db.executeQuery(sql) и т. д., которые упрощают добавление, изменение, удаление и запросы. При выполнении SQL не нужно беспокоиться о существовании таблицы. Если таблица не существует, она будет создана автоматически.

  1. Sql используется в запросах DBExecutor. Отличается от обычного текстового SQL тем, что содержит: sql.getTable(); // Таблица, над которой выполняется операция sql.getSqlText(); // SQL-запрос с возможностью использования заполнителей ? sql.getBindValues(); // Значения, соответствующие заполнителям ?

sql.setCheckTableExit(checkTableExit); // Устанавливает, проверять ли существование таблицы при выполнении SQL. По умолчанию установлено значение true. Если при проверке обнаруживается, что таблица не существует, она создаётся автоматически. Если установить значение false, проверка не производится. Не стоит бояться сложности, мы можем использовать SqlFactory для создания Sql.

  1. SqlFactory используется для создания SQL-запросов, включая сложные операции добавления, изменения, удаления и запросов. Например:

// Запрос Sql sql = SqlFactory.find(Person.class); sql = SqlFactory.find(Person.class).where("name", "=", "试着飞"); sql = SqlFactory.find(Person.class).where("age", "=", 10).or("age", "=", 11); sql = SqlFactory.find(Person.class).where("age", "=", 10).orderBy("name", false); sql = SqlFactory.find(Person.class).where("age", "=", 10).orderBy("name", false).limit(1); sql = SqlFactory.find(Person.class).where("name", like, "%飞"); sql = SqlFactory.find(Person.class).where("name", like, ""); sql = SqlFactory.find(Person.class).where("age", in, new int[] { 10, 11, 12 }); sql = SqlFactory.find(Person.class).where("name", in, new String[] { "小明", "小红" }); sql = SqlFactory.find(Person.class, "name", "age").where("name", "=", "试着飞"); sql = SqlFactory.find(Person.class, "count(*) as num").where("age", "=", 11); sql = SqlFactory.find(Person.class, "max(age) as maxAge", "min(age) as minAge").where("sex", "=", "男"); sql = SqlFactory.find(Person.class, new MaxFunction("age", "maxAge"), new MinFunction("age", "minAge")).where("sex", "=", "男"); sql = SqlFactory.find(Person.class).where("name=? and age=?", new Object[] { "小明", 11 });

// Удаление sql = SqlFactory.deleteAll(Person.class); sql = SqlFactory.delete(Person.class).where("age", "=", 11); sql = SqlFactory.deleteById(Person.class, 11); sql = SqlFactory.deleteById(Person.class, new int[] { 11, 12 });

// Обновление sql = SqlFactory.update(Person.class, new String[] { "name", "age" }, new Object[] { "小明", 11 }).where("id", "=", 1); sql = SqlFactory.updateById(new Person(1, "小明", 11, "男")); sql = SqlFactory.updateById(new Person(1, "小明", 11, "муж"), "name");

// Если существует запись с id равным 1, то обновить, иначе вставить новую запись sql = SqlFactory.updateOrInsertById(new Person(1,

...

Текст обрывается. ``` "小明", 11, "男"));

// 插入语句 sql = SqlFactory.insert(new Person(1, "小明", 11, "муж"));

// 自拼接sql语句 sql = SqlFactory.makeSql(Person.class, "select * from Person where age = ?", new Object[] { 11 });


**Скрытие конфигурации**  
-keepclasseswithmembers class * { @com.shizhefei.db.annotations.Id <fields>; *;}

Подробнее см. в документации проекта.

---

License
=======

Copyright 2014 shizhefei(LuckyJayce)

Licensed under the Apache License, Version 2.0 (the «License»);
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an «AS IS» BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

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

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

Введение

Описание недоступно Развернуть Свернуть
Apache-2.0
Отмена

Обновления

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

Участники

все

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

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