mysql有的放矢_IDEA+Spring boot+Mybatis+Mysql 前端接口开发(二)有的放矢

本文介绍了如何使用IDEA、Spring Boot、Mybatis和Mysql创建一个支持用户注册、第三方登录和手机号绑定的接口项目。详细步骤包括创建数据库表、设置数据库连接、配置Mybatis、编写接口代码,并展示了如何解决时区问题和集成Swagger进行接口预览调试。
摘要由CSDN通过智能技术生成

目标

首先确定接口开发目标,在此以大多项目都会使用到的用户登录、注册功能为例,做一个支持账号注册+绑定三方(qq、微信)登录+绑定手机号并支持swagger 预览调试的接口项目,文章只讲述其中一个接口实现流程其它接口查看完整项目api-demo。

创建数据库及表

1、用户表一般有字段 id、账号、密码、手机号、微信id、qqid等。创建用户表代码如下:

DROP TABLE IF EXISTS `t_user`;

CREATE TABLE `t_user` (

`id` varchar(64) NOT NULL COMMENT '用户ID',

`user_name` varchar(64) NOT NULL COMMENT '用户名-账号可做登录使用',

`nick_name` varchar(64) DEFAULT '' COMMENT '用户昵称',

`password` varchar(128) NOT NULL COMMENT '密码',

`phone` varchar(11) DEFAULT '' COMMENT '电话号码',

`we_chat_open_id` varchar(64) DEFAULT '' COMMENT '微信授权id',

`qq_open_id` varchar(64) DEFAULT '' COMMENT 'qq授权id',

`head_url` varchar(256) DEFAULT '' COMMENT '头像地址',

`signature` varchar(128) DEFAULT '' COMMENT '个性签名',

`create_time` datetime DEFAULT '2018-01-01 00:00:01' COMMENT '创建时间',

`login_time` datetime DEFAULT '2018-01-01 00:00:01' COMMENT '上次登录时间',

`modify_time` datetime DEFAULT '2018-01-01 00:00:01' COMMENT '修改时间',

PRIMARY KEY (`id`,`user_name`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

复制代码

2、打开Navicat 并创建MySQL连接,创建数据库创建数据库ah_test --参看上篇-开发环境及工具的准备-Navicat 连接Mysql部分;

3、创建用户表方式一:点击Navicat 导航栏 查询 并选择 新建查询 将上边创建代码复制 运行即可

51b4b97bc8233a38a281e997777346bf.png

37c6e1fc6c98d7a947e107f0bbc382ec.png

方式二:当然也可以通过选中ah_test数据库 表 右键 选择新建表 选项进行手动创建

3ff9621b14cac94d7102fc2ba0858752.png

推荐使用方式一进行用户表的创建.

新建项目

1、打开IDEA 选择File-->>New -->>Projects,如图示流程

e9e3dc7b81faf7a9e09a9f14ea50dffe.png

b6cecc439f742ac29f0ec8ea142cc056.png

cf6210a1387c0b8b3ac403e4caad65d8.png

c08bb18a72e0d8658ceb0b51ca4c4b2a.png

最后选择项目保存位置 finish 即可创建项目。

67d5be8db04521df1f202833a453e439.png

创建项目成功后的目录结构如下:

1、DemoApplication为项目入口

2、pom.xml 为三方库引入配置

3、application.properties为项目配置文件,如端口配置,数据库连接配置等

网上建议新建一个 application.yml 替换 application.properties 作为项目配置。笔者此处也采用网上方式。

项目编写

1、配置端口及数据库连接信息

server:

port: 8080

spring:

datasource:

url: jdbc:mysql://localhost:3306/ah_test?useUnicode=true&amp&characterEncoding=utf-8 #注意设置编码格式

username: root

password:

复制代码

其中 localhost:3306 为主机地址:端口也是通过Navicat 连接数据库填写的配置。后期如部署到服务器做相应配置变换即可

ah_test 为前面创建数据库名称 username 及 password 为数据库登录用户名及密码。

2、第一次运行项目

配置完成后运行项目,大概你会看到如下错误:

e2ac6edfd8e769d1f4f50ebab513e9b6.png

该问题为MySQL 时区设置引起

解决方案为:在配置数据库url后加上如下设置**&amp&serverTimezone=UTC**

完整配置:

server:

port: 8080

spring:

datasource:

url: jdbc:mysql://localhost:3306/ah_test?useUnicode=true&amp&characterEncoding=utf-8&amp&serverTimezone=UTC #注意设置编码格式及时区

username: root

password:

复制代码

3、新建分包并创建相关类

如图所示:

985884f81901890e935db0c3cb865cee.png

1、controller 为最终提供给前端使用的接口对应的方法

2、entity 为使用实体类(bean类)

3、mapper 为 查询数据库配置的映射关系类(后面讲)

4、service 为controller 与mapper桥梁

4、创建mapper.xml

在 resources 目录下创建 mybatis 文件夹再在 mybatis 下创建 UserMapper.xml ,并指向 java 包下 UserMapper.java 类如图:

00df6a6e8c8d5a8321a8d3a3fced4d1a.png

该xml内写sql语句,java目录下controller-->>service-->>mapper 最终执行该xml 内sql代码

5、配置mybatis

5.1 首先在项目配置文件application.yml,添加如下配置

# 该配置节点为独立的节点

mybatis:

mapper-locations: classpath:mybatis/*.xml # 注意:一定要对应mapper映射xml文件的所在路径

type-aliases-package: com.aries.api.demo.entity # 注意:对应实体类的路径

configuration:

map-underscore-to-camel-case: true # 数据库字段下划线自动转驼峰

复制代码

其中 mapper-locations 指定xml路径

5.2、其次在入口Application类添加java目录下mapper路径,通过@MapperScan,如图所示:

bab833f9a7f890e9fbff7dd20e3e0976.png

如不在此处添加@MapperScan ,也可在每个mapper类添加@Mapper注解

ceaad9d7e8cf650150f69eda908b9200.png

示例demo采用入口类添加模式。

5.3、最后controller 配置注解@RestController 标明该类为接口类,也可添加@RequestMapping 给同一controller 下接口方法添加相同的开头用于模块区分,如图所示

c478aafc70fa011ee6650d86794dc3ed.png

6、主要代码编写

以根据账号/手机号/微信号/id 等信息搜索用户信息为例,其它可查看完整项目api-demo

java 目录下UserMapper代码

/**

* 通过账号/手机号 查询用户

*

* @param account

* @return

*/

UserEntity findUserById(String account);

复制代码

UserService代码

@Autowired

private UserMapper mMapper;

public UserEntity findUserById(String account) {

return mMapper.findUserById(account);

}

复制代码

UserController代码

@Autowired

private UserService mUserService;

@RequestMapping(value = "/getUserInfo", method = RequestMethod.GET)

public BaseEntity getUserInfo(@RequestParam(value = "id") @ApiParam("用户id-登录注册返回用户实体中id字段") String id) {

UserEntity userEntity = mUserService.findUserById(id);

if (StringUtils.isEmpty(id)) {

return new BaseEntity()

.setMsg("请输入用户id")

.setCode(201);

}

if (userEntity != null) {

return BaseEntity.

success("获取用户信息成功")

.setData(userEntity);

}

return new BaseEntity()

.setMsg("暂无该账号信息")

.setCode(201);

}

复制代码

1、RequestMapping value 指明 接口方法名 如Controller 设置RequestMapping 最终接口地址即为:http:localhost:8080/user/getUserInfo

method 指明接口访问模式为get 其它的有RequestMethod.POST等。

2、RequestParam 指明单个参数,也可@RequestBody 传递json串,具体根据个人喜好和参数多少及扩展性

xml下mapper 查询数据库设置

select

*

,UNIX_TIMESTAMP(create_time) as create_date

from

t_user

where

id = #{account} or user_name = #{account} or phone = #{account}or we_chat_open_id = #{account}or qq_open_id = #{account};

复制代码

1、因xml里的mapper与java下的mapper存在映射关系,故xml里的id和java里的方法名必须一一对应否则会保错找不到对应方法

2、resultType为查询返回结果对象,mybatis可直接转为你想要的对象-demo对应entity

3、#{XXX} 标明为java mapper方法传递的参数,必须对应 =前面 为数据库对应字段名

4、可在Navicat 执行查询语句后再进行动态参数调整

7、运行程序、浏览器测试

efdc314943a641f53091c0608e3cd97a.png

be4da04503e24f04bcf01ab4f75cc730.png

8、集成Swagger

1、导入插件--pom.xml 版本自选

io.springfox

springfox-swagger2

2.8.0

io.springfox

springfox-swagger-ui

2.8.0

io.springfox

springfox-bean-validators

2.8.0

复制代码

2、添加Swagger 配置类

在java包创建 SwaggerConfig类并添加 @Configuration @EnableSwagger2 注解

b3ce0e680034c987ddd8cf631cff043e.png

说明:主要createRestApi apis 指明controller路径

3、controller 配置

在controller 类 添加 @Api(value = "/user", description = "用户模块", tags = {"/user"}) 注解 description 描述文件 tags 为描述文字前标签 value 暂未找到UI提现

接口方法参数 添加注解 @ApiParam("用户id-登录注册返回用户实体中id字段") 注释字段

4、运行项目、展示效果

项目编译运行后,浏览器输入http://localhost:8080/swagger-ui.html 即可访问查看效果

a183c4a7a4e0cd3d49a1f931d0859251.png

点击模块输入接口参数访问即可调试接口

015550e68d27d227120d4868bc7bc5c0.png

总结

至此一个简单用户登录、注册相关的后台接口项目编写完成,当然实际项目业务逻辑肯定比这复杂,但是有了这个demo编写经验其它的边做边学一定可以学到更多的。

关于我

Email: AriesHoo@126.com

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值