一、导入依赖包

  1、在创建项目时勾选:

  

  勾选SQL中的JDBC API、MyBatis Framework、MySQL Driver,创建项目后就会自动配置和引入这些包。

  2、在pom.xml文件中添加依赖:

  

  <dependencies></dependencies>中添加以下代码,引入jdbc、mybatis和mysql依赖包:

        <!-- jdbc -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<!-- mybatis -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.3</version>
</dependency>
<!-- mysql -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>

  在Maven管理中点击Reload All Maven Projects,重新加载项目:

  

  3、在导入数据库的依赖包之后,再运行程序,就会出现以下问题:

  'url' attribute is not specified and no embedded datasource could be configured.

  问题处理:SpringBoot框架:'url' attribute is not specified and no embedded datasource could be configured问题处理

二、创建数据库表

  数据库名:spring_boot_demo

  数据库表:t_user

  字段:id,username,password,age,sex

  

  预先存入一条数据,方便后续操作。

三、配置数据库连接信息

  springboot中默认的配置文件是application.properties,修改后缀名为application.yml,打开编辑配置信息:

  注:两者的区别不大,简单了解下就可以了。

    哪个也可以用,主要还是看个人习惯(application.properties和application.yml的区别

  1、先简单配下端口和路径:

server:
port: 8080
servlet:
context-path: /cn

  2、配置数据库连接信息:

spring:
datasource:
url: jdbc:mysql://localhost:3306/spring_boot_demo?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowMultiQueries=true&serverTimezone=Asia/Shanghai
username: root
password: root
driver-class-name: com.mysql.jdbc.Driver

四、建立三层架构实现数据访问

  1、数据访问层

  结构如下:

  

  (1)UserPO类:

package com.example.demo.po;

import java.io.Serializable;

/**
* @author 我命倾尘
*/
public class UserPO implements Serializable {
/** 用户ID */
private int id;
/** 用户名 */
private String username;
/** 用户密码 */
private String password;
/** 年龄 */
private int age;
/** 性别 */
private String sex; public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getUsername() {
return username;
} public void setUsername(String username) {
this.username = username;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} public int getAge() {
return age;
} public void setAge(int age) {
this.age = age;
} public String getSex() {
return sex;
} public void setSex(String sex) {
this.sex = sex;
}
}

  User类implements了一个Serializable类,该类的作用是序列化。

  (2)UserMapper接口:

package com.example.demo.mapper;

import org.springframework.stereotype.Repository;

/**
* @author 我命倾尘
*/
@Repository
public interface UserMapper {
int getAgeByUsername(String username);
}

  @Repository注解是把这个接口的一个实现类交给spring管理。

  (3)UserMapper.xml配置文件:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.example.demo.mapper.UserMapper">
<select id="getAgeByUsername" resultType="int">
select
age
from
t_user
where
username=#{username,jdbcType=VARCHAR}
</select>
</mapper>

  mapper的namespace指定了该xml文件指向的Mapper接口,里面的sql语句接受传来的username数据进行数据访问。

  语句的id="getAgeByUsername"则是对应mapper接口中的方法resultType="int"指定本次数据访问的数据返回类型

  (4)在application.yml中添加配置mapper.xml文件的路径:

mybatis:
mapper-locations:
- classpath:mybatis/*.xml

  (5)在程序入口类中添加扫描:

@MapperScan("com.example.demo.mapper")

  添加该注解后,运行程序时会自动扫描指定路径中的mapper接口实现类。

  2、业务逻辑层

  结构如下:

  

  (1)UserService类:

package com.example.demo.service;

/**
* @author 我命倾尘
*/
public interface UserService {
int getAgeByUsername(String username);
}

  (2)UserServiceImpl类:

package com.example.demo.service.impl;

import com.example.demo.mapper.UserMapper;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; /**
* @author 我命倾尘
*/
@Service
public class UserServiceImpl implements UserService { @Autowired
UserMapper userMapper; @Override
public int getAgeByUsername(String username) {
return userMapper.getAgeByUsername(username);
}
}

  在service接口的实现类中,要加上@Service注解,把实现类交给spring处理。

  通过@Autowired注解获得自动注入的userMapper实现类,在重写的方法中进行调用,获得数据。

  3、页面展示层:

  结构如下:

  

  (1)UserController类:  

package com.example.demo.controller;

import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; /**
* @author 我命倾尘
*/
@RestController
public class UserController { @Autowired
UserService userService; @RequestMapping("/user/age")
public int getAgeOfUser(){
return userService.getAgeByUsername("springbootdemo");
}
}

五、运行程序

  按照配置的端口和映射URL,页面的路径应该是http://localhost:8080/cn/user/age

  访问该页面,结果如下:

  

  结果与我们预存在数据库中的数据一致。

  前言:SpringBoot框架:快速入门搭建运行一个应用程序(一)

SpringBoot框架:使用mybatis连接mysql数据库完成数据访问(二)的更多相关文章

  1. 如何用IDEA创建springboot(maven)并且整合mybatis连接mysql数据库和遇到的问题

    一.New->Project 二.点击next 三.在Group栏输入组织名,Artifact就是项目名.选择需要的java版本,点击next 四.添加需要的依赖 在这里我们也可以添加sql方面 ...

  2. 五、使用druid管理数据库,mybatis连接mysql数据库

    简介:    使用 mybatis 连接 mysql 数据库, 一套简单的增删改查流程, 前台用 bootstrap, bootstrap-table 框架, 最后用 druid 监控数据库连接情况 ...

  3. (45). Spring Boot MyBatis连接Mysql数据库【从零开始学Spring Boot】

    大家在开发的时候,会喜欢jdbcTemplate操作数据库,有喜欢JPA操作数据库的,有喜欢MyBatis操作数据库的,对于这些我个人觉得哪个使用顺手就使用哪个就好了,并没有一定要使用哪个,个人在实际 ...

  4. mybatis连接mysql数据库实现的jdbc功能

    最近公司项目要使用myBatis,自己以前没有接触过,就在网上找到了一些资料研究了些.初步做出了基于myBatis连接mysql数据库的jdbc实现的功能. employee.java package ...

  5. springboot通过ssh通道连接mysql数据库

    navicat可以通过ssh通道连接mysql数据库,那java中如何实现了,springboot又该怎样集成呢? 1.添加包 <dependency> <groupId>co ...

  6. mybatis连接mysql数据库插入中文乱码

    对于MySQL数据库的乱码问题,有两种情况: 1. mysql数据库编码问题(建库时设定). 2. 连接mysql数据库的url编码设置问题. 对于第一个问题,目前个人发现只能通过重新建库解决,建库的 ...

  7. Mybatis连接mysql数据库出现乱码

    对于mysql数据库的乱码问题,有两中情况: 1. mysql数据库编码问题(建库时设定). 2. 连接mysql数据库的url编码设置问题. 对于第一个问题,目前个人发现只能通过重新建库解决,建库的 ...

  8. python连接mysql数据库读取数据

    #-*- coding:utf-8 -*- #Author:'Lmc' #DATE: 2019/4/28/0028 上午 11:22:47 #FileName:test.PY import pymys ...

  9. 一步一步跟我学习hadoop(7)----hadoop连接mysql数据库运行数据读写数据库操作

        为了方便 MapReduce 直接訪问关系型数据库(Mysql,Oracle).Hadoop提供了DBInputFormat和DBOutputFormat两个类.通过DBInputFormat ...

随机推荐

  1. leetcode刷题记录——栈和队列

    题目 232.用栈实现队列 class MyQueue { private Stack<Integer> in = new Stack<>(); private Stack&l ...

  2. 无法将“vue”项识别为 cmdlet、函数、脚本文件或可运行程序的名称

    状况 如果在使用 vue 初始化项目的时候提示: vue : 无法将“vue”项识别为 cmdlet.函数.脚本文件或可运行程序的名称.请检查名称的拼写,如果包括路径,请确保路径正确,然后再试一次. ...

  3. springboot-遇到的错误

    1.Field userMapper in com.yanan.outjob.controller.SysUserController required a bean of type 'com.yan ...

  4. JavaScript学习系列博客_1_JavaScript简介

    这个系列博客主要用来记录本人学习JavaScript的笔记,从0开始,即使有些知识我也是知道的.但是会经常忘记,干脆就写成博客,没事的时候翻来看一看,留下一点学习的痕迹也好.可能写博客的水平暂时不太好 ...

  5. guzzlehttp中的坑之带子目录的域名

    1.问题: 线上开发环境配的是带子目录的域名,例如:https://aa.com/bb.使用nginx的location代理到项目的根目录.在代码中使用guzzlehttp访问这域名下的API时,一直 ...

  6. Go interface 操作示例

    原文链接:Go interface操作示例 特点: 1. interface 是一种类型 interface 是一种具有一组方法的类型,这些方法定义了 interface 的行为.go 允许不带任何方 ...

  7. dcoker 小应用(一)

    docker 创建Ubuntu系统 1.创建Dockerfile #ubuntu:14.04 image FROM ubuntu:14.04 MAINTAINER XXX, xxx@xxx.com R ...

  8. springboot2整合activiti7具体步骤

    写在前面 需要提前了解的内容有 springboot.springSecurity.activiti基本使用 关于activiti Activiti项目是一项新的基于Apache许可的开源BPM平台, ...

  9. pandas - 异常值处理

    异常值概念:是指那些远离正常值的观测,即“不合群”观测.异常值的出现一般是人为的记录错误或者是设备的故障等,异常值的出现会对模型的创建和预测产生 严重的后果.当然异常值也不一定是坏事,有些情况下,通过 ...

  10. 一个简单的Android音乐播放器

    Android小白的期末作业 Android期末项目,仅用作学习使用,在线音乐部分只获取了网易云热歌榜,API来自鼻子亲了脸 传送门: GitHub 参考: anddiencn 实现功能 展示出本地的 ...