详解Springboot整合Mybatis并操作数据库

想整合MyBatis,不单单要加入MyBatis的依赖当然也要加入Mysql和JDBC的依赖这样才能操作数据库。这里使用的工具是IDEA,创建好Springboot项目后先加入Mybatis,Mysql ,JDBC的依赖:
根据自己的需要可以更该版本,如果版本不兼容项目可能运行不起来。

		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<scope>runtime</scope>
			<version>5.1.47</version>
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-jdbc</artifactId>
		</dependency>
		<dependency>
			<groupId>org.mybatis.spring.boot</groupId>
			<artifactId>mybatis-spring-boot-starter</artifactId>
			<version>2.0.1</version>
		</dependency>

然后可以配置yml文件

server:
  port: 8085
spring:
  datasource:
    username: root
    password: 123
    #根据自己的可以更改
    url: jdbc:mysql://127.0.0.1:3306/user?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF8&useSSL=false
    #由于我的mysql版本较低所以在url后面加了一些属性才能保证正常运行
    driver-class-name: com.mysql.jdbc.Driver
#\u5F00\u542F
mybatis:
	#配置MyBatis的配置文件和mapper映射文件路径地址。如果使用注解就不要mapper映射文件
  config-location: classpath:mybatis/mybatis-config.xml
  mapper-locations: mybatis/mapper/*.xml

下面是利用注解进行操作:


@Mapper
public interface DepartmentMapper {
    @Select("select * from department where id=#{id}")
    public Department getDepartment(Integer id);
    @Delete("delete from department where id=#{id}")
    public int deleteDepartment(Integer id);
    @Options(useGeneratedKeys = true, keyProperty = "id")
    @Insert("insert into department(name) values(#{name})")
    public int insertDepartment(Department department);
    @Update("update department set name=#{name} where id=#{id}")
    public int updateDepartment(Department department);
}
@RestController//如果不想在页面输出return的内容就需要换成@Controller注解。刚学的时候我踩过坑就是在跳转页面的时候显示的一直都是return的内容
public class DepartController {
    @Autowired
    DepartmentMapper mapper;
    @Autowired
    EmpMapper empMapper;
    @GetMapping("/dept/{id}")
    public Department getDepart(@PathVariable("id") Integer id){
        return mapper.getDepartment(id);
    }
    @GetMapping("/dept")
    public Department insert(Department department){
        mapper.insertDepartment(department);
        return department;
    }
    @GetMapping("/emp/{id}")
    public Employee getEmp(@PathVariable("id") Integer id){
        return empMapper.getEmp(id);
    }
    @GetMapping("/insert")
    public Employee insertEmp(Employee emp){
        empMapper.insertEmp(emp);
        return emp;
    }
}

在这里插入图片描述下面使用mapper的映射文件操作:
先定义一个接口类


public interface EmpMapper {

    public Employee getEmp(Integer id);

    public void insertEmp(Employee employee);
}

然后在创建一个mapper的映射文件:

<?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.mybatisdemo.mapper.EmpMapper">
    <!--id值就是接口类中对应的方法名,resultType是查询结果的返回类型-->
    <select id="getEmp" resultType="com.example.mybatisdemo.bean.Employee">
        select * from employee where id=#{id}
    </select>
    <insert id="insertEmp">
        insert into employee(name,addr) values(#{name},#{addr})
    </insert>
</mapper>

在这里插入图片描述这个是MyBatis的配置文件,MyBatis的一些配置可以在此配置:

<?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>
    <settings>
    
        <!--开启驼峰命名-->
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>
</configuration>

下面是我的文件结构
在这里插入图片描述

### 如何将 MyBatis 整合Spring Boot 项目中 #### 1. 环境准备 为了成功整合 MyBatis Spring Boot,需要确保开发环境中具备以下条件: - JDK 版本需为 8 或更高版本[^2]。 - Maven 构建工具的版本应不低于 3.5[^2]。 - 使用 IntelliJ IDEA 或其他支持 Java 开发的 IDE 工具[^2]。 - MySQL 数据库或其他兼容的关系型数据库作为数据存储服务。 #### 2. 创建 Spring Boot 项目 通过 Spring Initializr (https://start.spring.io/) 初始化一个新的 Spring Boot 项目。选择以下依赖项下载项目文件: - `Spring Web`:用于构建 RESTful API 应用程序。 - `Spring Data JPA`:提供与数据库交互的基础功能。 - `MyBatis Framework`:核心持久化框架。 - `MySQL Driver`:连接 MySQL 数据库所需的 JDBC 驱动器。 完成初始化后解压 ZIP 文件通过 IDE 打开该项目。 #### 3. 添加必要的依赖 在项目的 `pom.xml` 中添加如下依赖: ```xml <dependencies> <!-- Spring Boot Starter --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- MyBatis Integration --> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.3.0</version> </dependency> <!-- MySQL Connector --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <!-- Lombok for Simplified Code --> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> </dependencies> ``` 此部分配置引入了 MyBatis 及其启动器、MySQL 驱动以及可选的 Lombok 来减少样板代码[^1]。 #### 4. 配置数据库连接 编辑 `application.properties` 文件以设置数据库连接参数其他相关属性: ```properties # DataSource Configuration spring.datasource.url=jdbc:mysql://localhost:3306/your_database_name?useSSL=false&serverTimezone=UTC spring.datasource.username=root spring.datasource.password=password spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver # MyBatis Mapper XML Location mybatis.mapper-locations=classpath:mapper/*.xml mybatis.type-aliases-package=com.example.demo.model ``` 这些配置指定了数据库 URL、用户名、密码以及其他必要选项,告知 MyBatis 去哪里查找映射文件实体类定义[^1]。 #### 5. 编写实体类 创建一个简单的实体类表示表结构。例如,在包路径下新建名为 `User.java` 的文件: ```java package com.example.demo.model; import lombok.Data; @Data public class User { private Long id; private String name; private Integer age; } ``` 这里使用了 Lombok 注解来自动生成 getter/setter 方法[^1]。 #### 6. 定义 Mapper 接口 Mapper 是 MyBatis 中的核心组件之一,负责执行 SQL 查询操作。下面是一个示例接口 `UserMapper.java`: ```java package com.example.demo.mapper; import com.example.demo.model.User; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select; import java.util.List; @Mapper public interface UserMapper { @Select("SELECT * FROM users WHERE age >= #{age}") List<User> findUsersByAge(Integer age); } ``` 该接口中的方法对应于特定的 SQL 查询语句,利用注解形式绑定查询逻辑[^1]。 #### 7. 测试 Controller 层 最后一步是在控制器层调用业务逻辑验证整个流程是否正常工作。编写测试用例或者简单 RestController 实现对外暴露的服务端点。 ```java package com.example.demo.controller; import com.example.demo.mapper.UserMapper; import com.example.demo.model.User; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import java.util.List; @RestController public class UserController { @Autowired private UserMapper userMapper; @GetMapping("/users") public List<User> getUsers(@RequestParam(value = "min_age", defaultValue = "18") int minAge) { return userMapper.findUsersByAge(minAge); } } ``` 至此完成了基本的功能实现。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值