wu-database-lazy-starter(懒人数据库操作-核心增量式更新)
快速入门
简介
特性
- 强大的CRUD操作:内置通过注入 LazyLambdaStream 对象即可实现表单的大部分CRUD操作
- 支持Lambda形式的调用: 通过Lambda表达式,方便的编写各类查询条件
- 内置分页查询:通过构造分页对象查询数据统计分页总数
- 支持多种数据库:支持MySQL
支持数据库
任何能使用 LazyLambdaStream进行CRUD,并且支持标准SQL的数据库,具体支持情况如下
- MySQL
框架架构
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lqViTx11-1668248881766)(img.png)]
代码托管
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 | test1@lazy.com |
2 | 吴三 | 20 | test2@lazy.com |
3 | 吴小四 | 28 | test3@lazy.com |
4 | 吴小五 | 21 | test4@lazy.com |
5 | 吴小六 | 24 | test5@lazy.com |
其对应的数据库 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, 'test1@lazy.com'),
(2, '吴三', 20, 'test2@lazy.com'),
(3, '吴小四', 28, 'test3@lazy.com'),
(4, '吴小五', 21, 'test4@lazy.com'),
(5, '吴小六', 24, 'test5@lazy.com');
初始化工程
创建一个空的 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: rootpassword: rooturl: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghaidriver-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 {@AutowiredLazyLambdaStream lazyLambdaStream;@Testpublic void testSelect() {System.out.println(("----- selectAll method test ------"));// 等同于执行sql select * from sys_userCollection<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: rootpassword: rooturl: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghaidriver-class-name: com.mysql.cj.jdbc.Driver
注解
::: tip 本文将介绍 wu-database-lazy-starter 注解包相关类详解(更多详细描述可点击查看源码注释)
:::
- 描述
- 使用位置对象
@LazyTable
@LazyTable(tableName="sys_user")
public class User {private Long id;private String name;private Integer annualSalary;private String email;
}
属性 | 类型 | 必须指定 | 默认值 | 描述 |
---|---|---|---|---|
tableName | String | 否 | “” | 表名 |
schema | String | 否 | “” | schema |
comment | String | 否 | “” | 表注释 |
perfectTable | boolean | 否 | “false” | 完善表 |
smartFillField | boolean | 否 | false | 智能填充bean属性 针对数据源 如mysql查询结果、http请求结果中包含的数据字段不再当前对象中 |
@LazyTableFieldId
@LazyTable(tableName="sys_user")
public class User {@LazyTableFieldIdprivate Long id;private String name;private Integer annualSalary;private String email;
}
属性 | 类型 | 必须指定 | 默认值 | 描述 |
---|---|---|---|---|
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
@LazyTable(tableName="sys_user")
public class User {private Long id;private String name;@LazyTableField("salary")private Integer annualSalary;private String email;
}
属性 | 类型 | 必须指定 | 默认值 | 描述 |
---|---|---|---|---|
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(懒人数据库操作-核心增量式更新)相关推荐
- phpwind database.php,phpwind中的数据库操作类
phpwind中的数据库操作类 更新时间:2007年01月02日 00:00:00 作者: /*来源:phpwind.net*/ Class DB { var $query_num = 0; fu ...
- 懒人数据库 MongoDB 5.x
MongoDB MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的.它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂 ...
- 懒人python操作,代码中永远只需要导入一个库
Pyforest是一个开源的Python库,可以自动导入代码中使用到的Python库. [阅读全文] 实话说,作为一个程序员还是得不停的学习呀.昨天晚上睡觉之前就在论坛上面溜达了一会儿,发现了有个叫p ...
- MongoDB数据库操作---终端操作
初识MongoDB 概念: 特点 相关安装 我这边用的是MAC版本 在使用mongodb之前,我们需要给它配置一个macOS缺失的软件包管理器,叫做HomeBrew,链接是:HomeBrew 对应的, ...
- Android数据库操作-1
Android采用关系型数据库SQLite3,它是一个支持SQL轻量级的嵌入式数据库,在嵌入式操作系统上有很广泛的应用,WM采用的也是SQLite3<?xml:namespace prefix ...
- thinkphp的数据库操作(上)
如果想了解更多相关知识,可以前往我的个人博客看看:eyes++的个人空间 一:连接数据库与模型初探 ThinkPHP 采用内置抽象层将不同的数据库操作进行封装处理,数据抽象层基于 PDO 模式,无须针 ...
- C语言与数据库操作入门(Win版)
数据库,DataBase,学C语言的是不是想说,很想爱她却并不容易呢?不用着急,C语言也可以操作数据库的,既使你不会Windows API,只要参照本文的方法,写数据库应用程序,你也行.本文以MySq ...
- $cfg_dbtype = mysql_多库操作2:终于实现多个数据库操作
publicUnitOfWork( ISqlSugarClient sqlSugarClient){_sqlSugarClient = sqlSugarClient;} //获取DB,保证唯一性//p ...
- SQL数据库操作完全手册
SQL数据库完全手册 日期:2001-3-24 0:47:00 出处:电脑报 作者:未知 SQL是Structured Quevy Language(结构化查询语言)的缩写.SQL是专为数据库而建立的 ...
最新文章
- 0、Spring 注解驱动开发
- mysql 多表并列查询_MySQL-18(多表查询INNER/LEFT/RIGHT JOIN)
- mysql5.5在windows7下编译的详细步骤_Windows7下编译MySQL5.5的详细步骤
- 计算机视觉开源库OpenCV之边缘检测cv2.canny()函数
- webView 点击连接如何不让跳转到系统的 浏览器
- 1 计算机组成原理第一章 计算机系统概述 计算机发展历程、层次结构、性能指标
- 编译原理简单语法分析器(first,follow,分析表)源码下载
- 爱奇艺漫威等系列电影因版权到期下架 会员无补偿
- 触发器 创建 删除 等操作
- 机器人图规划算法研究现状简述
- 不用找了,基于 Redis 的分布式锁实战来了
- python 客户端_Python客户端
- 在标准宽带光纤上实现量子加密
- 清理服务器挖矿木马病毒
- 谈谈反向代理Nginx
- 3.SEO优化--网站死链解决
- csf格式转换--逼自己一把
- 计算机加号公式,怎样在excel表格中显示加号,而不被当成是公式来计算
- 常用的但是容易忘记的css样式..........持续更新,主要自用
- JavaScript 实现雪花效果
热门文章
- 【CS231n assignment 2022】Assignment 2 - Part 1,全连接网络的初始化以及正反向传播
- 观点| 如何避免GitHub那样断网43秒瘫痪 24 个小时?
- 严重性 代码 说明 项目 文件 行 禁止显示状态 警告 CS8032 无法从...创建分析器...的实例: 未能加载文件或程序集...或它的某一个依赖项。系统找不到指定的文件
- docker部署项目通过127.0.0.1访问数据库:Connection refused
- MySQL中GROUP_CONCAT函数的使用,separator,将多行查询结果用特定字符串连接起来,适用于一对多
- C++中的fstream/ifstream/ofstream和MFC中的CFile/CStdioFile
- 计算机漏洞英语怎么说,游戏漏洞英文怎么写
- Vulkan 简介及其特点
- 勤于奋寻找联盟程序方法介绍
- 自适应阈值(adaptiveThreshold)分割原理及实现