原创,分享,在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.

image
image
image

查,API列表

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

image

增,API列表

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

image

删,API列表

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

image

改,API列表

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

image

posted @ 2022-01-06 18:13  eeroom  阅读(1173)  评论(1编辑  收藏  举报