##Notice
Это инструменты или фреймворк, что угодно, я просто сделал это для себя и практикуюсь, как начать проект с открытым исходным кодом. Я надеюсь, предшественники могут дать мне несколько советов, если вам это не нравится, скажите мне почему, спасибо.
##Foreword
Я раньше сомневался, использовать Springboot или JFinal.
JFinal имеет очень удобный ORM, но автор считает, что аннотации увеличат стоимость обучения, а я не новичок.
Я думаю, что аннотации значительно уменьшат количество настроек.
В конце концов, я выбираю SpringBoot. Но JPA не создан для динамического запроса. Поэтому я хочу написать свой ORM, похожий на JFinal.
##x-orm Introduce
x-orm построен на JDBCTemplate, поэтому вы можете не беспокоиться о транзакции или источнике данных, это похоже на jdbc.
Модель — это объект сущности + dao, как домен в DDD, но не совсем то же самое.
Record — это просто неотображаемый объект, он может выполнять SQL-запросы без сущности. В некоторых случаях это очень удобно.
##Setting x-orm основан на SpringBoot + Jdbc, поэтому вам нужно добавить следующее в Maven dependencies:
<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>
Помимо настроек jdbc и spring, настройка запуска очень проста, вам просто нужно добавить:
Register.registerModel("com.xdivo.model"); //сканировать пакет
и
Register.registerRecord("online_class"); //имя базы данных
как
@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.initThreadPool(100, 100, 1000); //инициализация пула потоков 0 означает использование значений по умолчанию
}
}
Если вам не нужно использовать Record или ThreadPool, вы можете удалить эти строки;
Определение модели:
/**
* User
* 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")
@Column(name = "student_id_")
private Student student;
public long getId() {
return id;
}
public User setId(long id) {
this.id = id;
return this;
}
public String getMobile() {
return mobile;
}
public User setMobile(String mobile) {
this.mobile = mobile;
return this;
}
public String getPassword() {
return password;
}
public User setPassword(String password) {
this.password = password;
return this;
}
public Room getRoom() {
return room;
}
public User setRoom(Room room) {
this.room = room;
return this;
}
public Student getStudent() {
return student;
}
public User setStudent(Student student) {
this.student = student;
return this;
}
}
Когда вы используете его, это как JFinal:
//сохраняем пользователя
new User().setMobile("abc")
.setPassword("123")
.save();
//находим пользователя по первичному ключу
User user = new User().findById(id);
``` ```
// Получаем объект-ссылку
user.getStudent();
// Асинхронное сохранение в базу данных
user.asyncSave();
// Асинхронное обновление в базе данных
user.asyncUpdate();
// Используем запись
Record record = Db.findById("c_user", 23);
// Преобразуем в модель, можно использовать модель для получения объекта-ссылки
User user = record.toModel(User.class);
// Сохраняем запись
Record record = new Record()
.set("mobile_", "abc")
.set("password_", "123");
Db.save("c_user", record);
// Непосредственно используем jdbcTemplate и преобразуем в Модель
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);
##Contact
###QQ: 41369927
###E-Mail: 41369927@qq.com
###WeChat: jay41369927
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )