SpringBoot框架:使用mybatis连接mysql数据库完成数据访问(二)

摘要:
--mysql--˃mysqlmysql-connector-javaruntime在Maven管理中点击ReloadAllMavenProjects,重新加载项目:3、在导入数据库的依赖包之后,再运行程序,就会出现以下问题:'url'attributeisnotspecifiedandnoembeddeddatasourcecouldbeconfigured.问题处理:SpringBoot框架:'url'attributeisnotspecifiedandnoembeddeddatasourcecouldbeconfigured问题处理二、创建数据库表数据库名:spring_boot_demo数据库表:t_user字段:id,username,password,age,sex预先存入一条数据,方便后续操作。语句的id="getAgeByUsername"则是对应mapper接口中的方法,resultType="int"指定本次数据访问的数据返回类型。

一、导入依赖包

1、在创建项目时勾选:

SpringBoot框架:使用mybatis连接mysql数据库完成数据访问(二)第1张

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

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

SpringBoot框架:使用mybatis连接mysql数据库完成数据访问(二)第2张

<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,重新加载项目:

SpringBoot框架:使用mybatis连接mysql数据库完成数据访问(二)第3张

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框架:使用mybatis连接mysql数据库完成数据访问(二)第4张

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

三、配置数据库连接信息

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、数据访问层

结构如下:

SpringBoot框架:使用mybatis连接mysql数据库完成数据访问(二)第5张

(1)UserPO类:

packagecom.example.demo.po;

importjava.io.Serializable;

/*** @author我命倾尘
 */
public class UserPO implementsSerializable {
    /**用户ID */
    private intid;
    /**用户名 */
    privateString username;
    /**用户密码 */
    privateString password;
    /**年龄 */
    private intage;
    /**性别 */
    privateString sex;

    public intgetId() {
        returnid;
    }

    public void setId(intid) {
        this.id =id;
    }

    publicString getUsername() {
        returnusername;
    }

    public voidsetUsername(String username) {
        this.username =username;
    }

    publicString getPassword() {
        returnpassword;
    }

    public voidsetPassword(String password) {
        this.password =password;
    }

    public intgetAge() {
        returnage;
    }

    public void setAge(intage) {
        this.age =age;
    }

    publicString getSex() {
        returnsex;
    }

    public voidsetSex(String sex) {
        this.sex =sex;
    }
}

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

(2)UserMapper接口:

packagecom.example.demo.mapper;

importorg.springframework.stereotype.Repository;

/*** @author我命倾尘
 */@Repository
public interfaceUserMapper {
    intgetAgeByUsername(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、业务逻辑层

结构如下:

SpringBoot框架:使用mybatis连接mysql数据库完成数据访问(二)第6张

(1)UserService类:

packagecom.example.demo.service;

/*** @author我命倾尘
 */
public interfaceUserService {
    intgetAgeByUsername(String username);
}

(2)UserServiceImpl类:

packagecom.example.demo.service.impl;

importcom.example.demo.mapper.UserMapper;
importcom.example.demo.service.UserService;
importorg.springframework.beans.factory.annotation.Autowired;
importorg.springframework.stereotype.Service;

/*** @author我命倾尘
 */@Service
public class UserServiceImpl implementsUserService {

    @Autowired
    UserMapper userMapper;

    @Override
    public intgetAgeByUsername(String username) {
        returnuserMapper.getAgeByUsername(username);
    }
}

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

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

3、页面展示层:

结构如下:

SpringBoot框架:使用mybatis连接mysql数据库完成数据访问(二)第7张

(1)UserController类:  

packagecom.example.demo.controller;

importcom.example.demo.service.UserService;
importorg.springframework.beans.factory.annotation.Autowired;
importorg.springframework.web.bind.annotation.RequestMapping;
importorg.springframework.web.bind.annotation.RestController;

/*** @author我命倾尘
 */@RestController
public classUserController {

    @Autowired
    UserService userService;

    @RequestMapping("/user/age")
    public intgetAgeOfUser(){
        return userService.getAgeByUsername("springbootdemo");
    }
}

五、运行程序

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

访问该页面,结果如下:

SpringBoot框架:使用mybatis连接mysql数据库完成数据访问(二)第8张

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

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

后文:SpringBoot框架:通过AOP和自定义注解完成druid连接池的动态数据源切换(三)

免责声明:文章转载自《SpringBoot框架:使用mybatis连接mysql数据库完成数据访问(二)》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇sql server:float转换成nvarchar对CCLE数据库可以做的分析--转载下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

MySQL 解析 json 数组(mysql在5.7开始支持json解析)

  1.函数 JSON_EXTRACT 表数据格式:  查询结果:  sql 语句: -- ---------------------------- -- Table structure for jsonarray_test -- ---------------------------- DROP TABLE IF EXISTS `jsonarray_...

mybatis xml mapper 文件中 if-else 写法

mybaits 中没有else要用chose when otherwise 代替 范例一 <!--批量插入用户--> <insert parameterType="java.util.List"> insert into `business_user` (`id` , `user_type` , `user_logi...

mysql 字段存储多个值 ,判断一个值是否在其中

表C_file,其中有个字段是spile,他存的是字符形式,例如: id spile 1 2,10,11 2 2,3,20,22 3 1,6,8 4 5,6,1,9 select * from C_file where spile LIKE '%1%' 如果这样查询的话,会查询出ID为1、3、4,但正确的应该是3、4 那么这个SQL...

MySQL使用json_extract 函数过滤满足条件的json串

字段中存的字符串为json串,需要取出"is_split": "0"的行, { "channel": "weibo", "entrance": "main", "order_id": "16770027", "result": { "fund_result": { "service_fee_rate": "12", "split_t...

MySQL主从复制的实现过程

一、什么是主从复制   将主数据库中的DDL和DML操作通过二进制日志传输到从数据库上,然后将这些日志重新执行(重做);从而使得从数据库的数据与主数据库保持一致。 基本原理:   MySQL支持单向、异步复制,复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。   MySQL复制是基于主服务器在二进制日志中跟踪所有对数据库的更改。因此,...

MySQL 连接查询

一.什么是连接查询 1.连接查询是一种非常常见的数据库操作,在两张(或者多张)表中进行匹配. 2.以mysql为例,支持Cross join(交叉连接), inner join(内连接), outer join(外连接),等其他连接.  二、数据准备(创建emp员工表和dept部门表并插入数据) SET NAMES utf8mb4; SET FOREIGN...