Skip to content

Entity SQL 是一个轻量级的 Java ORM 工具库,旨在简化数据库操作,提供基于注解的实体映射和链式编程的 SQL 构建方式,快速构建单表维护和数据可视化界面。

License

Notifications You must be signed in to change notification settings

wb04307201/entity-sql

Repository files navigation

Entity SQL - Java ORM 库

Entity SQL 是一个轻量级的 Java ORM 工具库,旨在简化数据库操作,提供基于注解的实体映射和链式编程的 SQL 构建方式,快速构建单表维护和数据可视化界面。

star fork star fork
MIT JDK SpringBoot

代码示例

  • 一键生成单表维护界面AI项目
    这是一个基于Spring Boot和AI技术的一键生成单表维护界面的应用。用户只需描述业务需求,系统会自动分析需求并生成相应的Java实体类和Web界面。

示例图片

功能特性

1. 实体映射

  • 基于注解的实体类与数据库表映射
  • 支持主键自动生成(UUID)
  • 字段级别的详细配置(展示、编辑、搜索等)

2. SQL 构建

  • 链式编程 API,易于使用和理解
  • 支持常见的 CRUD 操作
  • 自动处理 SQL 注入防护
  • 支持分页查询
  • 多种条件查询(等于、模糊匹配、范围查询等)

3. 多数据源支持

  • 灵活的数据源配置
  • 自动连接管理和释放

4. 类型转换

  • 自动处理 Java 对象与数据库类型之间的转换
  • 支持常见的数据类型(String、Integer、Date、BigDecimal 等) Table.java

注解系统

  • @Table: 标注实体类对应的表名
  • @Column: 配置字段属性(类型、长度、展示方式等)
  • @Key: 标识主键字段及生成策略
  • @View: 配置字段的展示属性
  • @Edit: 配置字段的编辑属性
  • @Search: 配置字段的搜索属性

SQL API(面向SQL构建)

Entity API(面向实体操作)

使用

引入依赖

增加 JitPack 仓库

<repositories>
    <repository>
        <id>jitpack.io</id>
        <url>https://jitpack.io</url>
    </repository>
</repositories>
<dependency>
    <groupId>com.gitee.wb04307201.entity-sql</groupId>
    <artifactId>entity-sql-spring-boot-starter</artifactId>
    <version>1.4.3</version>
</dependency>

使用

SQL API(面向SQL构建)使用示例

        if (dataSourceHelper.execute(SQL.isTableExists(User.class))) {
        dataSourceHelper.execute(SQL.dropTable(User.class));
        }
        dataSourceHelper.execute(SQL.createTable(User.class));

int count = dataSourceHelper.execute(SQL.insert(User.class).set(User::getId, "11111").set(User::getUserName, "11111"));
        Assertions.assertEquals(count, 1);

count = dataSourceHelper.execute(SQL.update(User.class).set(User::getUserName, "11111+++").eq(User::getId, "11111"));
        Assertions.assertEquals(count, 1);

        IntStream.range(0, 10).forEach(i -> {
        dataSourceHelper.execute(SQL.insert(User.class).set(User::getId, UUID.randomUUID()).set(User::getUserName, UUID.randomUUID()));
        });

List<User> userList = dataSourceHelper.execute(SQL.query(User.class));
        Assertions.assertEquals(userList.size(), 11);

count = dataSourceHelper.execute(SQL.delete(User.class).eq(User::getId, "11111"));

userList = dataSourceHelper.execute(SQL.query(User.class));
        Assertions.assertEquals(userList.size(), 10);

count = dataSourceHelper.execute(SQL.delete(User.class).isNotNull(User::getUserName));
        Assertions.assertEquals(count, 10);

userList = dataSourceHelper.execute(SQL.query(User.class).page(0,1));
        Assertions.assertEquals(userList.size(), 1);

Entity API(面向实体操作)使用示例

先创建一个类

package cn.wubo.entity.sql;

import cn.wubo.entity.sql.core.annotations.*;
import cn.wubo.entity.sql.core.enums.ColumnType;
import cn.wubo.entity.sql.core.enums.EditType;
import lombok.Data;

import java.time.LocalDate;

@Data
@Table(value = "test_user", init = true)
public class User {
    @Key
    @Column(value = "id",key = @Key(isKey = true))
    private String id;

    @Column(value = "user_name", label = "用户名", type = ColumnType.VARCHAR, length = 20, edit = @Edit(required = true),search = @Search(searchable = true))
    private String userName;

    @Column(value = "department", label = "部门",
            items = {@Item(value = "1", label = "部门1"), @Item(value = "2", label = "部门2"), @Item(value = "3", label = "部门3")},
            view = @View(width = 300),
            edit = @Edit(type = EditType.SELECT),
            search = @Search(searchable = true))
    private String department;

    @Column(value = "birth", label = "生日", type = ColumnType.DATE,edit = @Edit(type = EditType.DATE))
    private LocalDate birth;

    @Column(value = "age", label = "年龄", type = ColumnType.NUMBER, precision = 10, scale = 0,edit = @Edit(type = EditType.NUMBER))
    private Integer age;

    @Column(value = "amount", label = "薪酬", type = ColumnType.NUMBER, precision = 10, scale = 2,edit = @Edit(type = EditType.NUMBER))
    private Float amount;

    @Column(value = "status", label = "在职", type = ColumnType.VARCHAR, length = 1,
            items = {@Item(value = "Y", label = "在职"), @Item(value = "N", label = "离职")},
            view = @View(),
            edit = @Edit(type = EditType.CHECKBOX)
    )
    private String status;
}

使用

        if (dataSourceHelper.execute(SQL.isTableExists(User.class))) {
        dataSourceHelper.execute(SQL.dropTable(User.class));
        }
        dataSourceHelper.execute(SQL.createTable(User.class));
User user = new User();
        user.setUserName("99999");
        user.setBirth(LocalDate.now());
        dataSourceHelper.execute(Entity.insertOrUpdate(user));

        user.setUserName("99999+");
        dataSourceHelper.execute(Entity.insertOrUpdate(user));

User user1 = dataSourceHelper.execute(Entity.grtById(user));
        Assertions.assertEquals(user1.getUserName(), "99999+");

List<User> userList = dataSourceHelper.execute(Entity.query(new User()));
        Assertions.assertEquals(userList.size(), 1);

Integer count = dataSourceHelper.execute(Entity.deleteById(user));
        Assertions.assertEquals(count, 1);

userList = dataSourceHelper.execute(Entity.query(new User()));
        Assertions.assertEquals(userList.size(), 0);

快速构建单表维护和数据可视化界面

@Component
public class AppReadyListener implements ApplicationRunner {

    private final EntityWebService entityWebService;

    @Autowired
    public AppReadyListener(EntityWebService entityWebService) {
        this.entityWebService = entityWebService;
    }

    @Override
    public void run(ApplicationArguments args) throws Exception {
        // user 为页面访问标识,多个界面注意标识不要重复
        entityWebService.build("user", User.class);
    }
}

页面访问标识访问页面

http://ip:port/entity/view/user 单表维护
img.png 绘制图表
img_1.png

About

Entity SQL 是一个轻量级的 Java ORM 工具库,旨在简化数据库操作,提供基于注解的实体映射和链式编程的 SQL 构建方式,快速构建单表维护和数据可视化界面。

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published