SpingBoot二——引入MySql数据库
◆版权声明:本文出自胖喵~的博客,转载必须注明出处。
转载请注明出处:https://www.cnblogs.com/by-dream/p/10486117.html
搭起一个简单的服务后,接下来我们加入数据库,通过服务去读取DB中的数据进行显示。顺便将模块划分再清晰一些。
不说太多了,直接说代码吧。
1、pom.xml的dependencies中入依赖
<!-- 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,所有和数据库之间的操作都借助它来完成。
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=123456
spring.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 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; 这一步不可获取,否则不会成功。此时我们在本地远程登录到服务器上看下是否可行。
3、在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>
4、对应的我们需要建一个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数据类型;
5、接下来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;
}
}
6、最终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
SpingBoot二——引入MySql数据库的更多相关文章
- 数据库学习笔记(二)MySQL数据库进阶
MySQL 进阶 关于连表 左右连表: join 上下连表: union #自动去重 (当两张表里的数据,有重复的才会自动去重) union all #不去重 #上下连表示例: select sid, ...
- 我与solr(二)--导入mysql数据库
关于solr的搭建详见上一篇的随笔. 步骤1: 在webapps中solrhome下新建一个文件夹名字叫做mynode(名字不固定,可以随便取,但是这个名字在后面的配置中会有所关联.)然后在mynod ...
- 二、mysql数据库之基本操作和存储引擎
一.知识储备 数据库服务器:一台计算机(对内存要求比较高) 数据库管理系统:如mysql,是一个软件 数据库:oldboy_stu,相当于文件夹 表:student,scholl,class_list ...
- python笔记二(mysql数据库操作)
python2.x使用MySQLdb python3.x使用pymysql代替MySQLdb 不过我使用的是python3.5,MySQLdb还是可以在python3.5使用的. #!/usr/bin ...
- 阿里云数据库配置学习笔记(二):下载并配置MySQL数据库
参考资料:阿里云官方文档 2018-02-20 一.MySQL数据库的下载 在Ubuntu环境下安装MySQL数据库十分简单 在命令行中输入 sudo apt-get update(更新软件源,预防出 ...
- MySQL数据库基础详解(非原创)
文章大纲 一.数据库简介二.Mysql数据库简介三.Mysql安装与服务启动(Windows版本)四.Mysql图形化工具五.Mysql存储引擎精讲六.Mysql数据类型介绍七.Mysql主要专业名称 ...
- php面试专题---mysql数据库分库分表
php面试专题---mysql数据库分库分表 一.总结 一句话总结: 通过数据切分技术将一个大的MySQLServer切分成多个小的MySQLServer,既攻克了写入性能瓶颈问题,同一时候也再一次提 ...
- 【阿里巴巴Java开发手册1.7.0(嵩山版)】编程规约&MySQL 数据库规约
阿里巴巴Java开发手册1.7.0(嵩山版) 一.编程规约 (一)命名风格 所有命名不得以下划线和$开始和结束. 所有命名不得以拼音或拼音英文混合. 类名使用UpperCamelCase风格. 方法名 ...
- mysql数据库及oracle数据库的定时备份
一.oracle数据库备份bat文件 @echo off md "%date:~0,10%" cd "%date:~0,10%" echo exp 用户名/密码 ...
随机推荐
- 【Maven】2.使用Nexus3搭建Maven私服+上传第三方jar包到本地maven仓库
参考文章: http://www.cnblogs.com/luotaoyeah/p/3791966.html --------------------------------------------- ...
- Visual Studio 项目模板制作(二)
上一篇,我们制作了项目模板,本篇我制作项模板 首先,从我们需要导出模板的项目中,文件->导出模板,弹出 导出模板向导 对话框 选择项模板,点击下一步 选择要导出的项,点击下一步 选择要Refer ...
- 使Apache支持PHP
1.用记事本打开Apache安装目录下conf文件夹中的httpd.conf文件,找到LoadModule部分的配置代码,在该部分添加下面的代码,将PHP模块加载到Apache服务中,使得Apache ...
- 机器学习 MLIA学习笔记(一)
监督学习(supervised learning):叫监督学习的原因是因为我们告诉了算法,我们想要预测什么.所谓监督,其实就是我们的意愿是否能直接作用于预测结果.典型代表:分类(classificat ...
- 遇到Io阻塞时会切换任务之【爬虫版】
#! /usr/bin/env python3 # -*- coding:utf- -*- from urllib import request import gevent,time from gev ...
- django 接口编写的配置
一.修改settings文件 ALLOWED_HOSTS = ['*'] INSTALLED_APPS = [ 'corsheaders' ] #加入该app 安装django-cors-hea ...
- 《F4+2—团队项目设计完善&编码测试》
1:根据OOD详细设计工作要点,修改完善团队项目系统设计说明书和详细设计说明 a.软件系统设计说明书的完善 将测试启动准则,测试结束准则,测试暂停/中止标准加到了测试计划中.将把在测试中会 ...
- 《剑指offer》第十题(斐波那契数列)
// 面试题:斐波那契数列 // 题目:写一个函数,输入n,求斐波那契(Fibonacci)数列的第n项. #include <iostream> using namespace std; ...
- C#通过Oracle.ManagedDataAccess无法访问Oralce
问题描述:通过C#引用Oracle.ManagedDataAccess.dll访问Oracle,写了如下一段代码,在本机能正常访问,但是将编译后的exe放到服务器上面就无法访问了,一直提示登录失败.而 ...
- c# 获取方法所在的命名空间 类名 方法名
平时我们在记录日志的时候难免会需要直接记录当前方法的路径,以便查找,但是每次都输入方法名称非常的繁琐,同时如果修改了方法名称也要去手动修改日志内容,真的是劳命伤财啊,所以有了如下方法则可解决我们的大难 ...