一、导入依赖包

  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. 目录扫描、Nmap

    一.基本定义 1.目录扫描: 扫描站点的目录,寻找敏感文件(目录名.探针文件.后台.robots.txt.备份文件等). 2.目录:站点结构,权限控制不严格. 3.探针文件:服务器配置信息,例:php ...

  2. Azure认知服务之使用墨迹识别功能识别手写汉字

    前面我们使用Azure Face实现了人脸识别.使用Azure表格识别器提取了表格里的数据.这次我们试试使用Azure墨迹识别API来对笔迹进行识别. 墨迹识别 墨迹识别器认知服务提供基于云的 RES ...

  3. 方差分析、T检验、卡方分析如何区分?

    差异研究的目的在于比较两组数据或多组数据之间的差异,通常包括以下几类分析方法,分别是方差分析.T检验和卡方检验. 三个方法的区别 其实核心的区别在于:数据类型不一样.如果是定类和定类,此时应该使用卡方 ...

  4. Java多线程_Future设计模式

    Future模式的核心:去除了主函数的等待时间,并使得原本需要等待的时间段可以用于处理其他业务逻辑.    Future模式有点类似于商品订单.在网上购物时,提交订单后,在收货的这段时间里无需一直在家 ...

  5. Java 接口简述

    Java 接口 接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明.一个类通过继承接口的方式,从而来继承接口的抽象方法. 接口并 ...

  6. Linux离线安装mysql 5.6详细步骤

    一.安装MySQL 1.下载安装包 mysql-5.6.40-linux-glibc2.12-x86_64.tar.gz 2.卸载系统自带的Mariadb rpm -qa|grep mariadb / ...

  7. 使用 Visual Studio 2019 批量添加代码文件头

    应用场景介绍 在我们使用一些开源项目时,基本上都会在每个源代码文件的头部看到一段版权声明.一个项目或解决方案中源代码文件的个数少则几十,多则几千甚至更多,那么怎么才能给这么多文件方便地批量添加或者修改 ...

  8. Google谷歌在根据流量统计分析当年的2008年汶川大地震

    这是一张2008年的老图,Google当时的博文说道:"当我们依照惯例整理和分析谷歌搜索引擎的流量数据时,一条从未见过的曲线出现在我们面前.当意识到发生了什么事情时,我们的眼睛湿润了.&qu ...

  9. 热更新 && 增量更新

    Unity中SLua.Tolua.XLua和ILRuntime效率评测 http://blog.csdn.net/u011467512/article/details/72716376 如何阅读lua ...

  10. 面试【JAVA基础】Web与网络

    1.转发与重定向的区别 转发是服务器请求资源,服务器直接访问目标地址url,把响应内容返回给浏览器. 重定向根据服务器返回的状态码重新请求地址. 转发是服务器行为,重定向是客户端行为. 转发显示的ur ...