不忘初心

最开始接触写代码的时候,用的是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查询数据库的更多相关文章

  1. Lambda 表达式,Java中应用Lambda 表达式

    一.Lambda 表达式 简单来说,编程中提到的 lambda 表达式,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用,也就是指匿名函数. 链接:知乎 先举一个普通的 Python 例 ...

  2. shell脚本中sqlite3命令查询数据库失败返回空,并将错误信息打印到标准错误输出

    shell脚本中sqlite3命令查询数据库失败返回空,并将错误信息打印到标准错误输出 如: #/bin/sh local ret='sqlite3 test.db "select test ...

  3. 理解和运用Java中的Lambda

    前提 回想一下,JDK8是2014年发布正式版的,到现在为(2020-02-08)止已经过去了5年多.JDK8引入的两个比较强大的新特性是Lambda表达式(下文的Lambda特指JDK提供的Lamb ...

  4. Java中的lambda匿名函数使用

    Java中的lambda匿名函数使用 lambda匿名函数的使用是为了满足某些情况下需要临时定义函数,或者事先定义,需要时才使用.在python里面,lambda表达式的表达方式为:lambda 参数 ...

  5. Java从入门到精通——数据库篇之JAVA中的对Oracle数据库操作

    在Java中对Oracle数据库的操作分为两种:一.查询.二.非查询. 下面是我对其进行总结: 一.查询数据 /** * 根据用户代码查询 * @param userId * @return 如果存在 ...

  6. 网络编程-Java中的Internet查询

    前提 在深入理解URL.URI等概念,或者学些Socket相关的知识之,有必要系统理解一下Internet相关的一些基础知识. Internet地址 连接到Internet(因特网)的设备称为节点(n ...

  7. 自己理解Java中的lambda

    lambda是什么 "Lambda 表达式"(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lam ...

  8. Java中的Lambda表达式

    Lambda来源于希腊字母入,发音为  /'læmdə/对高数有所了解的人都知道λ用于声明一个数学逻辑系统,表示根据XX的输入参数,会返回某个Y结果.这正是编程语言中函数(方法)的意思.因此Lambd ...

  9. Entity FrameWork 中使用Lambda访问数据库性能优化

    在使用Entity Framework 访问数据库时,我们经常使用Lambda表达式,但是如果不小心的话,很容易就掉到坑里了.比如下面的例子:用Lambda访问MSSqlServer中的NewsInf ...

随机推荐

  1. keepalived 高可用lvs的dr模型(vip与dip不在同一网段)

    现在rs1和rs2上面安装httpd并准备测试页 [root@rs1 ~]# yum install httpd -y [root@rs1 ~]# echo "this is r1" ...

  2. apply 和 call 的区别

    相同点: 都能够改变方法的执行上下文(执行环境),将一个对象的方法交给另一个对象来执行,并且是立即执行 不同点: call方法从第二个参数开始可以接收任意个参数,每个参数会映射到相应位置的func的参 ...

  3. 【Matlab】find函数用法

    find(A):返回向量中非零元素的位置 注意返回的是位置的脚标 //类似python,还是很好用的 如果是二维矩阵,是先横行后列的 b=find(a),a是一个矩阵,查询非零元素的位置 如果X是一个 ...

  4. jetbrain家的fleet(已获得预览权限)直接对标vscode , fleet有望超过vscode吗?今天我们实际操作下

    申请预览版 等待了一周终于得到了预览版的机会 今天就来简单使用下. 前言 工程管理大多使用的是maven , 在maven之前还有ant 这个应该已经没多少人在使用了,或者说新人基本不在使用ant , ...

  5. k8s daemonset controller源码分析

    daemonset controller分析 daemonset controller简介 daemonset controller是kube-controller-manager组件中众多控制器中的 ...

  6. pdf2swf转换不成功该怎么解决啊,Process p=r.exec("D:/swf/pdf2swf.exe \""+pdfFile.getPath()+"\" -o \""+swfFile.getPath()+"\" -T 9");

    pdf2swf转换不成功该怎么解决啊,可以这样解决吧,请注意命令的用法啊:Process p=r.exec("D:/swf/pdf2swf.exe  \""+pdfFil ...

  7. python 银行管理系统

    这是一个使用python连接mysql的例子 涉及到类的使用 import pymysql import function as f def mysql(): db=pymysql.connect(h ...

  8. Solon 1.6.10 重要发布,现在有官网喽!

    关于官网 千呼万唤始出来: https://solon.noear.org .整了一个月多了,总体样子有了...还得不断接着整! 关于 Solon Solon 是一个轻量级应用开发框架.支持 Web. ...

  9. AcWing822. 走方格

    题目 给定一个\(n×m\)的方格阵,沿着方格的边线走,从左上角\((0,0)\)开始,每次只能往右或者往下走一个单位距离,问走到右下角\((n,m)\)一共有多少种不同的走法. 输入格式 共一行,包 ...

  10. MyBatis学习(五)MyBatis-开启log4j日志

    1.前言 Log4j是Apache的一个开源项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.GUI组件,甚至是套接口服务器.NT的事件记录器.UNIX Syslog守护进程等 ...