SpingBoot二——引入MySql數據庫

  ◆版權聲明:本文出自胖喵~的博客,轉載必須註明出處。html

  轉載請註明出處:http://www.javashuo.com/article/p-fcgznnoe-ca.html 
java

 

搭起一個簡單的服務後,接下來咱們加入數據庫,經過服務去讀取DB中的數據進行顯示。順便將模塊劃分再清晰一些。mysql

不說太多了,直接說代碼吧。git

一、pom.xml的dependencies中入依賴github

        <!-- mybatis 數據庫 -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>1.3.2</version>
        </dependency>

        <!-- mysql 驅動 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>        

注意這裏咱們引入mybatis,全部和數據庫之間的操做都藉助它來完成。spring

二、resource中加入數據庫配置和mapper的配置:sql

# 數據庫配置
spring.datasource.url=jdbc:mysql://**.**.**.**:3306/rap?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

# mybatis 配置.xml文件路徑
mybatis.mapper-locations=classpath:mapper/*.xml

第一列須要配置你的ip地址和端口,3306後面的第一個斜線後跟數據庫名(也就是這裏的rap)數據庫

這裏須要提早登陸到服務上進行了建表:apache

mysql -u root -p 後輸入密碼進入,建立數據庫:瀏覽器

create DATABASE rap;  

 而後建表:

create table user (
    id bigint unsigned  not null auto_increment comment '主鍵',
    gmt_create datetime  not null comment '建立時間',
    gmt_modified datetime  not null comment '修改時間',
    nick varchar(1024)  not null comment '名字',
    age bigint unsigned  not null comment '年齡',
    primary key (id)
) default charset=utf8 comment='這是一張用戶表';

插入一條數據:

insert into user (nick, age) values ("bryan", 27);

建表完成後。咱們還須要開啓數據庫遠程連接。首先運行:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456'  ;
這裏的123456爲你給新增權限用戶設置的密碼,%表明全部主機,也能夠具體到你的主機ip地址
接着運行  flush privileges;  這一步不可獲取,不然不會成功。此時咱們在本地遠程登陸到服務器上看下是否可行。

 三、在resource中加入建立mapper:

**-mapper.xml 裏面的內容有點像寫sql同樣,這裏咱們先實現一個findById的方法

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN" "http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
<mapper namespace="com.bryan.demo.dal.dao.UserMapper">
    <resultMap id="userMap" type="com.bryan.demo.dal.entity.UserDO">
        <result property="id" column="id"/>
        <result property="nick" column="nick"/>
        <result property="age" column="age"/>
    </resultMap>

    <sql id="columns" >
        id, nick, age
    </sql>

    <select id="findById" parameterType="java.lang.Long" resultMap="userMap">
        SELECT
        <include refid="columns" />
        FROM user
        WHERE id = #{id}
    </select>
</mapper>

四、對應的咱們須要建一個mapper的類和其對應的數據類do類:

package com.bryan.demo.dal.dao;

import com.bryan.demo.dal.entity.UserDO;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface UserMapper {

    public UserDO findById(Long id);
}
package com.bryan.demo.dal.entity;

import java.io.Serializable;

public class UserDO implements Serializable {

    /**
     * 主鍵
     */
    private Long id;

    private String nick;
    private int age;

    public String getNick() {
        return nick;
    }

    public void setNick(String nick) {
        this.nick = nick;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

UserMapper類的做用就是提供數據庫操做的方法,UserDO類的做用就是將數據庫中的數據轉化爲Java數據類型;

五、接下來Service層的實現:

定義接口:

package com.bryan.demo.service;

import com.bryan.demo.dal.entity.UserDO;

public interface UserService {
    UserDO findById(Long id);
}

接口的實現:

package com.bryan.demo.service.impl;

import com.bryan.demo.dal.dao.UserMapper;
import com.bryan.demo.dal.entity.UserDO;
import com.bryan.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    public UserMapper userMapper;
    
    @Override
    public UserDO findById(Long id) {

        UserDO userDO = userMapper.findById(1L);
        return userDO;
    }
}

六、最終Controller層直接調用service的接口返回:

@RestController
public class MachineInfoController {

    @Autowired
    UserService userService;

    @RequestMapping("/")
    String homePage() {
        UserDO userDO = userService.findById(1L);
        return "name:"+userDO.getNick() + " age:"+userDO.getAge();
    }
}

此時咱們在瀏覽器狀況,查看:

 好,看下總體的目錄結構:

 

因爲本節只說數據庫,因此總體的服務端的架構尚未特別的完善,下一節我會針對總體服務端架構進行分層,而後詳細說明。

代碼我傳到git上:https://github.com/bryanfeng/springboot-demo.git

相關文章
相關標籤/搜索