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

OSCHINA-MIRROR/iJovi-vonce-sqlbean

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 8.5 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 26.11.2024 05:08 4d4c063

SqlBean

Введение

SqlBean — это плагин ORM, который генерирует SQL-запросы на основе синтаксиса Java. Его концепция заключается в том, чтобы ослабить зависимость от операций с базой данных на этапе разработки. Нет необходимости создавать таблицы перед разработкой, можно сразу писать код для сущностей и бизнес-логики. После запуска проекта автоматически создаются таблицы и поддерживается их структура. Встроен широкий спектр часто используемых методов, поддерживается гибкий условный запрос, отсутствует слой DAO. В большинстве случаев нет необходимости писать SQL-запрос вручную, что помогает быстро разрабатывать бизнес-функции. Поддерживает Mybatis и Spring Jdbc.
🚀 Особенности: несколько источников данных, динамическая схема, разделение чтения и записи, автоматическое создание таблиц, автоматическое обслуживание структуры таблиц, объединение таблиц, оптимистичная блокировка, разбиение на страницы.
💻 Среда: JDK8+, Mybatis3.2.4+, (Spring MVC 4.1.2+, Spring Boot 1.x, Spring Boot 2.x).
💿 База данных: Mysql, MariaDB, Oracle, Sqlserver2008+, Postgresql, DB2, Derby, Sqlite, HSQL, H2.
Для использования SqlBean на Android перейдите по ссылке 👉 gitee(рекомендуется) или github.
Проект генерации кода SuperCode 👉 https://gitee.com/iJovi/supercode.

Примеры использования SqlBean и генерации кода 👉 https://gitee.com/iJovi/sqlbean-example.

Быстрый старт

1. Импортировать зависимость Maven
<dependency>
    <groupId>cn.vonce</groupId>
    <artifactId>vonce-sqlbean-spring</artifactId>
    <version>1.6.3</version>
</dependency>
2. Добавить аннотации к классу сущности
@Data
public class BaseEntity {

    @SqlId(type = IdType.SNOWFLAKE_ID_16)
    @SqlColumn(notNull = true, remarks = "唯一id")//字段不能为null,表字段注释
    private Long id;

    @SqlColumn(remarks = "创建者")//表字段注释
    private Long creator;

    @SqlDefaultValue(with = FillWith.INSERT)
    @SqlColumn(remarks = "创建时间")//表字段注释
    private Date createTime;

    @SqlColumn(remarks = "更新者")//表字段注释
    private Long updater;

    @SqlDefaultValue(with = FillWith.UPDATE)
    @SqlColumn(remarks = "更新时间")//表字段注释
    private Date updateTime;

    @SqlLogically
    @SqlColumn(remarks = "是否删除(0正常 1删除)")//表字段注释
    private Boolean deleted;

}

@Data
//autoAlter设置为true,实体类有变动时自动同步表结构
@SqlTable(autoAlter = true, value = "t_user", remarks = "用户")
public class User extends BaseEntity {

    @SqlColumn(notNull = true, remarks = "用户名")//字段不能为null,表字段注释
    private String userName;

    @SqlColumn(remarks = "姓名")//表字段注释
    private String nickName;

    @SqlColumn(notNull = true, remarks = "手机号码")//表字段注释
    private String mobilePhone;

    @SqlColumn(notNull = true, remarks = "密码")//表字段注释
    private String password;

    @SqlColumn(notNull = true, remarks = "性别")//表字段注释
    private Integer gender;

    @SqlColumn(remarks = "年龄")//表字段注释
    private Integer age;

    @SqlColumn(remarks = "电子邮箱")//表字段注释
    private String email;

    @SqlColumn(remarks = "头像", oldName = "head_portrait")//表字段注释,修改表字段名称需要在oldName指定旧的名称
    private String avatar;

    @SqlDefaultValue(with = FillWith.INSERT)
    @SqlColumn(notNull = true, remarks = "状态(0正常 1停用)")//字段不能为null,表字段注释
    private UserStatus status;

}
3. Не требуется слой Dao, интерфейс сервиса Service должен наследовать SqlBeanService<сущность, тип идентификатора>
public interface UserService extends SqlBeanService<User, Long> {
    //Здесь можно написать собственные методы упаковки

}
4. Реализация класса сервиса должна наследовать MybatisSqlBeanServiceImpl<сущность, тип идентификатора> и реализовывать свой интерфейс службы
//Если вы используете Spring Jdbc, то вместо этого наследуйте от SpringJdbcSqlBeanServiceImpl
@Service
public class UserServiceImpl extends MybatisSqlBeanServiceImpl<User, Long> implements UserService {

}
5. Контроллер

@RequestMapping("user")
@RestController
public class UserController {

    @Autowired
    private UserService userService;

    //Запрос
    @GetMapping("select")
    public RS select() {
        //Список запросов
        List<User> list = userService.select();
        list = userService.selectBy(Wrapper.where(Cond.gt(User::getId, 10)).and(Cond.lt(User::getId, 20)));
        //Указанный запрос
        list = userService.select(new Select().column(User::getId, User::getUserName, User::getMobilePhone).where().gt(User::getId, 10));

        //Запрос одной строки
        User user = userService.selectById(1L);
        user = userService.selectOneBy(Wrapper.where(eq(User::getId, 1001)));

        //sql семантический запрос «20-летний пользователь женского пола, отсортированный в обратном порядке по времени создания, получить первые 10 записей»
        list = userService.select(new Select().column(User::getId, User::getUserName, User::getMobilePhone).where().eq(User::getAge, 22).and().eq(User::getGender, 0).back().orderByDesc(User::getCreateTime).page(0, 10));

``` ```
// Запрос к таблице, в которой содержатся данные о пользователях. 
// В запросе выбираются следующие поля: id, имя пользователя (userName), мобильный телефон (mobilePhone), 
// провинция (province), город (city), район (area) и детали адреса (details).
// Также выполняется внутреннее соединение с таблицей адресов пользователей (UserAddress).
// Выбираются только те пользователи, возраст которых больше 20 лет, а пол равен нулю (женский).
// Пользователи выбираются в порядке убывания времени создания.
// Первые 10 пользователей заносятся в список.

Select select = new Select();
select.column(User::getId, User::getUserName, User::getMobilePhone, UserAddress::getProvince, UserAddress::getCity, UserAddress::getArea, UserAddress::getDetails);
select.innerJoin(UserAddress.class).on().eq(UserAddress::getId, User::getId);
select.where().gt(User::getAge, 22).and().eq(User::getGender, 0);
select.orderByDesc(User::getCreateTime);
select.page(0, 10);

// Создаётся карта, которая содержит информацию о выбранных пользователях.
Map<String, Object> map = userService.selectMap(select);
List<Map<String, Object>> mapList = userService.selectMapList(select);

return super.successHint("Получение успешно", list);

Опубликовать ( 0 )

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

1
https://api.gitlife.ru/oschina-mirror/iJovi-vonce-sqlbean.git
git@api.gitlife.ru:oschina-mirror/iJovi-vonce-sqlbean.git
oschina-mirror
iJovi-vonce-sqlbean
iJovi-vonce-sqlbean
master