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

相關文章
相關標籤/搜索