ACT 与 Beetlsql 的搭配使用 二

Stella981
• 阅读 617

第2章 ACT 与 Beetlsql 的搭配实战

上一节为了便利,我们使用 H2 做为示例数据库,本节我们将使用国内目前最多人使用的 MySQL,来实战一下.

在本节里我们一起学习:

  1. ACT里如何连接数据库及配置多个数据源
  2. ACT里如何配置特定的数据库连接池
  3. 项目的通用结构
  4. BeetlSQL 链式查询新姿势

同样的,您需要先下载示例项目: https://github.com/mailtous/act-eagle-allone

注意:这是本人写的示例项目,您可以当作是 ACT+BeetlSQL 的脚手架使用. 当然了一切的失误都跟 ACT 无关,都是本人水平的事. 附带的福利就是,在act-eagle-allone项目里,您同时收获了一套基本的后台权限管理. 相信我这套权限管理已经满足一般的小型企业的WEB网站的后台管理需求了.

如您所见,我们先来看一下项目的整体结构:

ACT 与 Beetlsql 的搭配使用 二

第一步: 您需要先把 SQL 目录下的SQL脚本在本地 MYSQL客户端上执行一下.

第二步: 打开/resources/conf/dev/db.properties 文件

ACT 与 Beetlsql 的搭配使用 二

如您所见,非常简单: db.instances=default,db2 代表我们可以使用多个数据库

而: db.default.datasource.provider 这项配置就是为了配置特定的数据库连接池的. 你也许会喜欢用 Druid CP. 不过呢,以 HikariCP 目前无敌的实力, ACT 官方以 HikariCP 做为默认的首选数据库连接池了.所以此项不配置也没关系的. ACT 开发的准则之一就是易用性.

细心如您,已经发现了 conf 目录下还有 common/dev/prod 子目录.他们代表了[通用/本地开发/线上]环境, 为什么要这样规划呢?

这样做的好处呢,就是部署时:设置 JVM 参数 -Dprofile=dev|sit|prod , ACT 自己就帮你搞定了.

ACT 与 Beetlsql 的搭配使用 二

更多的配置打开方式,参见: https://github.com/actframework/act-doc/blob/master/cn/configuration.md

你还需要留意 framework 这个目录: ACT 与 Beetlsql 的搭配使用 二

如您所见,强烈的 SPRING 老味道, 却是这个脚手架的核心点. 但我不得不说的事,您的项目经理会喜欢这种分层的.

重申: 以结上司之欢心,谋吾等码农之福利! 这点很重要的!

您注意到: BeetlSqlDao 这个基类吗? 这是我对 BeetlSql 做的一个小小的封装,以便更好的使用 CURD.

ACT 与 Beetlsql 的搭配使用 二

而 framework 的 API 将会在实际的 Sys 模块被使用到.

好了,说好的新姿势呢? 我已经看到猴急的同学已经脱下了TA的新裤子了! 瞧!TA在那大喊: 老东西,快点了! [我的大斧早已饥渴难耐了!]

广告:推荐大家看一下,烟雨江南的《狩魔手记》,我觉得他是新时代的金庸!

第二节,从这里开始, 以上的字节不收费,好吗?

其实新姿势就特么简单:

ACT 与 Beetlsql 的搭配使用 二

新姿势有什么好处呢?

  1. 真正的敏捷开发从这里开始
  2. 你无需编写 .md 文件并且在里面写 SQL 了
  3. SysUser::getUserName 这种引用字段的拼写方式,使得 SQL 不再有[硬代码].
  4. [硬代码]有什么危害? 相信有重构项目经验的同学会深有体会的.
  5. 更多的好处您慢慢体会,这里不接受争议.

写这个示例项目的时候,其实我并不知道 BeetlSQL 有链式查询的新姿势. 为此,我还在 /framework/query 目录下开发了一套链式查询工具. 真的只是个巧合,语法相近,但实现的方式却是不一样的.

后来我还把这个链式查询抽取出来做成了 Fluent-SQL 项目,写到这里请允许小生我带点私货:

https://github.com/mailtous/fluentsql

ACT 与 Beetlsql 的搭配使用 二

好了,下课了. 相信我,看到这里的您,已经成长为一位老司机了, 一起来一盘<<王者>>吧!

记住:猥琐发育别浪!

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
java将前端的json数组字符串转换为列表
记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
3个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
为什么mysql不推荐使用雪花ID作为主键
作者:毛辰飞背景在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究
Python进阶者 Python进阶者
9个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这