1

MyBatis概述:

mybatis是一个优秀的基于java的持久层框架,它内部封装了jdbc,使开发者只需要关注sql语句本身,而不需要花费精力去处理加载驱动、创建连接、创建statemenet等繁杂的过程。
04mybatis的分析.png
在当今的互联网应用中项目,mybatis框架通常会由spring框架进行资源整合,作为数据层技术实现数据交互操作。

准备工作

1.创建一个Spring Starter Project工程

创建工程.png

1.1添加依赖

创建工程添加依赖.png
创建工程添加依赖2.png

1.2 修改版本

修改版本.png

31.3 创建后的工程项目结构

工程结构.png

2.添加Maven依赖

`<!-- 添加mybatis starter依赖(SpringBoot 工程下提供了mybatis的自动配置) -->

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.1.3</version>
</dependency>`

3.mysql表

复制下面内容,创建数据库和数据表:

CREATE DATABASE db_user;
use db_user;
DROP TABLE IF EXISTS `emp`;
CREATE TABLE `emp`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  `salary` double DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
INSERT INTO `emp` VALUES (1, 'Tom', 20, 2000);
INSERT INTO `emp` VALUES (2, 'jack', 19, 3500);
INSERT INTO `emp` VALUES (3, 'lisi', 22, 7000);
INSERT INTO `emp` VALUES (4, 'ailce', 18, 1000);

4.创建配置文件

4.1 配置连接信息

在application.properties中添加配置信息:

# close banner
spring.main.banner-mode=off
# Spring DateSource
spring.datasource.url=jdbc:mysql:///db_user?serverTimezone=GMT%2B8&characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=root

# Spring mybatis
mybatis.mapper-locations=classpath:/mapper/*/*.xml

该文件用于存放映射语句
在src/main/resources目录下创建mapper/goods目录,然后在其目录中添加GoodsMapper.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>
    
</mapper>

5.创建所需的包和项目

项目结构.png

编写程序

1.User工具类

User工具类用于封装用户信息

package com.cy.pj.goods.utils;
/**
 * 用户工具类
 * @author BigData
 *
 */
public class User {
    private Integer id;
    private String name;
    private Integer age;
    private Double salary;
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    public Double getSalary() {
        return salary;
    }
    public void setSalary(Double salary) {
        this.salary = salary;
    }
    @Override
    public String toString() {
        return "User [id=" + id + ", name=" + name + ", age=" + age + ", salary=" + salary + "]";
    }
}

2.编写GoodsMapper.xml配置文件实现查询功能

将下面内容复制到<mapper></mapper>之间:

<mapper namespace="com.cy.pj.goods.dao.GoodsDao">
    <select id="findAll" resultType="com.cy.pj.goods.utils.User">
            select * from emp
    </select>
</mapper>

3.编写GoodsDao接口

package com.cy.pj.goods.dao;

import java.util.List;
import org.apache.ibatis.annotations.Mapper;
import com.cy.pj.goods.utils.User;
/**
 * @Mapper 用于描述(做标记)数据层访问接口,用于告诉mybatis框架
 *    使用此注解描述的接口要由底层为创建实现类,在实现类中基于mybatis
 *    API实现与数据库的交互,这个类的对象最后会交给Spring管理。
 */
@Mapper
public interface GoodsDao {
    /**
     * 查询所有用户信息
     * @return List集合
     */
    List<User> findAll();
}

4.编写测试类

package com.cy.pj.goods.dao;

import java.util.List;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import com.cy.pj.goods.utils.User;

/**
 * 用于测试程序
 * @author BigData
 *
 */
@SpringBootTest
public class GoodsDaoTests {
    
    @Autowired
    private GoodsDao goodsDao;
    /**
     * 查询用户信息
     */
    @Test
    public void testFindAll() {
        //调用dao层的查询方法
        List<User> findAll = goodsDao.findAll();
        //遍历集合
        for (User user : findAll) {
            System.out.println(user);
        }
    }
}

经过上面的步骤,现在就实现了SpringBoot和MyBatis的整合!!!
假如程序有报错,请参考下面文章!!!
SpringBoot项目实践过程中遇到过哪些问题?


PiHriH_lh
4 声望5 粉丝

任时光匆匆流去