◆版权声明:本文出自胖喵~的博客,转载必须注明出处。
搭起一个简单的服务后,接下来我们加入数据库,通过服务去读取DB中的数据进行显示。顺便将模块划分再清晰一些。
不说太多了,直接说代码吧。
1、pom.xml的dependencies中入依赖
org.mybatis.spring.boot
mybatis-spring-boot-starter
1.3.2
mysql
mysql-connector-java
注意这里我们引入mybatis,所有和数据库之间的操作都借助它来完成。
2、resource中加入数据库配置和mapper的配置:
#数据库配置
spring.datasource.url=jdbc:mysql://**.**.**.**:3306/rap?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true
spring.datasource.username=root
spring.datasource.password=123456spring.datasource.driver-class-name=com.mysql.jdbc.Driver#mybatis 配置.xml文件路径
mybatis.mapper-locations=classpath:mapper/*.xml
第一列需要配置你的ip地址和端口,3306后面的第一个斜线后跟数据库名(也就是这里的rap)
这里需要提前登录到服务上进行了建表:
mysql -u root -p 后输入密码进入,创建数据库:
create DATABASE rap;
然后建表:
create table user (
id bigint unsignednot null auto_increment comment '主键',
gmt_create datetimenot null comment '创建时间',
gmt_modified datetimenot null comment '修改时间',
nick varchar(1024) not null comment '名字',
age bigint unsignednot 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; 这一步不可获取,否则不会成功。此时我们在本地远程登录到服务器上看下是否可行。
3、在resource中加入创建mapper:
**-mapper.xml 里面的内容有点像写sql一样,这里我们先实现一个findById的方法
id, nick, age
SELECTFROM user
WHERE id = #{id}
4、对应的我们需要建一个mapper的类和其对应的数据类do类:
packagecom.bryan.demo.dal.dao;importcom.bryan.demo.dal.entity.UserDO;importorg.apache.ibatis.annotations.Mapper;
@Mapperpublic interfaceUserMapper {publicUserDO findById(Long id);
}
packagecom.bryan.demo.dal.entity;importjava.io.Serializable;public class UserDO implementsSerializable {/*** 主键*/
privateLong id;privateString nick;private intage;publicString getNick() {returnnick;
}public voidsetNick(String nick) {this.nick =nick;
}public intgetAge() {returnage;
}public void setAge(intage) {this.age =age;
}
}
UserMapper类的作用就是提供数据库操作的方法,UserDO类的作用就是将数据库中的数据转化为Java数据类型;
5、接下来Service层的实现:
定义接口:
packagecom.bryan.demo.service;importcom.bryan.demo.dal.entity.UserDO;public interfaceUserService {
UserDO findById(Long id);
}
接口的实现:
packagecom.bryan.demo.service.impl;importcom.bryan.demo.dal.dao.UserMapper;importcom.bryan.demo.dal.entity.UserDO;importcom.bryan.demo.service.UserService;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.stereotype.Service;
@Servicepublic class UserServiceImpl implementsUserService {
@AutowiredpublicUserMapper userMapper;
@OverridepublicUserDO findById(Long id) {
UserDO userDO= userMapper.findById(1L);returnuserDO;
}
}
6、最终Controller层直接调用service的接口返回:
@RestControllerpublic classMachineInfoController {
@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