◆版權聲明:本文出自胖喵~的博客,轉載必須註明出處。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