快速集成 Flyway、MyBatis、MyBatis-Generator、H2

作者 |小匠

来源 | 码匠笔记

上一讲主要讲解了微信小程序登录的原理和实现《

三周学会小程序第五讲:登录的原理和实现

》,这一讲主要是对登录流程进行优化,同时登录成功后把用户信息存入服务器端数据库。这一讲涉及的服务端知识比较多,比如、、、等使用。

登录优化

1,把获取的逻辑放到。

的方法是小程序的加载入口,这样可以全局的控制登录态和的获取,首先判断当前用户是否已经有,如果有就不需要获取和 登录逻辑。

可以通过微信的控制台查看的存储情况。

调用服务器端登录接口失败以后需要重新调用方法,因为一个只能使用一次。

H2

是一个超轻量级的数据库,引入一个的就可以运行使用,同时支持,内嵌,内存和服务三种模式,这样引入以后我们就可以方便的在本地调试项目了。

第一步,直接在引入依赖

第二步,直接在本地配置里面配置好,然后就可以在下文中的里面使用配置连接池了

当前采用的链接方式是内嵌连接,不需要启动服务,并且会保留数据,当然这种连接方式有一个问题,它只允许一个连接,所以每次你想通过其他工具读取数据的时候需要关掉程序的连接。

MyBatis

就不用详细讲解了,目前比较成熟的数据库框架,我们直接讲解配置,小编使用了连接池。

第一步,一如既往的引入文件

直接在里面配置即可。

上面注释很全,

是数据源。

是 session 工厂,用户注入 mapper 使用。

是为了自动扫描对应包下面的装置到里面。如果这个地方不明白可以看一下小编之前的一篇文章《从 Spring 集成 MyBatis 浅析 Java动态代理》

值得注意的地方是配置的路径,是不是每次都需要我们手写和 N 多对象啊?答案是不需要的,我们使用自动生成。怎么生成?看下文。

Flyway

是一个数据库工具,为什么引入这个工具呢?举个例子,如果你有3个环境:开发、UAT和线上;你有4个开发人员,每个人有自己的一个开发环境,这些环境都有一个自己的数据库,那么你是不是每次有数据库变更都需要让他们去执行以下脚本?不仅麻烦而且出错率特别高。

那么就应运而生,它可以帮你记录,执行你的变更,只需要引入它的依赖,就可以帮你精准的维护数据库脚本的变更。使用方式有多种,命令行、Maven命令、Java API和Spring 配置,我们采用 Spring 配置的方式,这样不需要每一个部署环境安装命令行或者是 Maven 工具。具体操作如下

第一步还是添加依赖到

第二步配置,在刚才配置的地方追加如下配置

是配置给,这样他们就可以共用数据源了。

是执行的入口。

最后需要在添加一个这样便可以在创建工厂的时候执行数据库脚本了。

第三步,配置数据库脚本,命令运行的时候会默认找文件下面的文件,因为数据库脚本执行是需要有顺序并且唯一,所以数据库脚本有一个命名规则,就是从开始,依次是。比如小编目前正要创建一个表,所以我的命名需要是。

第四步,直接运行项目文件,我们会在控制台看到如下打印信息,说明成功执行了脚本。

那么怎么验证一下呢?我们可以通过自带的数据库连接工具按照如下方式连接一下(记得关闭项目)

便可以看到我们刚才创建的user表,同时会有一个表,这个表就是用于存储数据库脚本是否已经执行过的依据,避免重复执行和错误的修改。所以后面你需要修改数据库,必须添加新的脚本,不能修改原有的。

MyBatis-Generator

的目的就是通过创建好的数据库,逆向生成、和的工具,这样可以大大减少我们的工作量。

第一步,添加的插件,用于运行。

第二步,配置文件,该文件主要是用于指定、和等文件的生成路径和规则,详细信息就不罗列了,可以直接参照源码。重点讲解一下需要指定一下你当前使用的的存放位置。和上文中我们配置的的地址一致。后面如果有多个数据库表,直接添加标签即可。

第三步,运行如下命令,就会自动生成对应的文件。

服务端存储 Token 和 用户信息

截止到上面基础工作已经全部搞定,下面我们实现登录成功存储数据库的逻辑,这便是非常简单的事情。

一段代码就搞定了这件事情。的方法是提供的可以组装的工具,上面的逻辑是先通过查询数据库中是否已经存在,如果存在就更新,否则创建。

这样以后重启服务器,再次点击小程序的登录按钮,你会看到神奇的一幕,提示“登录成功”,这样你的第一个前后端交互小程序就搞定了。

作业

好久没有留作业了,这次的作业就是如果你使用的是数据库,那么尝试使用把项目运行起来。

源码

小程序源码地址,Tag V6

https://github.com/codedrinker/jiuask

服务端源码地址,Tag V6

https://github.com/codedrinker/jiuask-server

我是浪漫的分割线

问答

如果您对本系列文章有兴趣,欢迎置顶本订阅号,第一时间获取更新。

如果有任何问题,欢迎留言,小编很热衷和大家一起讨论技术问题。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181213B0SHI500?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券