Открытый фреймворк ORM для баз данных Android.
Перед использованием данного фреймворка в первую очередь добавьте проект в ваш проект из корневой директории этого проекта, затем настройте ваш app в файле AndroidManifest.xml
следующим образом:
<application
android:name="com.xcode.xandrdb.Session.SessionApplication"
……
>
Без лишних слов, вот пример кода:
package com.xcode.xandrdb.mapper;
import com.xcode.xandrdb.User;
import com.xcode.xandrdb.annotation.Create;
import com.xcode.xandrdb.annotation.Delete;
import com.xcode.xandrdb.annotation.Insert;
import com.xcode.xandrdb.annotation.Select;
import com.xcode.xandrdb.annotation.Update;
import com.xcode.xandrdb.annotation.name;
public interface Test {
// Вставка записи
@Insert("INSERT INTO xiaolei ('sname', 'snumber') VALUES ('xiaolei', 'xiaolei')")
public String insert();
// Удаление записи
@Delete("DELETE FROM xiaolei WHERE id = #{id}")
public String delete(@Param("id") int id);
// Обновление записи
@Update("UPDATE xiaolei SET sname='xiaolei2', snumber='xiaolei2' WHERE (_id=#{id})")
public String update(@Param("id") int id);
// Выборка записей
@Select("SELECT * FROM xiaolei WHERE _id = #{id}")
public User[] select(@Param("id") int id);
// Создание таблицы
@Create("CREATE TABLE #{user.name} (_id INTEGER PRIMARY KEY AUTOINCREMENT, sname TEXT, snumber TEXT)")
public String create(@Param("user") User user);
}
Здесь представлен набор мапперов для различных операций с базами данных. Давайте рассмотрим, как использовать эти мапперы:
Session session = SessionFactory.getSession(new SessionConfig().setDBName("xiaolei"));
Test t1 = session.getMapper(Test.class);
User[] users = t1.select(1);
System.out.println(Arrays.toString(users));
```Поддерживает кэширование данных, иногда требуется кэшировать данные, полученные от запроса, чтобы избежать повторной выборки из базы данных каждый раз при необходимости получения данных. Эта возможность поможет вам в этом.
```java
// Выборка записей
@Catch(500)
@Select("SELECT * FROM xiaolei WHERE sname=#{name}")
public List<User> select(@Param("name") String name);
Аннотация @Catch(500)
принимает значение времени кэширования, которое вы задаете. Без указания значения время кэширования по умолчанию равно 2 * 1000 мс.
Поддерживает транзакции, иногда требуется массово вносить изменения в базу данных. Однако массовое внесение изменений может привести к замедлению работы всего приложения. Для решения этой проблемы вы можете использовать транзакции таким образом:
@Autowired
@Transactional
@Insert("INSERT INTO xiaolei ('sname', 'snumber') VALUES ('xiaolei', 'xiaolei')")
public String insert();
Когда вам требуется выполнить массовые операции с данными, вы можете использовать аннотацию @Transactional
, чтобы решить эту проблему.
При тестировании в эмуляторе при циклическом внесении пятидесяти записей без использования Transaction
затраты времени составили 220 мс.
С использованием Transaction
время выполнения составило всего 7 мс. Кроме того, внутри используется обработчик для асинхронной работы, что никак не влияет на производительность приложения.Не забудьте использовать session.commit()
после завершения всех операций. В противном случае изменения не будут применены.
Да, все операции с базой данных должны выполняться через объект Session
. Затем используйте этот объект Session
, чтобы получить маппер, который внутренне работает через динамическое проксирирование, предоставляя вам объект маппера. Операция над методами, определёнными в этом маппере, эквивалентна работе с базой данных.
Когда-то была настоящая любовь передо мной, Но я её не ценил, И когда она ушла, я начал жалеть о том, что это произошло. Наиболее болезненно для человека — это осознание потери чего-то важного. Если бы мне был дан шанс вернуться назад, я сказал бы этой девушке, что я её люблю! А если бы эта любовь должна была иметь срок действия, Я хотел бы, чтобы он продолжался сто тысяч лет!
Другие считают меня сумасшедшим, но я смеюсь над теми, кто этого не понимает. Не видишь ты могил великих воинов прошлого? Без вина и пищи они возделывали свои поля!
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )