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 ...
随机推荐
- 通过Shell统计PV和UV
PV.UV是网站分析中最基础.最常见的指标.PV即PageView,网站浏览量,指页面的浏览次数,用以衡量网站用户访问的网页数量.用户没打开一个页面便记录1次PV,多次打开同一页面则浏览量累计:UV即 ...
- Docker(4)-docker常用命令
帮助命令 docker version # 查看docker的版本信息 docker info # 查看docker的系统信息,包含镜像和容器的数量 docker --help # 帮助命令 dock ...
- centos部署代码仓库gitlab
目录 一.简介 二.程序部署 部署gitlab 汉化gitlab 三.设置管理员密码 网页方式 指令方式 一.简介 GitLab是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托 ...
- 什么是JMS规范?
一.简介 JMS是什么:JMS是Java提供的一套技术规范和关于消息中间件的协议 JMS干什么用:通过生产者Producer,消息服务器,以及消费者通力合作,使异构系统能进行集成通信,缓解系统瓶颈,提 ...
- Table.ReorderColumns移动…Reorder…(Power Query 之 M 语言)
数据源: 至少两列 目标: 列顺序重新排列 操作过程: 选取待移动的列>鼠标拖放列标题 选取待移动的列>[转换]>[移动]>选取 M公式: = Table.ReorderCo ...
- 使用.NET 6开发TodoList应用(2)——项目结构搭建
为了不影响阅读的体验,我把系列导航放到文章最后了,有需要的小伙伴可以直接通过导航跳转到对应的文章 : P TodoList需求简介 首先明确一下我们即将开发的这个TodoList应用都需要完成什么功能 ...
- IIS部署,发布网站
一.IIS部署 1.打开控制面板,选择 '程序' 2.程序和功能下,选择打开或关闭Windows功能 3.等待加载,选择Internet信息服务,勾选如下选项 在弹出的"windows功能& ...
- WebRTC本地插入多个转发节点
网络延迟是一种比较常见的情况.在本地网页上,我们可以建立多个RTCPeerConnection,增加转发次数,来模拟出网络延迟的效果. 建立通话后,再往后面增加本地转发节点. 准备 页面准备,方便我们 ...
- python enumerate枚举用法总结
enumerate()说明 enumerate()是python的内置函数enumerate在字典上是枚举.列举的意思对于一个可迭代的(iterable)/可遍历的对象(如列表.字符串),enumer ...
- CentOS7下使用NFS文件共享给Window server 2012
CentOS7下使用NFS文件共享给Window server 2012 2018年08月24日 23:15:54 疼迅扣扣 阅读数:443 出自https://blog.csdn.net/u013 ...