nalu,在java中使用lambda查询数据库
不忘初心
最开始接触写代码的时候,用的是C井,查数据库直接硬编码sql,挺难受的。
后来学习到EntityFramework,用起来是真香,都是强类型,各种智能提示,代码写起来极度舒适,效率起飞。
最近要用java搞项目,接触了mybatis,玩的sql语句放xml,瞬间不香了。
一顿百度,想找个类似EntityFramework的类库来查数据库,找到mybatis-plus,
介绍是支持lambda查数据,再研究了下发现和自己想要的很不一样,特别是多表多条件查的场景。
最后是自己动手,丰衣足食。
使用方法
maven坐标
<dependency>
<groupId>io.github.eeroom</groupId>
<artifactId>nalu</artifactId>
<version>2.4</version>
</dependency>
默认约定
1、创建和数据库表同名的poco类,类的字段名称和表的列名称一致
对于字段的类型是枚举的情况,数据库必须是varchar,nalu才可以正常处理字段和列值之间的值映射
2、创建一个数据库对应的dbcontext类,这个类需要继承io.github.eeroom.nalu.DbContext。
3、当前支持的数据库有mysql,mariadb,sqlserver。
e.g.



查,API列表
dbset 指定要查询的表,每个查询都从这个方法开始
select 指定要查询的列,2个重载
join 连接表,有2个重载方法
where 筛选,支持简单或复杂的where条件,任意函数,包括你的自定义函数,有多个重载方法
groupBy 指定分组
having 分组筛选,多个重载
orderBy 排序,顺序
orderByDescending 排序,逆序
skipTake 分页
toListByPaging 获取分页查询结果,多个重载
toList 获取查询结果,不分页,多个重载
e.g.

增,API列表
add 指定要新增的数据,支持批量,多个重载
setInsertCol 指定要赋值的列,对应sql语句中要set value的列,2个重载
saveChange 执行操作,可以指定事务隔离级别,2个重载,增删改的任意多个组合在一次saveChange中则为一个事务进行执行
e.g.

删,API列表
delete 指定要要删数据的表或具体要删的数据,支持批量,多个重载
where 筛选条件,支持简单或复杂的where条件,任意函数,包括你的自定义函数,有多个重载方法
saveChange 执行操作,可以指定事务隔离级别,2个重载,增删改的任意多个组合在一次saveChange中则为一个事务进行执行
e.g.

改,API列表
edit 指定要要修改的表或具体要修改的数据,支持批量,多个重载
setUpdateCol 指定要修改的列
where 筛选条件,支持简单或复杂的where条件,任意函数,包括你的自定义函数,有多个重载方法
saveChange 执行操作,可以指定事务隔离级别,2个重载,增删改的任意多个组合在一次saveChange中则为一个事务进行执行
e.g.

nalu,在java中使用lambda查询数据库的更多相关文章
- Lambda 表达式,Java中应用Lambda 表达式
一.Lambda 表达式 简单来说,编程中提到的 lambda 表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数. 链接:知乎 先举一个普通的 Python 例 ...
- shell脚本中sqlite3命令查询数据库失败返回空,并将错误信息打印到标准错误输出
shell脚本中sqlite3命令查询数据库失败返回空,并将错误信息打印到标准错误输出 如: #/bin/sh local ret='sqlite3 test.db "select test ...
- 理解和运用Java中的Lambda
前提 回想一下,JDK8是2014年发布正式版的,到现在为(2020-02-08)止已经过去了5年多.JDK8引入的两个比较强大的新特性是Lambda表达式(下文的Lambda特指JDK提供的Lamb ...
- Java中的lambda匿名函数使用
Java中的lambda匿名函数使用 lambda匿名函数的使用是为了满足某些情况下需要临时定义函数,或者事先定义,需要时才使用.在python里面,lambda表达式的表达方式为:lambda 参数 ...
- Java从入门到精通——数据库篇之JAVA中的对Oracle数据库操作
在Java中对Oracle数据库的操作分为两种:一.查询.二.非查询. 下面是我对其进行总结: 一.查询数据 /** * 根据用户代码查询 * @param userId * @return 如果存在 ...
- 网络编程-Java中的Internet查询
前提 在深入理解URL.URI等概念,或者学些Socket相关的知识之,有必要系统理解一下Internet相关的一些基础知识. Internet地址 连接到Internet(因特网)的设备称为节点(n ...
- 自己理解Java中的lambda
lambda是什么 "Lambda 表达式"(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lam ...
- Java中的Lambda表达式
Lambda来源于希腊字母入,发音为 /'læmdə/对高数有所了解的人都知道λ用于声明一个数学逻辑系统,表示根据XX的输入参数,会返回某个Y结果.这正是编程语言中函数(方法)的意思.因此Lambd ...
- Entity FrameWork 中使用Lambda访问数据库性能优化
在使用Entity Framework 访问数据库时,我们经常使用Lambda表达式,但是如果不小心的话,很容易就掉到坑里了.比如下面的例子:用Lambda访问MSSqlServer中的NewsInf ...
随机推荐
- 2.8 rust 枚举与模式匹配
Enums and Pattern Matching 摘要 枚举定义 enum IpAddrKind { V4, V6, } 枚举方法 fn main() { enum Message { Quit, ...
- velocity示例
创建maven项目 pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns ...
- java面试--(生成随机数,获取重复次数最多,并且数是最大的一个,打印出来)
import java.util.*; public class MaxRandom { public static void main(String[] args){ int[] num = new ...
- Taro 3.5 canary 发布:支持适配 鸿蒙
一.背景 鸿蒙作为华为自研开发的一款可以实现万物互联的操作系统,一经推出就受到了很大的关注,被国人寄予了厚望.而鸿蒙也没让人失望,今年 Harmony2.0 正式推出供用户进行升级之后,在短短的三个月 ...
- 莫烦python教程学习笔记——线性回归模型的属性
#调用查看线性回归的几个属性 # Youtube video tutorial: https://www.youtube.com/channel/UCdyjiB5H8Pu7aDTNVXTTpcg # ...
- 莫烦python教程学习笔记——使用波士顿数据集、生成用于回归的数据集
# View more python learning tutorial on my Youtube and Youku channel!!! # Youtube video tutorial: ht ...
- Java基础语法与流程控制
Java基础语法与流程控制 跟着狂神学Java的第二天O(∩_∩)O~,养成一个总结的习惯 志同道合的小伙伴可以一起学习狂神的视频 本节地址:https://www.kuangstudy.com/co ...
- Springboot整合MongoDB(Eclipse版本)
IDEA版本其实也差不多的,大同小异 简单Demo地址: https://blog.csdn.net/shirukai/article/details/82152243 Springboot项目整合M ...
- Springboot 入门及Demo
一:SpringBoot入门1.1:SpringBoot简介Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的 ...
- SpringBoot项目bootstrap.yml配置文件不加载
bootstrap.yml需要引入springcloud的包才会加载 <dependency> <groupId>org.springframework.cloud</g ...