FastBuilder — это быстрый ORM-фреймворк для разработки, поддерживающий базы данных MySQL и Oracle. В слое DAO он позволяет сэкономить более 50% времени разработки.
Следующие функции уже реализованы в FastBuilder:
Планы будущего развития:
Инструмент генерации кода доступен по адресу: http://git.oschina.net/wangwei123/FastBuilderCodeGen**Быстрое начало работы:**
<!-- Настройка базы данных -->
<bean id="dataSource" class="com.jolbox.bonecp.BoneCPDataSource"
destroy-method="close">
<property name="driverClass" value="${db.driver}"/>
<property name="jdbcUrl" value="${db.master.url}"/>
<property name="username" value="${db.master.username}"/>
<property name="password" value="${db.master.password}"/>
</bean>
<!-- Настройка управления транзакциями -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<tx:annotation-driven transaction-manager="transactionManager"/>
//=====================================================================================
//=======================Модульный слой===============================================
//=====================================================================================
package com.ch.sys.model;
import com.ch.fastbuilder.model.Model;
public class Employee extends Model {
public static final String TABLE = "employee";
public static final String ID = "id";
public static final String ACCOUNT = "account";
}
public static String PASSWORD = "пароль";
public static String NICKNAME = "никнейм";
public static String GENDER = "пол";
public static String HEAD_URL = "url_головного_изображения";
public static String TYPE = "тип";
public static String CREATED = "создан";
public Employee() {
super.setPrimaryKey(ID);
super.setTableName(TABLE);
//super.setGenerationType(GenerationType.UUID);
super.setGenerationType(GenerationType.IDENTITY);
super.setColumns(ID, ACCOUNT, PASSWORD, NICKNAME, GENDER, HEAD_URL, TYPE, CREATED);
}
public static Employee getByAccountPwd(String account, String password) {
Map<String, Object> params = new HashMap<>();
params.put("account", account);
params.put("password", SHA1.signature(password));
String sql = "account=:account and password=:password";
Employee employee = Model.Where(sql, params).get(Employee.class);
return employee;
}
}
//=====================================================================================
//=======================Слой сервиса=================================================
//=====================================================================================
@Service
public class EmployeeService {
@Transactional(readOnly = true, propagation = Propagation.SUPPORTS)
public Employee getByAccountPwd(String account, String password) {
Employee employee = Employee.getByAccountPwd(account, password);
return employee;
}
}
``````markdown
#### Ассоциативный запрос:
```java
public class Role extends Model {
/**
*
*/
private static final long serialVersionUID = 1L;
public static String TABLE = "role";
public static String ID = "id";
public static String NAME = "name";
public static String CREATED = "created";
public Role() {
super.setPrimaryKey(ID);
super.setTableName(TABLE);
//super.setGenerationType(GenerationType.UUID);
super.setGenerationType(GenerationType.IDENTITY);
super.setColumns(ID, NAME, CREATED);
}
public static PageResult findByPage(ParamMap params) {
BuilderModel builder = Model.InitParams(params);
PageResult pageResult = builder.findPage(Role.class);
return pageResult;
}
public static Role getByEmployeeId(Long employeeId) {
Map<String, Object> params = new HashMap<>();
params.put("employee_id", employeeId);
BuilderModel builder = Model.InitParams(params);
builder.select("r.id, r.name, r.created");
builder.from("employee_role emr");
builder.innerJoin("role r ON emr.role_id = r.id");
builder.where("emr.employee_id = :employee_id");
}
}
``````md
**Обновление данных:**
* Обновление может выполняться следующими способами:
```java
update();
// или так выполнить метод update
Model.Update(employee);
Удаление одной записи:
// метод удаления
public void delete() {
Employee employee = new Employee();
employee.set(Employee.ID, 1);
employee.delete();
// или так выполнить метод delete
Model.Delete(employee);
// или так выполнить метод delete
// Model.Delete(id, Employee.class);
Model.Delete(1, Employee.class);
}
```java
@Service("roleService")
public class RoleService {
@Transactional(readOnly = true, propagation = Propagation.SUPPORTS)
public Response findPage(ParamMap param) {
Response response = Response.newResponse();
PageResult pageResult = Role.findByPage(param);
return response.setPageResults(pageResult);
}
@Transactional(readOnly = true, propagation = Propagation.SUPPORTS)
public Role getByEmployeeId(Long employeeId) {
Role role = Role.getByEmployeeId(employeeId);
return role;
}
@Transactional(readOnly = false, propagation = Propagation.REQUIRED)
public Response add(Role role) {
Response response = Response.newResponse();
Timestamp time = new Timestamp(System.currentTimeMillis());
role.set(Role.CREATED, time);
role.create();
return response.OK();
}
@Transactional(readOnly = false, propagation = Propagation.REQUIRED)
public Response update(Role role) {
Response response = Response.newResponse();
role.update();
return response.OK();
}
}
Получение одной записи:
package com.ch.sys.service;
import java.util.HashMap;
import java.util.Map;
import org.springframework.stereotype.Service;
import com.ch.fastbuilder.model.Model;
import com.ch.sys.model.Employee;
import com.ch.sys.utils.SHA1;
@Service
public class EmployeeService {
public Employee getByAccountPwd(String account, String password) {
Map<String, Object> params = new HashMap<>();
params.put("account", account);
params.put("password", SHA1.signature(password));
String sql = "account=:account and password=:password";
Employee employee = Model.Where(sql, params);
Пагинация запросов:* Model.InitParams(request)
— требуется передача только pageIndex
и pageSize
, автоматическая пагинация.
public static PageResult findByPage(ParamMap params) {
BuilderModel builder = Model.InitParams(params);
PageResult pageResult = builder.findPage(Role.class);
return pageResult;
}
List<Role> roles = Model.Limit(0, 10).list(Role.class);
Map<String, Object> params = new HashMap<String, Object>();
params.put("id", 5);
params.put("date", new Date());
List<Role> roles = Model.Where("role_id > :id and created < :date", params).limit(1, 10).list(Role.class);
BuilderModel builder = Model.Where("role_id > :id and created < :date", params);
List<Role> roles = builder.limit(1, 10).list(Role.class);
List<Role> roles = Model.Select("id, name, created").limit(1, 10).list(Role.class);
```**Выполнение SQL-запросов:**
Map<String, Object> params = new HashMap<String, Object>();
params.put("name", "Изменение имени");
// Изменение данных
Model.SQL("UPDATE role SET name = :name").withParams(params).execute();
// Выборка данных
Model.SQL("SELECT * FROM Role WHERE id > :id").withParams(params).list(Role.class);
// Подсчет количества записей, остальные операции смотрите в демонстрационном примере
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )