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#的首席架构 ...
随机推荐
- Android 开发笔记___SQLite__优化记住密码功能
package com.example.alimjan.hello_world; /** * Created by alimjan on 7/4/2017. */ import com.example ...
- js 立即调用的函数表达式
当你声明类似function foo(){}或var foo = function(){}函数的时候,通过在后面加个括弧就可以实现自执行,例如foo(),看代码: // 因为想下面第一个声明的func ...
- cookie在不同域名domain、path下的读取规则
cookie 子域名可以读父域名中的cookie 如在 .ping.com域下注入cookie,则该子域下的网页如p1.ping.com.p2.ping.com 都能读取到cookie信息 path的 ...
- [java基础] 遇到的一个关于返回值泛型的问题
在写代码的时候这样写: import java.util.ArrayList; import java.util.List; public class TestConversion { public ...
- 二:熟悉 TCP/IP 协议
一篇文章带你熟悉 TCP/IP 协议(网络协议篇二) 同样的,本文篇幅也比较长,先来一张思维导图,带大家过一遍. 一图看完本文 一. 计算机网络体系结构分层 计算机网络体系结构分层计算机网络体系结构分 ...
- 如何在ASP.NET Core Web API测试中使用Postman
使用Postman进行手动测试 如果您是开发人员,测试人员或管理人员,则在构建和使用应用程序时,有时了解各种API方法可能是一个挑战. 使用带有.NET Core的Postman为您的Web API生 ...
- mysql数据库第二弹
mysql数据库针对表的操作 表记录的增删改查 1.增加一张表 插入记录之前必须得先有表结构! CREATE TABLE score( id int PRIMARY KEY auto_incremen ...
- eclipse搭建maven ssm项目
file --> new --> maven project -->创建个简单的maven项目 会报错,没事 右键 properties 先去掉,然后再勾上 接下来配置maven的相 ...
- 学习java的优势
学习java之后,到企业的岗位 技术:java软件开发工程师(中初级):技术一般: 高级工程师:技术高等: 技术架构师:技术顶级: 管理:项目经理:产品经理: 质询:质询顾问:销售经理: 学会之后可以 ...
- iOS上new Date异常解决办法
最近有一个项目要实现使用Angluar写一个简历模板, 用户输入姓名/生日/简介...等内容, 然后生成一份在线的简历 后来测试时遇到简历模板在Android手机跟Google浏览器上根据生日计算得出 ...