特性
- 强大的CRUD操作:内置通过注入 LazyLambdaStream 对象即可实现表单的大部分CRUD操作
- 支持Lambda形式的调用: 通过Lambda表达式,方便的编写各类查询条件
- 内置分页查询:通过构造分页对象查询数据统计分页总数
- 支持多种数据库:支持MySQL
支持数据库
任何能使用 LazyLambdaStream进行CRUD,并且支持标准SQL的数据库,具体支持情况如下
- MySQL
代码托管
Gitee|Github
参与贡献
欢迎各位同学一起参与完善wu-database-lazy-starter
- 贡献代码:代码地址wu-database-lazy-starter,欢迎提交Issue或者Pull Requests
教程、案例、使用者名单
- 暂无
版本功能
-
Lazy-DB 是一款针对懒人快速开发的ORM框架
-
支持实体类反射数据进行数据库CRUD操作
-
新增灵性数据插入更新(自动过滤空值)
-
新增配置导出数据忽略指定字段
spring.datasource.ignore-exported-fields: - id -
新增配置声明导出数据中的特殊字符
spring.datasource.special-fields: - ASC -
新增@LazyScan自动扫描实体创建表
-
新增自动填充表数据
-
新增创建表方法
-
新增更新表字段方法
-
修复数据插入布尔类型、数字类型字段 字符串更改为->原始数据类型
-
新增逆向工程功能生成对应的Java class 支持mybatis 适配
-
使用Spring 进行事物管理
-
修复数据为null 时执行sql 数据为 "null" 问题
-
新增自动过滤null字段的upsert接口
快速开始
我们将通过一个简单的 Demo 来阐述 wu-database-lazy-starter 的强大功能,在此之前,我们假设您已经:
- 拥有 Java 开发环境以及相应 IDE
- 熟悉 Spring Boot
- 熟悉 Maven
现有一张 User 表,其表结构如下:
id | name | annual_salary | |
---|---|---|---|
1 | 吴小二 | 18 | [email protected] |
2 | 吴三 | 20 | [email protected] |
3 | 吴小四 | 28 | [email protected] |
4 | 吴小五 | 21 | [email protected] |
5 | 吴小六 | 24 | [email protected] |
其对应的数据库 Schema 脚本如下:
DROP TABLE IF EXISTS user; CREATE TABLE user ( id BIGINT(20) NOT NULL COMMENT '主键ID', name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名', annual_salary INT(11) NULL DEFAULT NULL COMMENT '年薪', email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱', PRIMARY KEY (id) );
其对应的数据库 Data 脚本如下:
DELETE FROM user; INSERT INTO user (id, name, annual_salary, email) VALUES (1, '吴小二', 18, '[email protected]'), (2, '吴三', 20, '[email protected]'), (3, '吴小四', 28, '[email protected]'), (4, '吴小五', 21, '[email protected]'), (5, '吴小六', 24, '[email protected]');
初始化工程
创建一个空的 Spring Boot 工程(工程将以 MySQL 作为默认数据库进行演示)
添加依赖
引入 Spring Boot Starter 父工程:
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.6.7</version> <relativePath/> </parent>
引入 spring-boot-starter、spring-boot-starter-test、wu-database-lazy-starter、mysql 依赖
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!--懒人依赖--> <dependency> <groupId>top.wu2020</groupId> <artifactId>wu-database-lazy-starter</artifactId> <version>1.0.8-JDK1.8</version> </dependency> <!--mysql--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> </dependencies>
配置
在 application.yml 配置文件中添加 mysql 数据库的相关配置:
# DataSource Config spring: datasource: username: root password: root url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai driver-class-name: com.mysql.cj.jdbc.Driver
Spring Boot 启动类:
@SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }
编码
编写实体类 User.java(此处使用了 Lombok 简化代码)
@Data public class User { private Long id; private String name; private Integer annualSalary; private String email; }
开始使用
添加测试类,进行功能测试:
@SpringBootTest public class SampleTest { @Autowired LazyLambdaStream lazyLambdaStream; @Test public void testSelect() { System.out.println(("----- selectAll method test ------")); // 等同于执行sql select * from sys_user Collection<User> userList = lazyLambdaStream.select(LazyWrappers.<User>lambdaWrapper()).collection(); Assert.assertEquals(5, userList.size()); userList.forEach(System.out::println); } }
小结
通过以上几个简单的步骤,我们就实现了 User 表的 CRUD 功能,甚至连 XML 文件都不用编写!
安装
全新的 wu-database-lazy-starter 1.0.8-JDK1.8 版本基于 JDK8,提供了 lambda 形式的调用,所以安装集成 MP3.0 要求如下:
- JDK 8+
- Maven or Gradle
Spring Boot
Maven:
<dependency> <groupId>top.wu2020</groupId> <artifactId>wu-database-lazy-starter</artifactId> <version>1.0.8-JDK1.8</version> </dependency>
配置
wu-database-lazy-starter 的配置异常的简单,我们仅需要一些简单的配置即可使用 wu-database-lazy-starter 的强大功能!
Spring Boot 工程
- 配置yaml
# DataSource Config spring: datasource: username: root password: root url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai driver-class-name: com.mysql.cj.jdbc.Driver
注解
::: tip 本文将介绍 wu-database-lazy-starter 注解包相关类详解(更多详细描述可点击查看源码注释) :::
- 描述
- 使用位置对象
@LazyTable
DELETE FROM user; INSERT INTO user (id, name, annual_salary, email) VALUES (1, '吴小二', 18, '[email protected]'), (2, '吴三', 20, '[email protected]'), (3, '吴小四', 28, '[email protected]'), (4, '吴小五', 21, '[email protected]'), (5, '吴小六', 24, '[email protected]');
0
属性 | 类型 | 必须指定 | 默认值 | 描述 |
---|---|---|---|---|
tableName | String | 否 | "" | 表名 |
schema | String | 否 | "" | schema |
comment | String | 否 | "" | 表注释 |
perfectTable | boolean | 否 | "false" | 完善表 |
smartFillField | boolean | 否 | false | 智能填充bean属性 针对数据源 如mysql查询结果、http请求结果中包含的数据字段不再当前对象中 |
@LazyTableFieldId
DELETE FROM user; INSERT INTO user (id, name, annual_salary, email) VALUES (1, '吴小二', 18, '[email protected]'), (2, '吴三', 20, '[email protected]'), (3, '吴小四', 28, '[email protected]'), (4, '吴小五', 21, '[email protected]'), (5, '吴小六', 24, '[email protected]');
1
属性 | 类型 | 必须指定 | 默认值 | 描述 |
---|---|---|---|---|
value | String | 否 | "" | 字段名 |
name | String | 否 | "" | 字段名 |
comment | String | 否 | "" | 字段注释 |
type | String | 否 | "" | 字段了类型(varchar、int等) |
indexType | LayerField.LayerFieldType | 否 | LayerField.LayerFieldType.ID | 索引类型 |
idType | IdType | 否 | AUTOMATIC_ID | 主键自增类型 |
LayerFieldType
值 | 描述 |
---|---|
FIELD_TYPE | 字段类型 |
ID | 数据库 ID |
UNIQUE | 唯一性索引 |
AUTOMATIC | 自动的 |
IdType
值 | 描述 |
---|---|
AUTOMATIC_ID | 主键ID 默认自增 |
INPUT_ID | 输入主键 |
@LazyTableField
DELETE FROM user; INSERT INTO user (id, name, annual_salary, email) VALUES (1, '吴小二', 18, '[email protected]'), (2, '吴三', 20, '[email protected]'), (3, '吴小四', 28, '[email protected]'), (4, '吴小五', 21, '[email protected]'), (5, '吴小六', 24, '[email protected]');
2
属性 | 类型 | 必须指定 | 默认值 | 描述 |
---|---|---|---|---|
value | String | 否 | "" | 字段名 |
name | String | 否 | "" | 字段名 |
comment | String | 否 | "" | 字段注释 |
columnType | String | 否 | "" | 字段了类型(varchar、int等) |
exist | boolean | 否 | true | 是否存在 |
indexType | LayerField.LayerFieldType | 否 | LayerField.LayerFieldType.ID | 索引类型 |
idType | IdType | 否 | AUTOMATIC_ID | 主键自增类型 |
快速测试
自动导入 wu-database-lazy-starter 测试所需相关配置。
示例工程
源码:👉 wu-database-lazy-starter-simple(opens new window)
使用教程
添加测试依赖
Maven:
DELETE FROM user; INSERT INTO user (id, name, annual_salary, email) VALUES (1, '吴小二', 18, '[email protected]'), (2, '吴三', 20, '[email protected]'), (3, '吴小四', 28, '[email protected]'), (4, '吴小五', 21, '[email protected]'), (5, '吴小六', 24, '[email protected]');
3
Gradle:
DELETE FROM user; INSERT INTO user (id, name, annual_salary, email) VALUES (1, '吴小二', 18, '[email protected]'), (2, '吴三', 20, '[email protected]'), (3, '吴小四', 28, '[email protected]'), (4, '吴小五', 21, '[email protected]'), (5, '吴小六', 24, '[email protected]');
4
编写测试用例
DELETE FROM user; INSERT INTO user (id, name, annual_salary, email) VALUES (1, '吴小二', 18, '[email protected]'), (2, '吴三', 20, '[email protected]'), (3, '吴小四', 28, '[email protected]'), (4, '吴小五', 21, '[email protected]'), (5, '吴小六', 24, '[email protected]');
5
核心功能
代码生成器
快速开始
安装
DELETE FROM user; INSERT INTO user (id, name, annual_salary, email) VALUES (1, '吴小二', 18, '[email protected]'), (2, '吴三', 20, '[email protected]'), (3, '吴小四', 28, '[email protected]'), (4, '吴小五', 21, '[email protected]'), (5, '吴小六', 24, '[email protected]');
3
::: tip 直接使用maven引入项目,通过配置文件加载生成代码 :::
配置文件
DELETE FROM user; INSERT INTO user (id, name, annual_salary, email) VALUES (1, '吴小二', 18, '[email protected]'), (2, '吴三', 20, '[email protected]'), (3, '吴小四', 28, '[email protected]'), (4, '吴小五', 21, '[email protected]'), (5, '吴小六', 24, '[email protected]');
7
使用
启动Spring-boot的启动类即可
成品
CRUD 接口
upsert
DELETE FROM user; INSERT INTO user (id, name, annual_salary, email) VALUES (1, '吴小二', 18, '[email protected]'), (2, '吴三', 20, '[email protected]'), (3, '吴小四', 28, '[email protected]'), (4, '吴小五', 21, '[email protected]'), (5, '吴小六', 24, '[email protected]');
8
参数说明
类型 | 参数名 | 描述 |
---|---|---|
Object... | objects | 任意实体对象 |
upsert 案例
DELETE FROM user; INSERT INTO user (id, name, annual_salary, email) VALUES (1, '吴小二', 18, '[email protected]'), (2, '吴三', 20, '[email protected]'), (3, '吴小四', 28, '[email protected]'), (4, '吴小五', 21, '[email protected]'), (5, '吴小六', 24, '[email protected]');
9
insert
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.6.7</version> <relativePath/> </parent>
0
参数说明
类型 | 参数名 | 描述 |
---|---|---|
T | t | 实体对象 |
insert 案例
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.6.7</version> <relativePath/> </parent>
1
smartUpsert
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.6.7</version> <relativePath/> </parent>
2
参数说明
类型 | 参数名 | 描述 |
---|---|---|
Object... | t | 任意实体对象 |
smartUpsert 案例
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.6.7</version> <relativePath/> </parent>
3
upsertRemoveNull
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.6.7</version> <relativePath/> </parent>
4
参数说明
类型 | 参数名 | 描述 |
---|---|---|
Object... | t | 任意实体对象 |
upsertRemoveNull 案例
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.6.7</version> <relativePath/> </parent>
5
lazyPage
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.6.7</version> <relativePath/> </parent>
6
参数说明
类型 | 参数名 | 描述 |
---|---|---|
Page | lazyPage | 分页对象 |
Class | returnType | 返回数据类型 |
String | sql | 执行的sql语句 |
Object... | params | sql执行参数 |
lazyPage 案例
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.6.7</version> <relativePath/> </parent>
7
executeSQL
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.6.7</version> <relativePath/> </parent>
8
参数说明
类型 | 参数名 | 描述 |
---|---|---|
Class | t | 返回数据类型 |
String | sql | 执行的sql语句 |
Object... | params | sql执行参数 |
executeSQL 案例
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.6.7</version> <relativePath/> </parent>
9
executeSQLForBean
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!--懒人依赖--> <dependency> <groupId>top.wu2020</groupId> <artifactId>wu-database-lazy-starter</artifactId> <version>1.0.8-JDK1.8</version> </dependency> <!--mysql--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> </dependencies>
0
参数说明
类型 | 参数名 | 描述 |
---|---|---|
Class | t | 返回数据类型 |
String | sql | 执行的sql语句 |
Object... | params | sql执行参数 |
executeSQLForBean 案例
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!--懒人依赖--> <dependency> <groupId>top.wu2020</groupId> <artifactId>wu-database-lazy-starter</artifactId> <version>1.0.8-JDK1.8</version> </dependency> <!--mysql--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> </dependencies>
1
perfect
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!--懒人依赖--> <dependency> <groupId>top.wu2020</groupId> <artifactId>wu-database-lazy-starter</artifactId> <version>1.0.8-JDK1.8</version> </dependency> <!--mysql--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> </dependencies>
2
参数说明
类型 | 参数名 | 描述 |
---|---|---|
Class... | entityClasss | 实体对象 |
perfect 案例
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!--懒人依赖--> <dependency> <groupId>top.wu2020</groupId> <artifactId>wu-database-lazy-starter</artifactId> <version>1.0.8-JDK1.8</version> </dependency> <!--mysql--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> </dependencies>
3
createTable
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!--懒人依赖--> <dependency> <groupId>top.wu2020</groupId> <artifactId>wu-database-lazy-starter</artifactId> <version>1.0.8-JDK1.8</version> </dependency> <!--mysql--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> </dependencies>
4
参数说明
类型 | 参数名 | 描述 |
---|---|---|
Class... | entityClasss | 实体对象 |
createTable 案例
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!--懒人依赖--> <dependency> <groupId>top.wu2020</groupId> <artifactId>wu-database-lazy-starter</artifactId> <version>1.0.8-JDK1.8</version> </dependency> <!--mysql--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> </dependencies>
5
updateTable
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!--懒人依赖--> <dependency> <groupId>top.wu2020</groupId> <artifactId>wu-database-lazy-starter</artifactId> <version>1.0.8-JDK1.8</version> </dependency> <!--mysql--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> </dependencies>
6
参数说明
类型 | 参数名 | 描述 |
---|---|---|
Class... | entityClasss | 实体对象 |
updateTable 案例
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!--懒人依赖--> <dependency> <groupId>top.wu2020</groupId> <artifactId>wu-database-lazy-starter</artifactId> <version>1.0.8-JDK1.8</version> </dependency> <!--mysql--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> </dependencies>
7
execute
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!--懒人依赖--> <dependency> <groupId>top.wu2020</groupId> <artifactId>wu-database-lazy-starter</artifactId> <version>1.0.8-JDK1.8</version> </dependency> <!--mysql--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> </dependencies>
8
参数说明
类型 | 参数名 | 描述 |
---|---|---|
PersistenceRepository | persistenceRepository | 预执行SQL需要的属性 |
execute 案例
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!--懒人依赖--> <dependency> <groupId>top.wu2020</groupId> <artifactId>wu-database-lazy-starter</artifactId> <version>1.0.8-JDK1.8</version> </dependency> <!--mysql--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> </dependencies>
9
executeOne
# DataSource Config spring: datasource: username: root password: root url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai driver-class-name: com.mysql.cj.jdbc.Driver
0
参数说明
类型 | 参数名 | 描述 |
---|---|---|
PersistenceRepository | persistenceRepository | 预执行SQL需要的属性 |
executeOne 案例
# DataSource Config spring: datasource: username: root password: root url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai driver-class-name: com.mysql.cj.jdbc.Driver
1
聪明懒人的操作接口
saveSqlFile
# DataSource Config spring: datasource: username: root password: root url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai driver-class-name: com.mysql.cj.jdbc.Driver
2
参数说明
类型 | 参数名 | 描述 |
---|---|---|
String | nameDatabase | 数据库名 默认当前连接数据 |
saveSoftSqlFile
# DataSource Config spring: datasource: username: root password: root url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai driver-class-name: com.mysql.cj.jdbc.Driver
3
参数说明
类型 | 参数名 | 描述 |
---|---|---|
String | nameDatabase | 数据库名 默认当前连接数据 |
saveUpsertSqlFile
# DataSource Config spring: datasource: username: root password: root url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai driver-class-name: com.mysql.cj.jdbc.Driver
4
参数说明
类型 | 参数名 | 描述 |
---|---|---|
String | nameDatabase | 数据库名 默认当前连接数据 |
stuffed
# DataSource Config spring: datasource: username: root password: root url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai driver-class-name: com.mysql.cj.jdbc.Driver
5
参数说明
类型 | 参数名 | 描述 |
---|---|---|
String | schema | 数据库名 |
String | table | 表名 |
Long | num | 数量 |
stuffedAll
# DataSource Config spring: datasource: username: root password: root url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai driver-class-name: com.mysql.cj.jdbc.Driver
6
参数说明
类型 | 参数名 | 描述 |
---|---|---|
Long | num | 存储数据数量 |
stuffedJava
# DataSource Config spring: datasource: username: root password: root url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai driver-class-name: com.mysql.cj.jdbc.Driver
7
参数说明
类型 | 参数名 | 描述 |
---|---|---|
String | schema | 数据库 |
String | tableName | 表名 |
还没有评论,来说两句吧...