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

IDEA+Spring boot+Mybatis+Mysql 前端接口开发(一)工欲善其事必先利其器html

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

上篇-开发环境及工具的准备,本篇正式开撸代码java

目标

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

建立数据库及表

一、用户表通常有字段 id、帐号、密码、手机号、微信id、qqid等。建立用户表代码以下:git

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;
复制代码

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

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

复制代码建立数据库

建立用户表成功

方式二:固然也能够经过选中ah_test数据库 表 右键 选择新建表 选项进行手动建立sql

选项手动建立

推荐使用方式一进行用户表的建立.数据库

新建项目

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

建立项目-step1

建立项目-step2

建立项目-step3

建立项目-step4

最后选择项目保存位置 finish 便可建立项目。

建立项目-目录结构

建立项目成功后的目录结构以下:

一、DemoApplication为项目入口 二、pom.xml 为三方库引入配置 三、application.properties为项目配置文件,如端口配置,数据库链接配置等

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

项目编写

一、配置端口及数据库链接信息

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 为前面建立数据库名称 usernamepassword 为数据库登陆用户名及密码。

二、第一次运行项目

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

运行项目-step1

该问题为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:
复制代码

三、新建分包并建立相关类

如图所示:

新建分包及建立相关类

一、controller 为最终提供给前端使用的接口对应的方法 二、entity 为使用实体类(bean类) 三、mapper 为 查询数据库配置的映射关系类(后面讲) 四、service 为controller 与mapper桥梁

四、建立mapper.xml

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

建立mapper.xml

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

五、配置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.二、其次在入口Application类添加java目录下mapper路径,经过@MapperScan,如图所示:

程序入口添加mapper路径
如不在此处添加@MapperScan ,也可在每一个mapper类添加@Mapper注解

Mapper类添加注解

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

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

controller 配置

六、主要代码编写

以根据帐号/手机号/微信号/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);
    }

复制代码

一、RequestMapping value 指明 接口方法名 如Controller 设置RequestMapping 最终接口地址即为:http:localhost:8080/user/getUserInfo method 指明接口访问模式为get 其它的有RequestMethod.POST等。 二、RequestParam 指明单个参数,也可@RequestBody 传递json串,具体根据我的喜爱和参数多少及扩展性

xml下mapper 查询数据库设置

<select id="findUserById" resultType="com.aries.api.demo.entity.UserEntity">
        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};
    </select>
复制代码

一、因xml里的mapper与java下的mapper存在映射关系,故xml里的id和java里的方法名必须一一对应不然会保错找不到对应方法 二、resultType为查询返回结果对象,mybatis可直接转为你想要的对象-demo对应entity 三、#{XXX} 标明为java mapper方法传递的参数,必须对应 =前面 为数据库对应字段名 四、可在Navicat 执行查询语句后再进行动态参数调整

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

查询失败

查询成功

八、集成Swagger

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

<!--Swagger UI-->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.8.0</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.8.0</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-bean-validators</artifactId>
            <version>2.8.0</version>
        </dependency>
复制代码

二、添加Swagger 配置类

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

Swagger 配置

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

三、controller 配置

在controller 类 添加 @Api(value = "/user", description = "用户模块", tags = {"/user"}) 注解 description 描述文件 tags 为描述文字前标签 value 暂未找到UI提现 接口方法参数 添加注解 @ApiParam("用户id-登陆注册返回用户实体中id字段") 注释字段

四、运行项目、展现效果

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

Swagger 效果

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

Swagger 调试接口

总结

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

关于我

掘金: AriesHoo

GitHub: AriesHoo

Email: AriesHoo@126.com

相关文章
相关标签/搜索