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 用户名/密码 ...
随机推荐
- 浅入浅出JS中的eval及json
声明: 首先声明一下,本人是JS新手,所以不敢说深入,只是把最近对eval的学习经验拿出来跟大家分享,如果您是高手可略去不看. 适合读者: 对JS中的eval一知半解,不知eval是如何把字符串转换为 ...
- 51NOD 1057 N的阶乘
1057 N的阶乘 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 输入N求N的阶乘的准确值. Input 输入N(1 <= N <= 10000) ...
- 03_Spark集群部署
[安装前的环境准备] Hadoop:2.6.1Java:jdk-1.7.0Spark: spark-1.6.0-bin-hadoop2.6.tgzScala: scala-2.11.4.tgz虚拟机: ...
- mysql 存储过程简单实例
一.什么是存储过程 存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程 ...
- [原][osg][osgEarth]osg::Matrix 父子节点的变化关系
//osg::Matrix offsetmatrix 计算出子节点在父节点下的绝对坐标 //osg::Matrix offposition 用来计算当前节点相对父节点的位置 osg::Matrix o ...
- input 输入框只能输入纯数字
1.onkeyup = "value=value.replace(/[^\d]/g,'')" 使用 onkeyup 事件,有 bug ,那就是在中文输入法状态下,输入汉字之后直接回 ...
- 证明: 2^0+2^1+2^2+2^3+.+2^n-1=(2^n)-1
S=2^0+2^1+2^2+2^3+.+2^(n-1)2S=2^1+2^2+2^3+...+2^(n-1)+2^n两式相减,2S-S=2^n-2^0S=2^(n)-1
- [Java学习] Java多态和动态绑定
在Java中,父类的变量可以引用父类的实例,也可以引用子类的实例. 请读者先看一段代码: 1. public class Demo { 2. public static void main(Strin ...
- 20170716xlVba销售明细转销售单据
Sub CreateSaleList() AppSettings On Error GoTo ErrHandler Dim StartTime As Variant '开始时间 Dim UsedTim ...
- js-Client-side web APIs
APIs https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Client-side_web_APIs/ 简介: 应用程序接口(API) ...