(5)SpringBoot:SpringBoot整合MyBatis

1、引入相关依赖

首先创建一个SpringBoot项目,并导入MySQL和MyBatis依赖,如图所示:
在这里插入图片描述
也可以在已有的SpringBoot项目里修改pom.xml文件,引入依赖:

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

      <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <scope>runtime</scope>
      </dependency>

2、编写MyBatis映射类

首先创建两个表,sql代码如下:
员工表(employee):

DROP TABLE IF EXISTS `employee`;
CREATE TABLE `employee` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`lastName` varchar(255) DEFAULT NULL,
`email` varchar(255) DEFAULT NULL,
`gender` int(2) DEFAULT NULL,
`d_id` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

部门表(department):

DROP TABLE IF EXISTS `department`;
CREATE TABLE `department` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `departmentName` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

接下来编写实体类:
Employee.java:

package com.example.demo.bean;

public class Employee {
	
	private Integer id;
	private String lastName;
	private String email;
	private Integer gender; //性别 1男  0女
	private Integer dId;
	
	
	public Employee() {
		super();
	}

	
	public Employee(Integer id, String lastName, String email, Integer gender, Integer dId) {
		super();
		this.id = id;
		this.lastName = lastName;
		this.email = email;
		this.gender = gender;
		this.dId = dId;
	}
	
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getLastName() {
		return lastName;
	}
	public void setLastName(String lastName) {
		this.lastName = lastName;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public Integer getGender() {
		return gender;
	}
	public void setGender(Integer gender) {
		this.gender = gender;
	}
	public Integer getdId() {
		return dId;
	}
	public void setdId(Integer dId) {
		this.dId = dId;
	}
	@Override
	public String toString() {
		return "Employee [id=" + id + ", lastName=" + lastName + ", email=" + email + ", gender=" + gender + ", dId="
				+ dId + "]";
	}
}

Department.java:

package com.example.demo.bean;

public class Department {
	
	private Integer id;
	private String departmentName;
	
	
	public Department() {
		super();
	}
	public Department(Integer id, String departmentName) {
		super();
		this.id = id;
		this.departmentName = departmentName;
	}
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getDepartmentName() {
		return departmentName;
	}
	public void setDepartmentName(String departmentName) {
		this.departmentName = departmentName;
	}
	@Override
	public String toString() {
		return "Department [id=" + id + ", departmentName=" + departmentName + "]";
	}
	
}

下面编写Mybatis映射类:
注:我们所有Mybatis映射接口均放在mapper包下

1)、基于注解映射

EmployeeMapper.java

package com.example.demo.mapper;

import com.example.demo.bean.Employee;
import org.apache.ibatis.annotations.*;
/**
 * @author Tracy
 * @date 2020/5/2 12:37
 */
@Mapper
public interface EmployeeMapper {

    @Select("SELECT * FROM employee WHERE id = #{id}")
    public Employee getEmpById(Integer id);

    @Update("UPDATE employee SET lastName=#{lastName},email=#{email},gender=#{gender},d_id=#{dId} WHERE id=#{id}")
    public void updateEmp(Employee employee);

    @Delete("DELETE FROM employee WHERE id=#{id}")
    public void deleteEmpById(Integer id);

    @Insert("INSERT INTO employee(lastName,email,gender,d_id) VALUES(#{lastName},#{email},#{gender},#{dId})")
    public void insertEmployee(Employee employee);

    @Select("SELECT * FROM employee WHERE lastName = #{lastName}")
    Employee getEmpByLastName(String lastName);
}

2)、基于配置文件映射

DepartmentMapper.java:

package com.example.demo.mapper;

import com.example.demo.bean.Department;
import org.apache.ibatis.annotations.Mapper;
/**
 * @author Tracy
 * @date 2020/5/2 12:37
 */
@Mapper
public interface DepartmentMapper {

    Department getDeptById(Integer id);

}

3、编写配置文件:

1)、编写MyBatis映射文件:

上面的DepartmentMapper.java我们并没有直接使用注解实现数据库的操作,下面我们来编写DepartmentMapper.xml实现department映射:

<?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.DepartmentMapper">
    <resultMap id="department" type="com.example.demo.bean.Department">
        <id property="id" column="id"/>
        <result property="departmentName" column="departmentName"/>
    </resultMap>

    <select id="getDeptById" resultMap="department">
        select * from department where id = #{id}
  </select>
</mapper>

2)、编写MyBatis全局配置文件

编写mapper-config.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    
    <!--  由于我们数据库配置可在全局文件配置,所以在MyBatis配置文件中仅开启MyBatis的驼峰命名规则相关配置  -->
    <settings>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>
</configuration>

3)、编写SpringBoot配置文件

编写application.yml:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/数据库名?useUnicode=true&serverTimezone=UTC
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: root
    password: 密码

mybatis:
  #mybatis映射文件位置,*.xml表示所有后缀为xml的文件
  mapper-locations: classpath:mybatis/mappers/*.xml
  #mybatis配置文件位置:
  config-location: classpath:mybatis/mybatis-config.xml

4、测试

首先来看一下项目目录:
在这里插入图片描述
下面我们编写测试类来进行测试:

在这里插入图片描述

package com.example.demo;

import com.example.demo.mapper.DepartmentMapper;
import com.example.demo.mapper.EmployeeMapper;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class DemoApplicationTests {

    @Autowired
    EmployeeMapper employeeMapper;

    @Autowired
    DepartmentMapper departmentMapper;

    @Test
    void contextLoads() {
        System.out.println(employeeMapper.getEmpById(1));
        System.out.println(departmentMapper.getDeptById(1));
    }

}

此时编译器会给我们警告,提示我们容器中并没有相关的bean,如下图所示:
在这里插入图片描述
但实际上我们的映射类已经添加入在了容器中,如果实在有强迫症可以在两个映射接口中添加@Component或者@Repository注解,如图所示:
在这里插入图片描述
这样编译器的警告就消失了,下面我们在数据库中添加一些数据:

employee表:
在这里插入图片描述
department表:
在这里插入图片描述
下面我们运行测试类:
在这里插入图片描述
查看结果:
在这里插入图片描述
可以发现程序从数据库中读取到了数据,这样我们就成功地将SpringBoot和Mybatis整合。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值