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

OSCHINA-MIRROR/msgcode-x-orm

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

###Note 2016-07-24 04:08   更新0.0.2-SNAPSHOT

  1. Добавить Model связанные отношения.
  2. Оптимизировать структуру регистрации объектов.
  3. В Record добавить метод toModel для поддержания связанных отношений с Model.

###Note   0.0.1-SNAPSHOT Существует серьёзная ошибка. Невозможно использовать нормально.

###Заявление Этот инструмент создан исключительно для личного использования и не имеет намерения конкурировать с другими проектами. Приветствую всех экспертов, которые могут дать мне советы. Не нравится этот проект — не критикуйте его.

###Введение Я был программистом, который когда-то сомневался между использованием SpringBoot и Jfinal. ORM в Jfinal очень хорош, но контроллер не очень удобен, и официальная поддержка отсутствует. Jfinal-ext поддерживает аннотации, но написание модульных тестов затруднительно. Jfinal также не поддерживает RESTful. На OSCgit есть несколько основанных на Jfinal фреймворков RESTful, но без официальной поддержки они кажутся странными. Например, чтобы получить PathParam, нужно использовать getAttr(), что кажется странным. В конце концов я выбрал SpringBoot из-за большой экосистемы Spring, хотя библиотеки Spring могут быть большими, они всегда полезны. SpringBoot с простой конфигурацией действительно меня привлекает, а в сочетании с мощным и стабильным SpringMVC это стало решающим фактором. Однако SpringBoot со встроенным JPA может привести к смерти при написании сложных запросов и динамических запросов, поэтому я решил создать ORM-фреймворк, основанный на JDBC, похожий на JFinal (на самом деле это просто хорошо упакованный инструмент).

###X-orm введение Как и в JFinal, есть Model и Db+Record, но я добавил аннотации к Model, что упрощает конфигурацию. Регистрация Record уступает волне JFinal... младший брат ещё неопытен. Кажется, что производительность при запуске сервиса значительно хуже, чем у JFinal. Функции всё ещё находятся в процессе доработки. Не буду больше говорить, если вам интересно, попробуйте и дайте звезду.

###Конфигурация x-orm основан на SpringBoot+Jdbc, Maven зависит от следующих вещей:

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.3.6.RELEASE</version>
  </parent>

  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

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

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>

Конфигурация очень проста, просто добавьте два регистрационных оператора в класс запуска SpringBoot, если Record не нужен, то можно не заполнять:

@Controller
@EnableAutoConfiguration
@ComponentScan(basePackages = "com.xdivo")
public class SpringBootStarter {

    public static void main(String[] args) throws Exception {
        SpringApplication.run(SpringBootStarter.class, args);
        Register.registerModel("com.xdivo.model"); //扫描的包名
        Register.registerRecord("online_class"); //数据库名
        Register.initTheadPool(100, 100, 1000); //初始化线程池 0为使用默认值
    }
}

Определение Model:

/**
 * 用户类
 * Created by liujunjie on 16-7-19.
 */
@Entity(table = "c_user")
public class User extends Model<User> {

    @PK
    @Column(name = "id_")
    private long id;

    @Column(name = "mobile_")
    private String mobile;

    @Column(name = "password_")
    private String password;

    @Join(refColumn = "id")
    @Column(name = "room_id_")
    private Room room;

    @Join(refColumn = "id_") //关联的refColumn的值为数据库的关联列
    @Column(name = "student_id_")
    private Student student;

    //геттеры и сеттеры
}

Использование аналогично JFinal:

//сохранение User объекта
new User().setMobile("abc")
      .setPassword("123")
      .save();

//поиск User по первичному ключу
User user = new User().findById(id);

//получение связанного объекта

//асинхронное сохранение в базу данных
user.asyncSave();

//асинхронное обновление в базе данных
user.asyncUpdate();
//поиск record
Record record = Db.findById("c_user", 23);

//преобразование в Model (после преобразования в Model можно напрямую использовать геттеры для получения связанных объектов)
User user = record.toModel(User.class);

//сохранение Record объекта
Record record = new Record()
    .set("mobile_", "abc")
    .set("password_", "123");
Db.save("c_user", record);
//использование JdbcTemplate для добавления пользовательских запросов и преобразование в Model
Map<String, Object> resultMap = jdbcTemplate.queryForMap("SELECT * FROM user WHERE id = ?", 1);
User user = new User().mapping(resultMap);

List<Map<String, Object>> resultList = jdbcTemplate.queryForList("SELECT * FROM user");
List<User> users = new User().mappingList(resultList);
``` Вот перевод текста на русский язык:

Паводочная (ступенчатая) разбивка на страницы (в настоящее время поддерживается только для столбцов типа Number). * * @param orderColName имя столбца сортировки * @param orderColValue значение столбца сортировки * @param direction — направление * @param params — параметры * @param pageSize — количество элементов на странице * @return ScrollResult */ public ScrollResult scroll(String orderColName, Number orderColValue, String direction, Map<String, Object> params, int pageSize)

// Метод разбивки на страницы с прокруткой ScrollResult result = user.scroll("id", id, Model.Direction.DESC, null, 2);

Всё, что касается транзакций, основано на SpringBoot. Это сэкономило нам немало времени и усилий.

Контакты

###QQ: 41369927 ###Электронная почта: 41369927@qq.com


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

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

Введение

На основе Spring Boot и JDBC, подобно JFinal, ORM. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

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

Участники

все

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

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