首页技术栈归档照片墙音乐日记随想收藏夹友链留言关于

Spring Boot整合MyBatis

写作时间:2026-07-08

Spring Boot整合MyBatis

导入依赖

<!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter -->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.2.0</version>
</dependency>

application.properties

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/studentdb?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true
spring.datasource.username=root
spring.datasource.password=root

#整合mybatis
#实体类起别名
mybatis.type-aliases-package=com.yuan.pojo
#resources包下的mybatis/mapper/*.xml
mybatis.mapper-locations=classpath:mybatis/mapper/*.xml

或者application.yaml

mybatis:
  # 指定 mapper.xml 的位置
  mapper-locations: classpath:mybatis/mapper/*.xml
  #扫描实体类的位置,在此处指明扫描实体类的包,在 mapper.xml 中就可以不写实体类的全路径名
  type-aliases-package: net.biancheng.www.bean
  configuration:
    #默认开启驼峰命名法,可以不用设置该属性
    map-underscore-to-camel-case: true  

StudentMapper

package com.yuan.mapper;
import com.yuan.pojo.Student;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
@Mapper//这个注解表示了这是一个mybatis 的mapper类,
public interface StudentMapper {
    /**
     * 查询所以学生
     * @return
     */
    List<Student> student();

    /**
     * 根据编号查询学生
     * @param id
     * @return
     */
    Student selectById(int id);

    /**
     * 新增学生
     * @param student
     * @return
     */
    int insert(Student student);

    /**
     * 修改学生
     * @param student
     * @return
     */
    int update(Student student);

    /**
     * 删除学生
     * @param id
     * @return
     */
   int delete(int id);
}

StudentMapper.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.yuan.mapper.StudentMapper">

<!--查询所有学生-->
<select id="student" resultType="Student">
   select * from student;
</select>
<!--根据编号查询学生-->
<select id="selectById" resultType="com.yuan.pojo.Student">
    select * from student where stuId=#{stuId};
</select>
<!--新增学生信息-->
<insert id="insert" parameterType="Student">
INSERT INTO studentdb.student (stuName, stuemail, stuPhone)
VALUES(#{stuName},#{stuemail}, #{stuPhone});
</insert>
<!--修改学生信息-->
<update id="update" parameterType="Student">
update  studentdb.student set
        stuName=#{stuName}, stuemail=#{stuemail},
         stuPhone=#{stuPhone} WHERE stuId=#{stuId};

</update>
<!--删除学生信息-->
<delete id="delete" parameterType="int">
  delete from  student where stuId=#{stuId};
</delete>
</mapper>

Student

package com.yuan.pojo;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
@Data
@NoArgsConstructor
public class Student implements Serializable {

  private long stuId;
  private String stuName;
  private String stuemail;
  private String stuPhone;

  public Student(String stuName, String stuemail, String stuPhone) {
    this.stuName = stuName;
    this.stuemail = stuemail;
    this.stuPhone = stuPhone;
  }

  public Student(long stuId, String stuName, String stuemail, String stuPhone) {
    this.stuId = stuId;
    this.stuName = stuName;
    this.stuemail = stuemail;
    this.stuPhone = stuPhone;
  }
}

StudentController

package com.yuan.controller;
import com.yuan.mapper.StudentMapper;
import com.yuan.pojo.Student;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;

@RestController
public class StudentController {

    @Autowired
    private StudentMapper mapper;

    /**
     * 查询所有
     * @return
     */
    @GetMapping("/list")
    public List<Student> List(){
        List<Student> student = mapper.student();
        System.out.println("学生姓名\t邮箱");
        student.forEach(stu->{
            System.out.println(stu.getStuName()+"\t"+stu.getStuemail());
        });
        return student;
    }

    /**
     * 查根据编号查询
     * @return
     */
    @GetMapping("/StudentBuId")
    public Student StudentBuId() {
        return mapper.selectById(6);
    }

    /**
     * 新增学生
     * @return
     */
    @GetMapping("/Insert")
    public int Insert(){
        Student sudent=new Student("hhhh","11111@qq.com","12123421432");
        return mapper.insert(sudent);
    }

    /**
     * 修改学生
     * @return
     */
    @GetMapping("/Update")
    public int update(){
        Student student = new Student(6,"HHH","20202@QQ.COM","12123123");
        return mapper.update(student);
    }

    /**
     * 删除学生
     * @return
     */
    @GetMapping("/delete")
    public int delete(){
        return mapper.delete(22);
    }
}

DemoApplication

package com.yuan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
//@ManagedBean("com.yuan.mapper")//扫描mapper下所以的接口,就不要加@mapper
//@ComponentScan("xxxxx")如果包不在可以是用该注解
//@MapperScan("com.yuan.mapper") 扫描mapper下的所有文件,代替@Mapper注解
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

pom

       <!--整合mybatis-->  
       <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.0</version>
        </dependency>
            <!--JDBC访问数据库-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
          <!--thymeleaf模板-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
        </dependency>
           <!--web启动器-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
            <!--MySQL驱动-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
            <导入小辣椒>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
            <!--测试-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

Spring Boot使用分页插件

导入依赖

 <!-- Pagehelper -->
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
            <version>5.1.4</version>
        </dependency>
        <!-- Mybatis -->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.1.3</version>
        </dependency>

PageConfig

package com.yuan.config;
import com.github.pagehelper.PageInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.Properties;

@Configuration
public class PageConfig {
    @Bean
    public PageInterceptor pageHelper() {
        PageInterceptor pageHelper = new PageInterceptor();
        Properties p = new Properties();
        p.setProperty("offsetAsPageNum", "true");
        p.setProperty("rowBoundsWithCount", "true");
        p.setProperty("reasonable", "true");
        pageHelper.setProperties(p);
        return pageHelper;
    }
}

测试

    @GetMapping("/select")
    public PageInfo<News> selectNews(){
        // pageNum:当前页,pageSize:每页的显示的数据数目
        PageHelper.startPage(1,4);
        List<News> list = newsService.page();
        // 上面两行代码必须在一起,设置.startPage()立即查询数据
        PageInfo<News> pageInfo = new PageInfo<>(list);
        // 获得分页后的数据信息
        return pageInfo;
    }
avatar

yuanyourdomain

写代码,做研究,记录生活。

RECOMMENDED

MyBatis 动态 SQL

2026-07-08

Nginx 基础入门

2026-07-08

Maven 多模块与私服

2026-07-08