一、导入依赖包

  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. golang 并发demo 写入 redis

    原文链接:golang 并发demo 写入 redis 源代码: package main import ( "fmt" "runtime" "str ...

  2. SpringBoot项目 使用Jenkins进行自动化部署 (gitLab管理项目)_

    1.部署服务器创建好对应文件夹和启动脚本 创建文件夹 mkdir /wdcloud/app/rps/rps-module-category 创建启动脚本 cd /wdcloud/app/rps/rps ...

  3. 算法-图(4)用边表示活动的网络(AOE网络)Activity On Edge Network

    有向边表示活动,权值表示活动的持续时间,顶点表示事件. 只有一个开始点和完成点,称为源点.汇点,完成工程时间取决于从源点到汇点的最长路径长度,即在这条路径(关键路径)上所有活动的持续时间之和.关键路径 ...

  4. 团队作业1——团队展示&选题(银河超级无敌舰队)

    一.团队展示 1.队名: 银河超级无敌舰队 2.队员学号: 姓名 学号 郭奕材(组长) 3118004959 刘婉儿(PM) 3218004994 辜仰淦 3118004957 王煜墉 3118004 ...

  5. Spring Security 入门学习--数据库认证和授权

    首先是使用的SpringBoot框架 基础需要的pom以来如下,基础的springboot项目的创建就不一一赘述了. <!--spring web--> <dependency> ...

  6. 新手学习seo写原创文章的方法

    http://www.wocaoseo.com/thread-102-1-1.html 前两天都是写自己公司克拉玛依电信公司年终活动和总结的事,今天继续学习seo技术,其实说难也难说容易也容易,关键的 ...

  7. Qt 关于图片打开,另存为,保存到指定位置操作

    Qt 关于图片打开,另存为,保存到指定位置操作(转载) 在头文件mainwindow.h中先声明以下类: 1 #include <QImage> 2 #include <QPixma ...

  8. 一张图对比React、Angular、Vue.js

    文章原文地址:https://baijiahao.baidu.com/s?id=1609374985643812253&wfr=spider&for=pc

  9. PHP 日期与时间函数详解

    在开发过程中,我们经常碰到日期与时间戳相关的功能,今天趁此机会做个详细笔记. date_default_timezone_set('PRC'); /*把时间调到北京时间,php5默认为格林威治标准时间 ...

  10. Google Analytics谷歌分析事件之非互动事件

    非互动事件官方的解释如下 “非互动”一词是指可选的布尔值参数,此参数可以传递到用于发送事件命中的方法.通过此参数,您可以确定要如何为网站上包含事件衡量的网页定义跳出率.例如,假设您的首页上内嵌有一个视 ...