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 小时前
知光项目知文发布模块
java·后端·spring·mybatis
Victor3568 小时前
MongoDB(9)什么是MongoDB的副本集(Replica Set)?
后端
Victor3568 小时前
MongoDB(8)什么是聚合(Aggregation)?
后端
yeyeye1119 小时前
Spring Cloud Data Flow 简介
后端·spring·spring cloud
Tony Bai10 小时前
告别 Flaky Tests:Go 官方拟引入 testing/nettest,重塑内存网络测试标准
开发语言·网络·后端·golang·php
+VX:Fegn089510 小时前
计算机毕业设计|基于springboot + vue鲜花商城系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
程序猿阿伟10 小时前
《GraphQL批处理与全局缓存共享的底层逻辑》
后端·缓存·graphql
小小张说故事10 小时前
SQLAlchemy 技术入门指南
后端·python
识君啊10 小时前
SpringBoot 事务管理解析 - @Transactional 的正确用法与常见坑
java·数据库·spring boot·后端
CaracalTiger11 小时前
如何解决Unexpected token ‘<’, “<!doctype “… is not valid JSON 报错问题
java·开发语言·jvm·spring boot·python·spring cloud·json