SpringBoot整合MyBatis

前期工作

下载好数据库(mysql等)

实现步骤:

一.搭建SpringBoot项目

使用Spring initializr创建

二.引入mySQL依赖和MyBatis依赖

MyBatis提供了由SpringBoot集成的starter启动器,在pom,xml中引入Mybatis启动器,代码如下

复制代码
   <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.2</version>
   </dependency>

mysql驱动依赖,代码如下

复制代码
 <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <scope>runtime</scope>
 </dependency>

三.创建数据库(表)和实体类

创建数据表t_user(演示案例)

创建实体类Tuser(演示案例)

复制代码
package com.example.springbootmybatis.entity;
import lombok.Data;

@Data
public class Tuser {
    private int id;
    private String username;
    private String password;
}

四.创建DataSource数据源配置和MyBatis配置

DataSource数据源配置,代码如下

复制代码
#配置数据库的信息
spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql:///t_user   #///代表省略了端口号和ip
    username: root
    password: root

使用mybatis连接数据库有两种方式:一种注解的方式,另一种是使用xxx.xml配置文件的方式

①注解的方式,连接数据库,实现对象与数据库之间的映射,然后进行基本操作

首先创建一个mapper文件夹(也可称Dao文件夹),然后再此文件夹下创建TuserDao接口,在其中添加getAllTuser()抽象方法。代码如下:

然后在getAllTuser()抽象方法上面添加注解(@select),代码如下

复制代码
package com.example.springbootmybatis.mapper;

import com.example.springbootmybatis.entity.Tuser;
import org.apache.ibatis.annotations.*;

import java.util.List;
@Mapper
public interface TuserDao {
    @Select("select * from t_user")     //使用注解的方式实现与数据库的操作
    public List<Tuser> getAllTuser();   //抽象方法

    @Select("select * from t_user where id=#{id}")
    public Tuser getOneTuser(Integer id);

    @Insert("insert into t_user values (#{id},#{username},#{password})")
    public int addTuser(Tuser tuser);
    
    //当有多个参数需要注入时,需要使用@Param("id") Integer id绑定#{id}的值
    @Update("UPDATE t_user set username=#{username},password=#{password} where id=#{id}")  
    public int updateTuser(@Param("id") Integer id,@Param("username") String username,@Param("password") String password);

    @Delete("delete  from t_user where id=#{id}")
    public int deleteTuser(Integer id);

}

最后在测试类中测试(增删查改)

代码如下

复制代码
package com.example.springbootmybatis;

import com.example.springbootmybatis.entity.Tuser;
import com.example.springbootmybatis.mapper.TuserDao;
import org.apache.ibatis.annotations.Param;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.List;

@SpringBootTest
class SpringBootMyBatisApplicationTests {

    @Autowired
    private TuserDao tuserDao;
    @Test
    public void testGetALLSelect(){
        List<Tuser> list =tuserDao.getAllTuser();
//        System.out.println(list);
        list.forEach(System.out::println);
    }
    @Test
    public void testOneSelect(){
        Tuser tuser=tuserDao.getOneTuser(1);
        System.out.println(tuser);
    }
    @Test
    public void testAdd(){
        Tuser tuser=new Tuser();
        tuser.setUsername("zhangsan");
        tuser.setPassword("123456");
        int i=tuserDao.addTuser(tuser);
        System.out.println(i);
    }
    @Test
    public void testUpdate(){
        int i=tuserDao.updateTuser(2,"lisi","123");
        System.out.println(i);
    }
    @Test
    public void testDelete(){
        int i=tuserDao.deleteTuser(2);
        System.out.println(i);
    }


}

②基于XML配置文件的方式,连接数据库,实现对象与数据库之间的映射,然后进行基本操作

首先创建一个mapper文件夹(也可称Dao文件夹),然后再此文件夹下创建TuserXmlDao接口,在其中添加getAllTuser()抽象方法。代码如下:

复制代码
package com.example.springbootmybatis.mapper;
import com.example.springbootmybatis.entity.Tuser;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;

@Mapper
public interface TuserXmlDao {

    public List<Tuser> getAllTuser();
}

然后在resource目录下,创建一个统一管理映射文件的包mappers,并在该包下编写与TuserXmlDao接口对应的映射文件TuserXmlDao.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.springbootmybatis.mapper.TuserXmlDao">
    <select id="getAllTuser" resultType="Tuser">
        select * from t_user
    </select>

    <select id="getOneTuser" resultType="Tuser">
        select * from t_user where id=#{id}
    </select>

    <insert id="addTuser" parameterType="Tuser">
        insert  into t_user values (#{id},#{username},#{password})
    </insert>

    <update id="updateTuser" >
        update t_user set username=#{username},password=#{password} where id=#{id}
    </update>

    <delete id="deleteTuser" >
        delete from t_user where id=#{id}
    </delete>

</mapper>

其次在application.xml配置文件配置MyBatis的Mapper文件下的xxx.xml文件地址,以及返回类型的包路径

复制代码
#mabatis配置  为mapper接口定位.xml文件的位置
mybatis:   
    mapper-locations: classpath:mappers/*.xml   #mapper的映射文件路径
    type-aliases-package: com.example.springbootmybatis.entity   #为返回类型的包路径
  #   config-location:     #指定myBatis的核心配置文件

最后在测试类中测试(增删查改)

复制代码
package com.example.springbootmybatis;

import com.example.springbootmybatis.entity.Tuser;
import com.example.springbootmybatis.mapper.TuserDao;
import com.example.springbootmybatis.mapper.TuserXmlDao;
import org.apache.ibatis.annotations.Param;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.List;

@SpringBootTest
class SpringBootMyBatisApplicationTests {

    @Autowired
    private TuserXmlDao tuserXmlDao;
  
    //---------------------------------------------------------------------
    @Test
    public void testGetALLXMLSelect(){
        List<Tuser> list =tuserXmlDao.getAllTuser();
//        System.out.println(list);
        list.forEach(System.out::println);
    }

    @Test
    public void testOneXMLSelect(){
        Tuser tuser=tuserXmlDao.getOneTuser(1);
        System.out.println(tuser);
    }

    @Test
    public void testXMLAdd(){
        Tuser tuser=new Tuser();
        tuser.setUsername("zhangsan");
        tuser.setPassword("123456");
        int i=tuserXmlDao.addTuser(tuser);
        System.out.println(i);
    }

    @Test
    public void testXMLUpdate(){
        int i=tuserXmlDao.updateTuser(1,"lisi","123");
        System.out.println(i);
    }
    @Test
    public void testXMLDelete(){
        int i=tuserXmlDao.deleteTuser(3);
        System.out.println(i);
    }
}
相关推荐
一线大码7 分钟前
Smart-Doc 的简单使用
java·后端·restful
喵个咪21 分钟前
技术复盘:基于 go-wind-cms 的官网+商城双业务渐进拆分实战
后端·架构·go
ZengLiangYi32 分钟前
批量导入 1000 条对话的性能优化实战
javascript·后端·架构
juejin99842 分钟前
Claude Code 环境跑通:第一次有效对话
后端
wei_shuo44 分钟前
KES 数据库迁移实战:从 Oracle/MySQL 到 KingbaseES 的平滑过渡指南
后端
长栎1 小时前
Lombok @Builder 越用越爽,直到生产上构造函数的参数顺序全乱了
后端
长栎1 小时前
Spring 的 prototype scope 你用对了吗?原型模式的三个正确打开方式
后端
XovH1 小时前
MySQL 系列:第13篇 索引,不止是目录
后端
云技纵横1 小时前
Gap Lock 死锁实战:5 秒在本地复现 MySQL 间隙锁死锁
后端·mysql
XovH1 小时前
MySQL 系列:第12篇 用户、权限与安全基础
后端