小记: Mybatis重拾之路(SpringBoot整合Mybatis)

文章目录

    • 环境搭建
      • pom文件添加相关依赖
        • 缺少相关jar包引发的战争(java.lang.IllegalStateException)
      • 在application.properties中添加相关数据库配置
    • 实体,接口以及接口对应的xml文件
      • 创建实体(Manager),数据库创建对应得表t_manager
      • 在mapper下面创建接口ManagerInter
      • 在mappers文件夹下面创建于接口同名的xml文件
    • 测试接口方法
      • resultMap与resultType区别

有些曾经,关于幸福或苦痛,只能深埋心底;有些希冀,关于现在或将来,只能逐步遗忘。一直在使用SpringBoot整合SpringDateJpa感觉很多mybatis的很多操作都忘记的差不多了…是时候复习一波了,下面呢将结合SpringBoot来学习Mybatis。
小记: Mybatis重拾之路(SpringBoot整合Mybatis)_第1张图片

环境搭建

Mybatis相关文档

IDEA创建SpringBoot项目

IDEA创建Mybatis的XML文件

pom文件添加相关依赖


        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starterartifactId>
        dependency>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-testartifactId>
            <scope>testscope>
        dependency>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-webartifactId>
        dependency>
        <dependency>
            <groupId>mysqlgroupId>
            <artifactId>mysql-connector-javaartifactId>
            <scope>runtimescope>
        dependency>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-tomcatartifactId>
            <scope>providedscope>
        dependency>
        <dependency>
            <groupId>org.springframework.bootgroupId>
            <artifactId>spring-boot-starter-testartifactId>
            <scope>testscope>
        dependency>

        <dependency>
            <groupId>org.mybatis.spring.bootgroupId>
            <artifactId>mybatis-spring-boot-starterartifactId>
            <version>2.0.0version>
        dependency>

缺少相关jar包引发的战争(java.lang.IllegalStateException)

这里不得不提一下,之前困惑自己很久的一个问题java.lang.IllegalStateException: Failed to load ApplicationContext,刚开始的时候也很懵,以为是自己的接口,实体,xml哪里写错了,再三检查,都感觉没有问题,最后居然是jar包问题,少了mybatis整合SpringBoot的依赖。
小记: Mybatis重拾之路(SpringBoot整合Mybatis)_第2张图片小记: Mybatis重拾之路(SpringBoot整合Mybatis)_第3张图片
项目整体结构如下
小记: Mybatis重拾之路(SpringBoot整合Mybatis)_第4张图片

在application.properties中添加相关数据库配置

# spring datasource
spring.datasource.url=jdbc:mysql://localhost:3306/demo01?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=root

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

小记: Mybatis重拾之路(SpringBoot整合Mybatis)_第5张图片

实体,接口以及接口对应的xml文件

创建实体(Manager),数据库创建对应得表t_manager

package cn.entity;

import java.io.Serializable;

public class Manager implements Serializable {
    private static final long serialVersionUID = -7392193417310423379L;
    private String managername;
    private String isRoot;//管理权限
    private String managerpassword;

    public static long getSerialVersionUID() {
        return serialVersionUID;
    }

    public String getManagername() {
        return managername;
    }

    public void setManagername(String managername) {
        this.managername = managername;
    }

    public String getIsRoot() {
        return isRoot;
    }

    public void setIsRoot(String isRoot) {
        this.isRoot = isRoot;
    }

    public String getmanagerpassword() {
        return managerpassword;
    }

    public void setmanagerpassword(String managerpassword) {
        this.managerpassword = managerpassword;
    }

    public Manager(String managername, String isRoot, String managerpassword) {
        this.managername = managername;
        this.isRoot = isRoot;
        this.managerpassword = managerpassword;
    }
}

建表语句如下

CREATE TABLE `t_manager1` (
  `managername` varchar(20) DEFAULT NULL,
  `is_manager_root` varchar(20) DEFAULT NULL,
  `managerpassword` varchar(20) DEFAULT NULL
) 

在mapper下面创建接口ManagerInter

package cn.mapper;

import cn.entity.Manager;

public interface ManagerInter {
    /**
     * 添加Manager
     * @param manager
     * @return  影响行数
     */
    Integer insertManager(Manager manager);
}

在mappers文件夹下面创建于接口同名的xml文件



<mapper namespace="cn.mapper.ManagerInter">
    <insert id="insertManager">
        insert into  t_manager(
            managername,is_manager_root,managerpassword
        )values (
          #{managername},#{isRoot},#{managerpassword}
        )
    insert>
mapper>

namespace填写的是接口所在的路径

启动类上添加注解@MapperScan(“cn.mapper”),用来指定扫描接口文件的位置
小记: Mybatis重拾之路(SpringBoot整合Mybatis)_第6张图片
如果每有指定扫描接口文件的位置,那么在@Autowired自动装配的时候就会报异常,找不到该类型的bean对象,异常信息如下:
小记: Mybatis重拾之路(SpringBoot整合Mybatis)_第7张图片

测试接口方法

package cn.mapper;

import cn.entity.Manager;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;

@RunWith(SpringRunner.class)
@SpringBootTest
public class ManagerTestCase {

	@Autowired
	public ManagerInter managerInter;
	
	@Test
	public void insert() {
		Manager manager=new Manager("张三","管理员","123");
		Integer rows=managerInter.insertManager(manager);
		System.err.println("rows = " + rows);
	}
}

测试结果
小记: Mybatis重拾之路(SpringBoot整合Mybatis)_第8张图片
查看数据库
小记: Mybatis重拾之路(SpringBoot整合Mybatis)_第9张图片
至此一个简单的demo就已经完成了,跟多详细的使用的方法可以参考Mybatis相关文档

resultMap与resultType区别

你可能感兴趣的:(小记)