speedment 入门教程
speedment 是基于 Java8 的 orm 框架,相比较 hibernate 和 mybatis 你只要很少的代码就可以实现对数据库的操作,而且根据查询自动帮你优化SQL,开发者无需编写SQL代码
首先建立maven项目,然后在pom.xml中添加依赖:
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.42</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.speedment</groupId>
<artifactId>runtime</artifactId>
<version>${speedment.version}</version>
<type>pom</type>
</dependency>
</dependencies>
导入依赖包后,在pom.xml目录下,运行maven命令,mvn speedment:tool 弹出初始化工具,并且会在你的项目目录下面生成模板 speedment.json 文件
根据图形工具的提示,输入连接信息,选择db,然后点击 Generate,就会生成基础类,到你的当前工程目录下
初始化加载,Spring Boot项目为例:
@Configuration
public class Setup {
@Bean
public Dms2Application createApplication() {
return new Dms2ApplicationBuilder()
.withPassword("root")
.withLogging(LogType.STREAM_OPTIMIZER)
.build();
}
@Bean
public Jackson2ObjectMapperBuilder jacksonBuilder() {
return new Jackson2ObjectMapperBuilder().indentOutput(true);
}
}
上面代码,是我对dms2数据库进行的初始化配置,读者初始化的时候请根据生成的代码,改为自己数据库的名称,格式都差不多
speedment.json 只会保留你的基本信息,不会保留你的 password 等重要信息,所以需要在初始化的时候设置数据库密码,当然,在初始化中你可以配置更多的信息,例如线程池,日志信息等等,具体请查阅文档
初始化完毕后,就可以开始使用 speedment 对数据库开始操作了
AccountManager accountManager;
private AccountService(Dms2Application app) {
accountManager = app.getOrThrow(AccountManager.class);
}
/**
* 新增 Deutsch 用户
* @return
*/
public Account add() {
Account account = new AccountImpl().setUserName("Deutsch");
return accountManager.persist(account);
}
/**
* 查找 Deutsch 用户 并且修改名字为 Deutsch-h
* @return
*/
public Account edit() {
Optional<Account> optAccount = accountManager.stream().filter(Account.USER_NAME.equal("Deutsch")).findFirst();
optAccount.map(account -> {
return accountManager.update(account.setUserName("Deutsch-h"));
});
return null;
}
/**
* 查找 Deutsch-h 用户 并且删除
*/
public void delete() {
Optional<Account> optAccount = accountManager.stream().filter(Account.USER_NAME.equal("Deutsch-h")).findFirst();
optAccount.ifPresent(a -> {
accountManager.remove(a);
});
}
上面就是 speedment 简单的增删改查,都是通过 java.util.stream 来操作,非常的方便
当然 speedment 还支持更多强大的查询,我们只做简单介绍,例如多条件复杂查询,可以单独定义 Predicate<T> , 然后传入到 .filter 中来灵活处理
Predicate<Account> queryParams = Account.STATUS.notEqual(DataStatusEnum.DELETE.value);
if(StringUtil.isNotEmpty(userName)) {
queryParams = queryParams.and(Account.USER_NAME.equal(userName));
}
if(StringUtil.isNotEmpty(loginName)) {
queryParams = queryParams.and(Account.LOGIN_NAME.equal(loginName));
}
//动态查询条件,构建分页
List<Account> data = accountManager.stream().filter(queryParams).skip(accountReqPaging.getStartIndex()).limit(pageSize).collect(Collectors.toList());
以上只是简单使用,更多的Offset, Offset and Limit, Count, Group By, Gaving , Distinct 都是可以很轻松的实现
获取更多 Java 实战知识,请扫二维码,关注获取更多技术知识

speedment 入门教程的更多相关文章
- wepack+sass+vue 入门教程(三)
十一.安装sass文件转换为css需要的相关依赖包 npm install --save-dev sass-loader style-loader css-loader loader的作用是辅助web ...
- wepack+sass+vue 入门教程(二)
六.新建webpack配置文件 webpack.config.js 文件整体框架内容如下,后续会详细说明每个配置项的配置 webpack.config.js直接放在项目demo目录下 module.e ...
- wepack+sass+vue 入门教程(一)
一.安装node.js node.js是基础,必须先安装.而且最新版的node.js,已经集成了npm. 下载地址 node安装,一路按默认即可. 二.全局安装webpack npm install ...
- Content Security Policy 入门教程
阮一峰文章:Content Security Policy 入门教程
- gulp详细入门教程
本文链接:http://www.ydcss.com/archives/18 gulp详细入门教程 简介: gulp是前端开发过程中对代码进行构建的工具,是自动化项目的构建利器:她不仅能对网站资源进行优 ...
- UE4新手引导入门教程
请大家去这个地址下载:file:///D:/UE4%20Doc/虚幻4新手引导入门教程.pdf
- ABP(现代ASP.NET样板开发框架)系列之2、ABP入门教程
点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之2.ABP入门教程 ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)” ...
- webpack入门教程之初识loader(二)
上一节我们学习了webpack的安装和编译,这一节我们来一起学习webpack的加载器和配置文件. 要想让网页看起来绚丽多彩,那么css就是必不可少的一份子.如果想要在应用中增加一个css文件,那么w ...
- 转载:TypeScript 简介与《TypeScript 中文入门教程》
简介 TypeScript是一种由微软开发的自由和开源的编程语言.它是JavaScript的一个超集,而且本质上向这个语言添加了可选的静态类型和基于类的面向对象编程.安德斯·海尔斯伯格,C#的首席架构 ...
随机推荐
- 软硬链接、文件删除原理、linux中的三种时间、chkconfig优化
第1章 软硬链接 1.1 硬链接 1.1.1 含义 多个文件拥有相同的inode号码 硬链接即文件的多个入口 1.1.2 作用 防止你误删除文件 1.1.3 如何创建硬链接 ln 命令,前面是源文件 ...
- 【IDEA】向IntelliJ IDEA创建的项目导入Jar包的两种方式
转载请注明出处:http://blog.csdn.net/qq_26525215 本文源自[大学之旅_谙忆的博客] 今天用IDEA,需要导入一个Jar包,因为以前都是用eclipse的,所以对这个id ...
- Python-数据类型-转摘
1.数字 2 是一个整数的例子.长整数 不过是大一些的整数.3.23和52.3E-4是浮点数的例子.E标记表示10的幂.在这里,52.3E-4表示52.3 * 10-4.(-5+4j)和(2.3-4. ...
- HTML学习笔记 css定位浮动及瀑布流案例 第十三节 (原创) 参考使用表
#fd { width: 100px; height: 150px; background-color: forestgreen; float: left; } #sd { width: 150px; ...
- Problem B: 时间和日期类(III)
Problem B: 时间和日期类(III) Time Limit: 4 Sec Memory Limit: 128 MBSubmit: 2889 Solved: 1732[Submit][Sta ...
- python是如何进行内存管理的
Python引入了一个机制:引用计数. python内部使用引用计数,来保持追踪内存中的对象,Python内部记录了对象有多少个引用,即引用计数,当对象被创建时就创建了一个引用计数,当对象不再需要时, ...
- Mac上查看隐藏文件夹/文件
一.查看隐藏文件夹: 可以直接在终端执行 open ~/文件夹名称 如: open ~/.ssh 二.查看隐藏文件: 在Finder下进入你想要操作的文件夹,按快捷键Command + F 调出搜索窗 ...
- ALTER TABLE SWITCH' statement failed. The table x' is partitioned while index 'x' is not partitioned.
1.L_Monitoring有这么些字段,ID,Collecttime,PlateType,PlateNO以及其他一些这段.建立这个表的时候是个非分区表,其中ID是主键,并在Collecttime,P ...
- 身为运维的你,怎么掌握python才不会失业
以前,我们都说Python是运维工程师的未来:现在,为什么大家都说不会Python的运维都将失业?运维必须懂开发,特别是python开发,已经形成大家的共识,不懂开发的运维,路会越走越窄. 而现在的情 ...
- C# 扩展方法使用
为指定类型扩展方法: 定义类Class1: public static class Class1 //必须为static类,且不能包含 ...