springboot整合mybtis实现动态代理Dao的相关配置(一对一关联查询)

本文主要介绍如何在SpringBoot项目中整合Mybatis,实现动态代理Dao的相关配置,包括在pom.xml添加依赖,启动类配置扫描mapper接口,application.yml的Mybatis配置,mapper接口的@Mapper注解使用,以及OrdersMapper.xml文件的编写步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在这里插入图片描述

在pom.xml文件中添加依赖(这里就不详细叙述了,可以百度)。

在启动类中通过@MapperScan注解配置扫描mapper接口

package com.syc;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import tk.mybatis.spring.annotation.MapperScan;

@SpringBootApplication
//通过注解配置扫描mapper接口所在包
@MapperScan(value="com.syc.mapper")
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class);
    }
}


在application.yml文件中添加mybatis相关配置

mybatis:
  #配置实体类别名包扫描
  type-aliases-package: com.syc.domain
  #配置mybatis中mapper接口对应xml文件所在路径
  mapper-locations: classpath*:mapperConfig/*Mapper.xml
 


给mapper接口添加@Mapper注解(由于我之前引用了通用mapper,所以代码中@Mapper注解为全路径),正常情况下直接添加@Mapper注解就可以

package com.syc.mapper;
import com.syc.domain.O
### 集成 MyBatis 到 Spring Boot 项目 为了在 Spring Boot 项目中集成 MyBatis 并实现 CRUD 操作,可以遵循以下方法: #### 添加依赖项 首先,在 `pom.xml` 文件中添加必要的 Maven 依赖来引入 MyBatis 和数据库驱动。对于 MySQL 数据库来说,这通常意味着要加入 `mybatis-spring-boot-starter` 和 `mysql:mysql-connector-java`。 ```xml <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.2.0</version> </dependency> <!-- 如果使用的是MySQL --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> ``` 这些配置使得应用程序能够利用 MyBatis 进行持久化层开发[^1]。 #### 编写实体类和映射文件 定义 Java 类表示表结构,并编写对应的 XML 映射文件用于 SQL 查询语句的描述。例如,针对名为 "users" 的数据表创建 User.java 实体以及 userMapper.xml 映射文档。 User.java (Entity Class): ```java public class User { private Long id; private String name; private Integer age; // Getters and Setters... } ``` userMapper.xml: ```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.demo.mapper.UserMapper"> <!-- 插入新记录 --> <insert id="addUser" parameterType="User"> INSERT INTO users(name,age) VALUES(#{name}, #{age}) </insert> <!-- 更新现有记录 --> <update id="updateUserById" parameterType="User"> UPDATE users SET name=#{name}, age=#{age} WHERE id=#{id} </update> <!-- 删除指定ID的数据 --> <delete id="deleteUserById" parameterType="Long"> DELETE FROM users WHERE id=#{id} </delete> <!-- 获取单条记录 --> <select id="getUserById" resultType="User"> SELECT * FROM users WHERE id=#{id} </select> <!-- 获取全部列表 --> <select id="getAllUsers" resultType="User"> SELECT * FROM users ORDER BY id ASC </select> </mapper> ``` 此部分展示了如何构建与数据库交互所需的 POJOs 及其关联的 SQL 脚本[^4]。 #### 创建接口并标注 @Mapper 注解 接着,建立一个继承自 BaseMapper 接口的新接口作为 DAO 层的一部分;同时应用 `@Mapper` 或者将其放置于启动类上启用扫描功能以便自动注册 Bean 组件。 ```java import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; @Mapper public interface UserMapper extends BaseMapper<User> {} ``` 上述代码片段说明了怎样声明一个专门处理 Users 表操作的服务接口[^2]。 #### 控制器逻辑设计 最后一步是在控制器里调用服务完成业务需求。这里展示了一个 RESTful API 来执行四种基本 HTTP 方法对应的不同动作——GET/POST/PUT/DELETE。 UserController.java: ```java @RestController @RequestMapping("/api/users") public class UserController { @Autowired private UserService userService; @GetMapping("/{id}") public ResponseEntity<User> getUser(@PathVariable("id") long id){ Optional<User> optional = userService.findById(id); return optional.map(ResponseEntity::ok).orElseGet(() -> ResponseEntity.notFound().build()); } @PostMapping("") public ResponseEntity<Void> createUser(@RequestBody User user){ boolean success = userService.save(user); if(success){ URI location = ServletUriComponentsBuilder.fromCurrentRequest() .path("/{id}").buildAndExpand(user.getId()).toUri(); return ResponseEntity.created(location).build(); }else{ return ResponseEntity.noContent().build(); } } @PutMapping("/{id}") public ResponseEntity<String> updateUser(@PathVariable("id") long id,@RequestBody User newUser){ boolean updated = userService.update(newUser,id); if(updated){ return ResponseEntity.ok("Updated successfully"); }else{ return ResponseEntity.status(HttpStatus.NOT_FOUND).body("Not found with ID:" + id); } } @DeleteMapping("/{id}") public void deleteUser(@PathVariable("id") long id){ userService.deleteById(id); } @GetMapping("") public List<User> getAll(){ return userService.findAll(); } } ``` 这段示例揭示了基于 Spring MVC 构建 web 应用程序的方式,它允许客户端发送请求并对资源实施管理[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值