澳门新萄京官方网站-www.8455.com-澳门新萄京赌场网址

澳门新萄京官方网站MySQL数据库的连日与操作,记

2019-07-07 作者:www.8455.com   |   浏览(114)

本篇博客大家来聊聊MySQL数据库的连日与操作。倘令你本地未有MySQL数据库的话,必要您先安装MySQL数据库。在Mac OS中使用brew包管理器进行MySQL的安装是连同方便的。安装MySQL的下令为:brew install mysql。本篇博客我们就要动用Perfect框架来连接操作数据库了,首先大家要求创建贰个测验数据库,然后在测量试验数据库中开创一张测量试验表用来增删改查操作。

前方以及陆续的介绍了利用Swift3.0开垦的服务端应用程序的Perfect框架。本篇博客就做四个阶段性的下结论,做三个完完全全的实例,其实那么些实例在《斯威夫特3.0服务端开拓(一)》那篇博客中曾经简单的牵线过了,本篇博客就来详细的聊一下那一个工程的现实贯彻细节。当然饱含iOS端和服务端的代码。本篇博客的牵线顺序遵照功效模块来划分的,如登入注册模块、记事本列表,记事本的增加和删除改查等效能。在每种功用模块,我们先交给服务端代码的贯彻,然后交到客户端代码的落到实处。

面前以及时断时续的牵线了利用斯威夫特3.0开辟的服务端应用程序的Perfect框架。本篇博客就做五个阶段性的下结论,做一个一体化的实例,其实那几个实例在《斯维夫特3.0服务端开辟(一)》这篇博客中早已轻松的介绍过了,本篇博客就来详细的聊一下以此工程的具体贯彻细节。当然包蕴iOS端和服务端的代码。本篇博客的牵线顺序依据功用模块来划分的,如登入注册模块、记事本列表,记事本的增加和删除改查等效用。在每种成效模块,大家先交由服务端代码的落实,然后提交客户端代码的达成。

上篇博客大家聊了《JavaEE开荒之SpringBoot工程的创立、运维与配置》,从上篇博客的开始和结果大家轻易看出SpringBoot的便捷。本篇博客大家继续在上篇博客的底子上来看一下SpringBoot是何许引进和动用MyBatis和Thymeleaf的。在事先的博客中大家提到过Hibernate,今天博客所引进的Mybatis所扮演的剧中人物与Hibernate类似,都是一套ORM框架,主要担负长久化的,也是将数据库中的数据直接照射为Model的框架。

在博客的启幕呢,先来推荐一款Mac上相比好用又免费的MySQL可视化管理工科具Sequel Pro。那款工具用的是一定的随手呢,应用的图标如下所示:

本篇博客的前几部分重大介绍任何工程的公用模块,为工程的兑现做打算,下方正是我们前些天博客要做的事物。本篇博客iOS端的互连网央浼首要选择的NSU酷威LSession来促成的,关于U凯雷德LSession更详细的介绍请参见在此以前发布的博客《NSURLSession全家桶》

本篇博客的前几有个别器重介绍任何工程的公用模块,为工程的落到实处做准备,下方便是大家先天博客要做的东西。本篇博客iOS端的互联网伏乞主要运用的NSU昂科拉LSession来达成的,关于UTucsonLSession更详尽的牵线请参谋之前发布的博客《NSURLSession全家桶》

而Thymeleaf就是叁个模板引擎了,与事先大家聊得PHP中的Smarty模板引擎类似。假让你们的Web工程是内外端分离的,那么就用不着Thymeleaf等模板引擎了。本篇博客要做的政工正是在SpringBoot工程中引进MyBatis,然后通过MyBatis所提供的炫人眼目方法以及注脚来读取数据库中的消息。然后使用Thymeleaf模板在前端举行数量的显得。

  澳门新萄京官方网站 1

  澳门新萄京官方网站 2

  澳门新萄京官方网站 3

小编们事先在聊Swift开拓服务端的内容,也正是Perfect框架时,用到了MySQL相关的事物。本篇博客大家就利用Perfect框架从前所操作的数据库就行了。关于斯维夫特的Perfect框架的连带内容,请移步于《斯维夫特中的服务端框架---Perfect》体系博客。因为事先聊过MySQL相关的事物了,本篇博客就不做过多废话了。关于MySQL的设置,请参见在此之前公布的博客《macOS Sierra安装Apache2.4 PHP7.0 MySQL5.7.16》。本篇博客,我们就把重大放到Spring Boot中的MyBatis和Thymeleaf上。

 

 

 

 

澳门新萄京官方网站MySQL数据库的连日与操作,记事本的开销。一、测量试验数据库的创制

一、记事本数据库的陈设

一、记事本数据库的规划

一、MyBatis的引进与行使

本有的与Perfect框架非亲非故,完全都以MySQL的剧情,是Perfect操作数据库的备选干活。前提是您早已设置好了MySQL数据库了。

数据库的安插以及数额库表的创始自个儿都选拔Sequel Pro来完毕的,关于Sequel Pro的行使请看上篇博客的介绍,本篇博客关于Sequel Pro的牵线就不做过多废话了。首先大家先交由记事本数据库表的设计,以备使用。我们先成立叁个名称为perfect_note的数据库(步骤略),然后再创立相应的数额库表。因为我们的记事本比较简单,主要包涵登入、注册以及记事本的增加和删除改查。所以大家的数据库结构也是相比轻松的,perfect_note数据库中唯有多个表,三个是user表,叁个是content表,下方会付出详细的介绍进程。

数据库的希图以及数据库表的制造本人都选用Sequel Pro来完结的,关于Sequel Pro的施用请看上篇博客的介绍,本篇博客关于Sequel Pro的牵线就不做过多废话了。首先大家先提交记事本数据库表的宏图,以备使用。我们先创制三个名称为perfect_note的数据库(步骤略),然后再成立相应的多寡库表。因为大家的记事本比较简单,首要不外乎登入、注册以及记事本的增加和删除改查。所以大家的数据库结构也是相比较轻便的,perfect_note数据库中唯有八个表,三个是user表,二个是content表,下方会提交详细的介绍进度。

1.配置pom文件

 

1.user表的创导

1.user表的创制

第一大家来看一下哪些在Spring Boot中引进MyBatis。首先我们在http://mvnrepository.com/中找到Mybatis Spring Boot Starter相关的Mvn货仓连接。如下所示,从下方截图中,大家轻易看出,近日MyBatis Spring Boot Starter的新星版本是1.2.0。可是本篇博客中大家选拔的是1.1.1本子,因为小编引进1.2.0后,小编的SpringBoot工程根本运转不了,于是换来1.1.1本子就OK了。

1、运行MySQL的服务器

第一大家来创立user表,user表担任存款和储蓄用户消息,当用户注册和登陆时都会操作那几个表。注册用户时正是往该表中插入用户,登录时正是询问相应的用户新闻。当然,为了德姆o的简洁性,我们的user表中的字段也是非常少的。下方正是开创user表的SQL语句。当中有四个字段,主键id是整型并且是自增的,是用户的无可比拟代表。username字段存款和储蓄的是用户名,password存款和储蓄的纵然用户密码。register_date存款和储蓄的是用户注册时间,是岁月戳,並且暗中同意值是近年来时间。

第一大家来创设user表,user表肩负存款和储蓄用户音讯,当用户注册和登陆时都会操作那几个表。注册用户时就是往该表中插入用户,登入时便是询问相应的用户新闻。当然,为了德姆o的简洁性,我们的user表中的字段也是比较少的。下方正是开创user表的SQL语句。在那之中有多个字段,主键id是整型而且是自增的,是用户的独占鳌头代表。username字段存款和储蓄的是用户名,password存款和储蓄的固然用户密码。register_date存款和储蓄的是用户注册时间,是岁月戳,何况暗中同意值是当前几天子。

  澳门新萄京官方网站 4

那或多或少尽管简单,但不用忘记运营你的MySQL服务呢,否则Sequel Pro是无力回天连接你的MySQL数据库的。具体开发银行格局如下。

CREATE TABLE `user` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `username` varchar(30) CHARACTER SET latin1 NOT NULL DEFAULT '',
  `password` varchar(30) CHARACTER SET latin1 NOT NULL DEFAULT '',
  `register_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;
CREATE TABLE `user` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `username` varchar(30) CHARACTER SET latin1 NOT NULL DEFAULT '',
  `password` varchar(30) CHARACTER SET latin1 NOT NULL DEFAULT '',
  `register_date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;

在pom.xml加多上下方的安插项,引进mybatis-spring-boot-starter和mysql-connector-java相关配置。mysql-connector-java顾明思议,就是接连MySQL数据库使用的正视包。pom.xml中的配置如下。

  澳门新萄京官方网站 5

 

 

        <!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.1.1</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.38</version>
        </dependency>

启航是start,那么关闭MySQL数据库就是stop了,如下所示:

2.content表的创始

2.content表的创建

澳门新萄京官方网站MySQL数据库的连日与操作,记事本的开销。 

  澳门新萄京官方网站 6

成立完user表后,接下去将要创立大家的content表了。content表用来存款和储蓄用户录入的笔记,下方正是content表的开创SQL语句。从尘凡的SQL语句中轻松看出content表的字段包含自增的主键id,记录的标题title,记录的内容content,以及外键userID和开创时间create_time。

开创完user表后,接下去将要开创大家的content表了。content表用来存款和储蓄用户录入的笔记,下方正是content表的创始SQL语句。从人间的SQL语句中简单看出content表的字段包涵自增的主键id,记录的标题title,记录的剧情content,以及外键userID和创办时间create_time。

 

 

CREATE TABLE `content` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `title` varchar(30) CHARACTER SET gb2312 NOT NULL DEFAULT '',
  `content` text CHARACTER SET gb2312 NOT NULL,
  `userID` int(11) unsigned NOT NULL,
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `USER_FOREIGN_KEY` (`userID`),
  CONSTRAINT `USER_FOREIGN_KEY` FOREIGN KEY (`userID`) REFERENCES `user` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8;
CREATE TABLE `content` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `title` varchar(30) CHARACTER SET gb2312 NOT NULL DEFAULT '',
  `content` text CHARACTER SET gb2312 NOT NULL,
  `userID` int(11) unsigned NOT NULL,
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`),
  KEY `USER_FOREIGN_KEY` (`userID`),
  CONSTRAINT `USER_FOREIGN_KEY` FOREIGN KEY (`userID`) REFERENCES `user` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=18 DEFAULT CHARSET=utf8;

2、配置MySQL数据库连接

2.使用Sequel Pro连接操作数据库

 

 

因为咱们选取的是Spring Boot引入的MyBatis, Mybatis Spring Boot Starter会为咱们做过多自动化的配备,比方SqlSessionFactory的创导等等。须求大家做的正是在application.properties文件中实行数据库连接的相干安顿就能够。下方正是咱们在布局文件中丰富的总是数据库的连带信息。重要配备了数据库连接的渠道,数据库的用户名以及密码,数据库的驱动。

(1)、连接MySQL数据库

 

 

#Config MySQL Connect Info
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/perfect_note
spring.datasource.username=root
spring.datasource.password=admin!@#
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

打开Sequel Pro,输入你MySQL的主机名,用户名以及密码。具体连接这一个数据库能够不选,然后填上实际的端口,私下认可是3306。点击连接就能够。具体如下所示:

二、iOS端基于NSUEnclaveLSession互联网乞求类的包裹

二、iOS端基于NSUOdysseyLSession网络央求类的卷入

 

  澳门新萄京官方网站 7

创建完数据库后,接下去我们来封装iOS端互联网诉求的共用代码。也正是说,iOS端的网络央求就能够调用本有的包装的内容。当然本有的包装的互连网乞请类是利用NSU库罗德LSession类封装的。

始建完数据库后,接下去大家来封装iOS端互联网必要的共用代码。也正是说,iOS端的网络央求就可以调用本有的包装的剧情。当然本有的包装的网络央浼类是利用NSU昂CoraLSession类封装的。

 

 

 

 

3、创建Model类

(2)、创造测量试验数据库

1.字符串常量、闭包回调类型以及枚举的定义

1.字符串常量、闭包回调类型以及枚举的概念

接下去我们就来创设数据库中的相应数额所要映射的数量Model类。接下来大家就来操作perfect_note数据库中的content表,如下所示。下方数据库及数据库中的数据是大家事先在聊Perfect框架时所利用的数据,本篇博客我们如故对该数据开始展览操作。

接下来点击增加数据库,创建新的数据库就可以,下方大家创设的是test数据库,编码方式用的是utf8。如下所示。

率先大家先来定义一些封装互连网诉求类要选拔的字符串常量以及枚举闭包回调。下方代码段做的就是那件工作,第一个框中定义了分析响应数据时使用到的字符串常量。“SUCCESS”表示需要成功,“FAILE”表示央浼退步等等。

先是大家先来定义一些包裹网络诉求类要使用的字符串常量以及枚举闭包回调。下方代码段做的正是那件业务,第三个框中定义了分析响应数据时使用到的字符串常量。“SUCCESS”表示哀告成功,“FAILE”表示央求退步等等。

  澳门新萄京官方网站 8

  澳门新萄京官方网站 9澳门新萄京官方网站 10

其次个框中定义的是三个闭包变量,用来将哀告结果回调给调用者。RequestStart正是从头央求要调用的闭包类型,RequestSuccess则是伸手成功后调用的闭包类型,RequestFailed则是央浼退步要调用的闭包类型。那三者是伏乞类对外沟通的大桥。

第1个框中定义的是四个闭包变量,用来将呼吁结果回调给调用者。RequestStart正是发端诉求要调用的闭包类型,RequestSuccess则是伏乞成功后调用的闭包类型,RequestFailed则是呼吁失利要调用的闭包类型。那三者是央浼类对外沟通的大桥。

依据上述cotent表中的字段,我们来创制该表所对应的model类。下方这几个Content类正是大家所创制的content表所对应的Model。具体如下所示。

 

其多个框则是呼吁方式的枚举,首要不外乎GET、POST、PUT、DELETE,当然还留了CUSTOM()自定义的壮大项目。在该枚举中的description总计属性肩负将日前的枚举对象调换来其对于的字符串,具体如下所示:

其三个框则是伸手格局的枚举,首要不外乎GET、POST、PUT、DELETE,当然还留了CUSTOM()自定义的扩展类型。在该枚举中的description总括属性负担将眼下的枚举对象调换来其对于的字符串,具体如下所示:

  澳门新萄京官方网站 11

(3)、创建user表

  澳门新萄京官方网站 12

  澳门新萄京官方网站 13

 

创办完数据库后,接下去大家要创设贰个user表用来开始展览测验。点击左下方的加号来创建新的数据库表,下方正是我们创建的数据库表的具体步骤以及具体的参数配置。如下所示:

 

 

 

  澳门新萄京官方网站 14

2、网络央浼基类的成立

2、网络恳求基类的始建

4.创制映射接口

成立完user表后,大家须求往表里边增多一些测量试验字段,下方正是我们抬高的部分字段。在我们的user表中有江湖多个字段,id是主键,用户的独一标示。username-用户名,password-用户密码,create_time是开创时间,create_time的门类是时间戳,何况暗中同意值是最近岁月。具体如下所示。

接下去网络央求的基类,全部与互连网诉求相关的类都要延续自此类,下方的BaseRequest正是大家网络诉求的基类。该类相比简单,重要注解了上边定义的八个闭包类型的变量,然后交给了对应的构造器。具体如下所示。

接下去网络乞求的基类,全数与互联网要求相关的类都要继续自此类,下方的BaseRequest就是我们互联网央浼的基类。该类相比轻巧,主要评释了地点定义的四个闭包类型的变量,然后交到了对应的构造器。具体如下所示。

接下去大家来创制数量库表与Model直接的照射接口。在该接口中提供了数量与Model直接的投射关系,并且提供了有关的SQL操作。下方的ContentMapper接口正是大家创造的content表与ContentModel之间的映照关系。何况在该接口中的方法所对应的注脚中,提供了相应的SQL操作。

  澳门新萄京官方网站 15

  澳门新萄京官方网站 16

  澳门新萄京官方网站 17

在ContentMapper接口的query()方法中,该格局所对应的SQL语句是“select * from content”,也等于查询全部content中的数据。@Results表明提供了数量库表的字段与Model的性质的映照关系。下方内定了表字段"id"与"contentId"对应,字段名"create_time"与“createTime”属性相呼应,而未钦点的便是字段名与属性名一致。

 

 

 

queryById()就是含有条件的询问艺术了。其参数正是询问的条件。通过@Param评释进行标准化与参数的绑定。具体代码如下所示。

 

3.网络乞求类的卷入

3.互连网央浼类的包装

  澳门新萄京官方网站 18

二、Perfect数据库连接

接下去大家运用NSURubiconLSession来封装我们的互连网须要类,下方的Request类正是我们封装的网络诉求类,该类继承自BaseRequest。下方是Request的片段代码,下方每一个方法对应着GET、POST、PUT等诉求,能够结合者REST一齐行使。在各样具体乞求的主意中会调用sessionDataTaskRequest()方法。会给那个方法传入分歧的乞请情势以及路线和参数。稍后我们会给出sessionDataTaskRequest()方法的有血有肉完结,sessionDataTaskRequest()方法在那之中就使用了NSU福特ExplorerLSession相关的剧情提倡了网络伏乞,具体请看下方对sessionDataTaskRequest()方法的详细介绍。

接下去大家使用NSU福睿斯LSession来封装大家的网络央浼类,下方的Request类就是咱们封装的互连网央求类,该类承袭自BaseRequest。下方是Request的部分代码,下方每一个方法对应着GET、POST、PUT等诉求,能够结合者REST一齐利用。在各类具体央浼的办法中会调用sessionDataTaskRequest()方法。会给这些主意传入分歧的乞求形式以及路线和参数。稍后我们会给出sessionDataTaskRequest()方法的切切实实贯彻,sessionDataTaskRequest()方法在那之中就利用了NSULANDLSession相关的源委提倡了互连网央求,具体请看下方对sessionDataTaskRequest()方法的详细介绍。

 

万事俱备只欠东风,下面盘算完MySQL数据库后,大家就要伊始开始展览Perfect框架连接数据库的原委了。

  澳门新萄京官方网站 19

  澳门新萄京官方网站 20

 

1.引进依赖库

江湖这一个代码段就是sessionDataTaskRequest()方法的欧洲经济共同体布局,首先大家依照函数的乞请路线和参数拼接ULANDL字符串,也便是首先个框中的部分。在该部分中的query()函数是将参数实行U翼虎L编码调换,这么些函数是从AlamoFire框架中摘过来的。然后创立恳求用的U奥迪Q7LRequest对象。最终是创制Session对象发起DataTask任务了。当然伏乞的结果是在completionHandler闭包中开始展览拍卖,稍后会交到completionHandler闭包中的管理格局。

尘寰那一个代码段正是sessionDataTaskRequest()方法的完整布局,首先大家依照函数的乞请路线和参数拼接U大切诺基L字符串,也便是首先个框中的部分。在该有的中的query()函数是将参数实行UHighlanderL编码转变,这一个函数是从AlamoFire框架中摘过来的。然后创造央浼用的U昂CoraLRequest对象。最终是开创Session对象发起DataTask任务了。当然央浼的结果是在completionHandler闭包中张开管理,稍后会交到completionHandler闭包中的管理格局。

5、创立测量试验用的Controller

依据惯例,Perfect框架连接数据库照旧需求包的帮忙。首先大家供给引进操作MySQL相关的包。

  澳门新萄京官方网站 21

  澳门新萄京官方网站 22

为了方便时期,大家就不成立DAO层了,就一向在Controller中来调用上述接口中的方法就可以。下方这几个MyBatisTestController正是我们成立的用来测量试验上述操作的测验调控器。当然大家将该调节器表明为@RestController以便大家对其开始展览测验。然后使用@Autowired评释注入ContentMapper类型的对象,大家能够通过该对象来操作上述接口中所对应的办法。queryContentById()方法,对应的是contentMapper中的queryById()方法,queryAll()方法对应的是Mapper中的query()方法,具体代码如下所示。

 //MySql数据库注重包

.Package(url: "",
majorVersion: 2, minor: 0)

跟着,大家付出央浼成功后,对json数据的深入分析以及对回到结果的管理。下方便是completionHandler闭包中的代码片段。首先对服务器再次来到的json数据进行深入分析,分析后将json数据调换到对应的数据类型。然后根据响应报文的result字段来张开相应的操作。假设报文响应平日,就调用success()闭包,不然调用failure()闭包,如下所示:

紧接着,大家提交伏乞成功后,对json数据的剖判以及对回到结果的拍卖。下方就是completionHandler闭包中的代码片段。首先对服务器重返的json数据开始展览辨析,解析后将json数据转换到对应的数据类型。然后依照响应报文的result字段来进展对应的操作。如若报文响应正常,就调用success()闭包,不然调用failure()闭包,如下所示:

世间大家一直将收获到的Model大概Model数组实行重回,在Spring Boot中,直接回到的Model会被映射成相应的JSON格式的多寡的,这一个稍后大家会直观的收看。

俗尘是增多完上述的信赖性包后,重新进行编写翻译的结果:

  澳门新萄京官方网站 23

  澳门新萄京官方网站 24

  澳门新萄京官方网站 25

  澳门新萄京官方网站 26

从那之后大家iOS客户端的互联网请求部分就封装完了,其余实际事情逻辑的网络央浼调用上述的Request类就能够,稍后会用到Request。

迄今结束大家iOS客户端的互联网央求部分就封装完了,其余实际事情逻辑的网络央浼调用上述的Request类就能够,稍后会用到Request。

 

 

 

 

6、访谈上述路由

2、数据库连接

三、登入注册模块的支付

三、登陆注册模块的付出

咱俩先拜会/queryContentById这几个路由,再拜候那几个路由时,我们要提供叁个参数contentId。也正是用来询问数据的规格。下方截图中的结果便是大家对contentId=6的口径查询的结果。

尘间代码段中的MySQLConnnet类就担任数据库的连天何况选取相应的数据库。下方是MySQLConnnet类的总体结构,host,port,user,password都是只读的一个钱打二十五个结属性,担任布署连接数据库的参数。而mysql属性正是连连数据库后的操作句柄。下方首要有多少个方法,二个是一连数据库的措施connectDataBase()和挑选数据库的艺术selectDataBase()。MySQLConnnet类对外是以单例的样式存在的,然而对外暴漏的不是MySQLConnnet类的对象,而是MySQL类的对象。

地点的功底职业达成后,接下去我们就要来做大家相应的事体模块了。首先我们来进行登陆注册模块的开销工作。 首先付诸服务端相应模块的代码,然后在交付相应模块的iOS端的完成。关于Swift3.0连接和操作MySQL的详实内容请仿照效法上一篇博客《Swift3.0服务端开垦(四) MySQL数据库的总是与操作》,数据库的一连在本有的就不做过多废话了。

地点的基础工作完成后,接下去我们就要来做大家相应的业务模块了。首先大家来张开登入注册模块的开销专业。 首先付诸服务端相应模块的代码,然后在付给相应模块的iOS端的实现。关于斯维夫特3.0连接和操作MySQL的详细内容请参照他事他说加以考察上一篇博客《Swift3.0服务端开荒(四) MySQL数据库的连天与操作》,数据库的连年在本有的就不做过多废话了。

  澳门新萄京官方网站 27

  澳门新萄京官方网站 28

1、服务端代码

1、服务端代码

接下去大家来查询一下兼有的数据,约等于拜见queryAll路由。具体结果如下所示。

接下去提交具体的代码达成,下方正是MySQLConnnet类的单例和村办构造器。具体落实如下所示:

(1)、登陆或注册的第一步:接收用户名

(1)、登陆或注册的首先步:接收用户名

  澳门新萄京官方网站 29

  澳门新萄京官方网站 30

江湖代码是用户登陆还是注册的率先步,通过用户名来查询用户音讯,进而来剖断该用户是还是不是注册,假使未注册则去登记,假诺注册过就去登陆。假若查询成功,那么就将查询的用户ID和UserName再次回到给客户端。用户登入的代码和江湖大致,就是经过Select语句来合作该用户名的密码是不是与用户输入的一律,在此就不做过多废话了。

尘间代码是用户登陆依然注册的首先步,通过用户名来查询用户音讯,从而来推断该用户是或不是注册,如若未注册则去挂号,假诺注册过就去登陆。假诺查询成功,那么就将查询的用户ID和UserName再次回到给客户端。用户登入的代码和江湖大致,正是经过Select语句来合作该用户名的密码是还是不是与用户输入的同等,在此就不做过多废话了。

 

凡间是数据库的连天,宗旨语句正是下方红框中的内容。首要依旧调用MySQL类中的connect()方法,在调用该方式时传出相应的参数就可以。倘使连接战败了会重回相应的errorMessage。具体代码如下所示:

  澳门新萄京官方网站 31

  澳门新萄京官方网站 32

 

  澳门新萄京官方网站 33

(2)、用户注册

(2)、用户注册

二、Thymeleaf模板的引进与运用

接连完数据库后,然后是挑选数据库,下方是挑选数据库的代码。使用mysql句柄调用selectDataBase()方法,具体代码如下所示:

人凡尘正是用户注册是调用的接口达成,首若是插入相应的用户新闻,具体如下所示:

人凡间就是用户注册是调用的接口完结,首假诺插入相应的用户音信,具体如下所示:

地方引进MyBatis算是妥了,以往的博客中还有大概会继续对MyBatis的连带东西进行介绍。接下来大家就引进Thymeleaf模板,然后展现大家运用MyBatis读取到的相关数据。下方大家就来看一下在Spring Boot中是何等整合Thymeleaf模板的

  澳门新萄京官方网站 34

  澳门新萄京官方网站 35

  澳门新萄京官方网站 36

 

 

上面那些代码写完后,配置完相应的路由调用上述措施,大家的服务端代码就产生了。具体路由的布局因为篇幅有限,本篇博客就不做过多废话了。

上边那么些代码写完后,配置完相应的路由调用上述办法,大家的服务端代码就形成了。具体路由的布署因为篇幅有限,本篇博客就不做过多废话了。

1、配置pom.xml文件

 

 

 

在pom.xml中增加Thymeleaf在Spring Boot中有关的库,具体如下所示:

三、数据库操作

2、iOS客户端代码达成

2、iOS客户端代码完毕

        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-thymeleaf -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
            <version>1.5.2.RELEASE</version>
        </dependency>

接下去大家将在调用上边的数据库操作类类操作实际数据库中的表了。在首先有的大家早已创制好了test数据库,并且创制好了相应的user表。接下来大家将在动用Swift代码来对User表举行增加和删除改查操作了。

接下去我们来贯彻iOS客户端的记名和注册的代码,下方就是登陆照旧注册的相关UI。用户输入用户后,点击下一步,会调用后台接口判别用户是不是注册过,假如已注册输入密码登陆,假如未注册就输入密码注册和登陆。侧边的UIViewController是公私的,三个页面,多少个让用户输入用户名,三个则承担接收密码。UI相比轻易,如下所示:

接下去大家来兑现iOS客户端的报到和注册的代码,下方正是登入照旧注册的相关UI。用户输入用户后,点击下一步,会调用后台接口决断用户是不是注册过,假如已登记输入密码登入,若是未注册就输入密码注册和登陆。左侧的UIViewController是公共的,五个页面,贰个让用户输入用户名,二个则担任接收密码。UI相比轻便,如下所示:

 

 

  澳门新萄京官方网站 37

  澳门新萄京官方网站 38

2、创制模板使用的Controller

1.营造数据库操作基类

 看完UI, 我们来看一下记名或注册的有关互联网央求的代码。下方的UserInfoRequest类就担负全部与用户音信相关的互连网须求,从下方的代码截图中,我们得以看到UserInfoRequest的基类是BaseRequest。下方的queryUserInfo(userName)正是上面左侧的页面所调用的章程,用来判断该用户是不是是注册过的用户。在queryUserInfo()中对Request类举行了实例化,并且调用了对应的呼吁方法。并且对相应的风波回调做了拍卖,具体如下所示。

 看完UI, 大家来看一下签到或注册的连锁互联网必要的代码。下方的UserInfoRequest类就担当全体与用户音信有关的网络须要,从尘间的代码截图中,大家得以观看UserInfoRequest的基类是BaseRequest。下方的queryUserInfo(userName)正是下边侧边的页面所调用的法子,用来推断该用户是或不是是注册过的用户。在queryUserInfo()中对Request类举办了实例化,况兼调用了相应的乞请方法。并且对相应的事件回调做了拍卖,具体如下所示。

随之,大家就来创立模板所对应的Controller,如下所示。下方大家照旧接纳注入的ContentMapper对象来获取数据。然后将得到的数目拉长到model对象中,在加上时,大家会为该数据对象钦赐一个参数名称,如下方的"contents"。然后回来模板页面就可以,下方的“display”便是我们模板页面所在的文件名称。

俗世截图就是大家营造的数据库操作的基类,全数数据库表的操作都要三番四遍自该基类,在基类中定义了操作数据库的名字dataBaseName,MySQL操作句柄mysql,以及响应json的格式responsJson。具体如下所示。

  澳门新萄京官方网站 39

  澳门新萄京官方网站 40

  澳门新萄京官方网站 41

  澳门新萄京官方网站 42

在大家相应的ViewController中会调用上述的方式,下方就是用户在输入相应的用户消息后点击next所调用的法子。通过相应的闭包事件,最后将网络央浼的结果回调到了VC中。

在大家相应的ViewController中会调用上述的措施,下方正是用户在输入相应的用户新闻后点击next所调用的不二法门。通过相应的闭包事件,最后将网络央浼的结果回调到了VC中。

 

 

  澳门新萄京官方网站 43

  澳门新萄京官方网站 44

3、创立模板页面

2.创设user表的操作类

至此我们iOS客户端的登陆就贯彻竣事了。 其余的代码和方面包车型客车思路类似,在此就不做过多废话了。

于今我们iOS客户端的登陆就实现告竣了。 别的的代码和方面包车型地铁思路类似,在此就不做过多废话了。

澳门新萄京官方网站,下一场大家就该创设模板页面了,也正是这里的display.html。下方正是display.html页面包车型地铁富有剧情。在那之中我们为数据的显得增加了一些css样式,并利用CDN引进了近年来新星版本的Bootstrap。下方带有“th:”前缀的习性正是Thymeleaf模板的竹签。

人间的UserOperator类就是我们创设的专门来操作user表的类,主若是对user表的增加和删除改查操作。insertUserInfo()肩负“增”,即插入用户新闻。deleteUser()担当“删”,通过userId来删除用户。updateUserInfo()就承担“改”,更新用户音信。queryUserInfo()就承受“查”了,担负从user表中通过用户名来查询消息。

 

 

首先使用“th:if="${not #lists.isEmpty(contents)}"”来判定contents属性所对应的值是还是不是为空,要是不为空,则推行标签中的内容。然后使用th:if="${not #lists.isEmpty(contents)}"来遍历contents中的内容,类似于while循环。通过th:each="content:${contents}"抽取每一种的数量。通过th:text="${content.contentId}"收取有些属性的值。具体内容如下所示。

  澳门新萄京官方网站 45

本篇博客,就先到那时候吧,其余代码和上述的笔触一贯,根据上述的笔触去完毕笔记的增加和删除改查就能够,在此就比非常少废话了。完整德姆o请移步github相关链接。

本篇博客,就先到那儿吧,其余代码和上述的思绪向来,依据上述的思绪去贯彻笔记的增加和删除改查就能够,在此就非常的少废话了。完整德姆o请移步github相关链接。

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
<meta content="text/html;charset=UTF-8"/>
<!-- 最新版本的 Bootstrap 核心 CSS 文件 -->
<link rel="stylesheet" href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va PmSTsz/K68vbdEjh4u" crossorigin="anonymous"/>
<!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
<script src="http://www.cruity.com/uploads/allimg/190707/0554524017-45.jpg" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
<title>Content</title>
</head>
<body>
    <div class="center-block" style="width:800px" th:if="${not #lists.isEmpty(contents)}">
        <div class="row"  style="height:50px; background-color: #000000; color: #ffffff">
          <div class="col-md-1">CotentId</div>
          <div class="col-md-2">Title</div>
          <div class="col-md-5">Cotent</div>
          <div class="col-md-1">UserId</div>
          <div class="col-md-2">CreateTime</div>
        </div>
        <div th:if="${not #lists.isEmpty(contents)}">
            <div class="row" th:each="content:${contents}" style="height:40px;background-color: #000000; margin-top: 1px; color: #ffffff">
              <div class="col-md-1"></div>
              <div class="col-md-2"></div>
              <div class="col-md-5"></div>
              <div class="col-md-1"></div>
              <div class="col-md-2"></div>
            </div>
        </div>
    </div>

</body>
</html>

 

github分享链接: https://github.com/lizelu/PerfectDemo 

github分享链接: https://github.com/lizelu/PerfectDemo 

 

(1)、InsertUserInfo()----"增"

4、访谈上述路由

世间正是插入数据的切实可行代码,第二个框正是我们要实行的SQL语句,然后使用mysql操作句柄调用query()方法开始展览SQL语句的实践。推行成功后,查询插入的数额并回到查询的结果,如下所示。

开创完呈现用的沙盘后,接下去大家要做的业务便是要对其展开拜见了。下方截图便是大家最后的拜候结果。

  澳门新萄京官方网站 46

  澳门新萄京官方网站 47

 

本篇博客就先到此时吧,以往还或许会动用到MyBatis的其他内容,到时候再细说。

(2)、deleteUserInfo()----"删"

本篇博客所关联代码的github地址:https://github.com/lizelu/SpringBootProject

接下去大家来看一下删减的具体操作,下方截图便是deleteUserInfo()的具体贯彻。下方的措施与插入差不离,先给出delete的SQL语句,然后再调用mysql操作句柄的query()操作,具体代码如下所示:

 

  澳门新萄京官方网站 48

 

(3)、updateUserInfo----更新用户音讯

人人间是翻新用户消息的代码,与上四个代码大致,只可是是因而mysql操作句柄调用query()方法实践的是update的SQL语句。更新时大家选用了MySQL的now()函数来更新时间,具体代码如下所示。

  澳门新萄京官方网站 49

 

(4)、queryUserInfo----查询

随着大家来落到实处一下询问用户音信的代码。下方正是查询用户音讯的代码,查询的代码稍微复杂一些,在实行完询问的SQL语句后,还需开价格查询结果举行仓库储存。在蕴藏后,会回到查询的结果results。我们能够通过results的forEachRow()函数的随从闭包来赢得每行的数额。在抽出数据后,将其调换到相应的字典,然后将存有询问结果的字典存入到responseJson中,然后将responseJson转变为json字符串重回给用户就能够。具体做法如下所示。

  澳门新萄京官方网站 50

 

 

四、测验用例

地方大家写完操作User表的对应的主意后接下去大家就来测验一些切实可行的结果。为了有利于测量检验,我们配备4个路由极其用来对User表的增加和删除改成开始展览操作。每种路由对应着地点每一种方法。本有的就交给相应的测量检验用例。为了有利于测验,大家在路由布署时,钦点诉求方法全都是GET央浼。

 

1、对“增”的测试

接下去大家对InsertUserInfo()的的测验,首先我们抬高三个呼吁方式为GET的“/create”路由,然后拿走用户提交的userName和password。获取实现后,调用UserOperator对象的insertUserInfo()方法将数据插入到数据库中。当然插入后,会随着将数据查询出来重回给客户端的。

  澳门新萄京官方网站 51

咱俩在浏览器里拜望“

  澳门新萄京官方网站 52

 

2.对“改”的测试

接下去大家就要测验一下updateUserInfo()那些函数,该部分与上述的代码大约,也是急需配备多少个呼吁格局为GET的翻新路由“/update”。然后在该路由中收获需要参数,然后调用updateUserInfo()那么些函数就能够。具体代码就不做过多废话了,直接看下方的测验结果吗。通过结果简单看出,用户名被修改成精确的Hello了,并且时间也被更新了。

  澳门新萄京官方网站 53

 

剩余的查与删,和上边包车型大巴亲自去做大致,在此就不做过多废话了,我们的MySQL数据库的操作就先谈到那吗。官方上还介绍了一部分数据库的ORM操作,个中就有MySQL的ORM操作,能够简化一些数额操作。那一点就留下读者自个儿去看吗。

 

本文由澳门新萄京官方网站发布于www.8455.com,转载请注明出处:澳门新萄京官方网站MySQL数据库的连日与操作,记

关键词: