java lambda sql_Speedment -- 利用lambda编写SQL

众所周知Java8中加入了lambda语法,这一特性也帮助Java开发者极大的简化了开发。Speedment是一个利用lambda表达式操作数据库的框架,相比Java世界中现在非常流行的mybatis,它可以极大减少SQL语句的编写。

从图形界面开始使用Speedment

Speedment使用Groovy配置来找到数据库并生成对应的一些Java代码,groovy配置文件一般不需要自己来编写,而是通过Speedment的maven插件来产生。

这里我使用的Speedment版本是2.2.2

要使用Speedment,首先要在maven的pom.xml文件中加入以下的内容:

...

1.8

1.8

2.2.2

...

...

com.speedment

speedment-maven-plugin

${speedment.version}

...

...

com.speedment

speedment

${speedment.version}

...

配置添加到pom.xml之后,在命令行输入maven命令 mvn speedment:gui来启动Speedment GUI界面。

根据图形界面上的提示,输入数据库的配置。

目前Speedment仅支持三种类型的数据库:

MySQL

MariaDB

PostgreSQL

其中PostgreSQL是2.2.3(也就是最新的版本)中新加入的,但是由于2.2.3的gui命令似乎有些问题,似乎PostgreSQL暂时还不可以使用Speedment来操作。

简单操作的API

在代码自动生成完毕之后,开发者几乎不需要再去做什么配置就可以开始操作数据库了。

初始化配置

Speedment有一个核心类Speedment来派生类Manager操作每一张表。

Speedment speedment = new TestApplication().withPassword("myPwd").build();

Manager userManager = speedment.managerOf(User.class);

由于Speedment GUI在产生配置的使用并不会保存数据库的密码,所以在初始化类的时候,我们依旧需要输入对应账户的数据库密码,才可以继续操作数据库。

持久化数据

每一个Speedment生成的实体类对象都拥有一个方法persist(),每当调用这个方法的时候,程序中的类就会持久化到数据库中去。

User user = userManager.newInstance()

.setAge(20)

.setName("hello")

.persist();

// persist()方法同样适用于更新数据

user.setAge(21).persist();

当持久化异常的时候,Speedment会抛出一个SpeedmentException的异常信息。

数据删除

利用Manager类还可以删除对应的数据

userManager.remove(user);

数据查询

查询是SQL操作中相当重要的一环,这也是lambda表达式给SQL查询带来极大便利的一个地方,一般的orm框架的查询都是基于非常繁琐的配置才可以在程序中相对方便的使用查询。

userManager.stream()

.filter(user -> user.getAge().get() > 8)

.collect(toList());

Java8的stream类中有一个parallel()方法,启用之后Java会调用fork/join框架进行多核并行计算,在一些复杂查询的时候,可以提高处理结果的效率。(但是并行计算会需要更多的启动时间,在简单查询中并不是一个好的选择。)

userManager.stream()

.parallel()

.filter(user -> user.getAge().get() > 8)

.collect(toList());

序列化成JSON

JSON正在成为越来越重要是一种数据格式,在最新的MySQL5.7中MySQL也是开始支持json成为一种基本的数据格式了,Speedment中每一个数据记录都可以利用toJson()函数被转换成json格式

userManager.stream()

.map(Hare::toJson)

.forEach(System.out::println);

体验指南

Speedment需要Java 8的支持,最新的版本应该是2.2.3,但最新的版本中, maven的gui命令似乎出现了一些bug,导致配置文件没有办法生成,建议各位可以先使用2.2.2体验一下Speedment。

Java8出世已经有两年的时间,像Speedment这样围绕lambda语法的框架开始逐渐增多,越来越多的开发者也可以开始在Java的平台上体会到函数式编程的便利了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值