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#的首席架构 ...
随机推荐
- FATE
FATE Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submissi ...
- sersync实现数据实时同步
1.1 第一个里程碑:安装sersync软件 1.1.1 将软件上传到服务器当中并解压 1.上传软件到服务器上 rz -E 为了便于管理上传位置统一设置为 /server/tools 中 2.解压软件 ...
- 使用javascript编写根据用户鼠标控制背景图片的移动
在一家VR公司做前端. 起初进入前端就是一种内心的直觉,创造更好的用户体验,让页面更加友好,当然最起初接手web项目还是为了完成毕业设计. 一个网上图书商城,虽然不大,但五脏都有毕竟开刀所以避免不了很 ...
- 京东首页原生----js制作|css动画|js动画|计时器--轮播图(好久没更新,这两天闲的蛋疼做个京东页面分辨率1366*768,919京东,适应没调!)要文件加关注找我要哦!
- 微信小程序语音识别服务搭建全过程解析(https api开放,支持新接口mp3录音、老接口silk录音)
silk v3(或新录音接口mp3)录音转olami语音识别和语义处理的api服务(ubuntu16.04服务器上实现) 重要的写在前面 重要事项一: 所有相关更新,我优先更新到我个人博客中,其它地方 ...
- ThreadLocal 原理解析
1.对Thread local 理解 ThreadLocal 是为了解决线程间同步而创建的一个新的思路.简单来说就是每个线程都保存一个变量副本. 如果在Thread 内部定义一个field变量,也可以 ...
- Nginx服务及编译安装
第1章 Nginx 1.1 nginx的概念 Nginx("engine x")是一个开源的.支持高性能.高并发的WWW服务和代理服务软件,具有高开发(特别是静态资源),占用系统资 ...
- Katana-CookieAuthenticationMiddleware-源码浅析
准备工作 第一步,建立一个模板项目 本文从CookieAuthenticationMiddleware入手分析,首先我们来看看哪里用到了这个中间件,打开VisualStudio,创建一个Mvc项目,然 ...
- Makefile例子引入
Makefile规则 target ... :prerequisites... command target就是一个目标文件,可以是object file,也可以是可以执行文件,也可以是一个标签 pr ...
- SUCTF--WEB
题目:flag 在哪? 介绍:网址(http://23.106.143.230/a_real_babyweb.php) 1,打开网址,抓包可以发现在 HTTP 头里面有 Cookie:suctf{Th ...