2026/3/1 20:57:12
网站建设
项目流程
网站文件夹名称,专业 网站设计公司,枣庄三合一网站开发,fullpage做的网站对于mybatis的基本使用
简介#xff1a;
对于使用mybatis编写代码#xff0c;在开发中#xff0c;我们认识mybatis从这几个角度来认识
核心问题
1.springboot项目引入mybatis的依赖
2.关于mybatis的配置需要配置什么东西
3.在实际开发接口的时候mybatis的最佳实践、
4.一个完…对于mybatis的基本使用简介对于使用mybatis编写代码在开发中我们认识mybatis从这几个角度来认识核心问题1.springboot项目引入mybatis的依赖2.关于mybatis的配置需要配置什么东西3.在实际开发接口的时候mybatis的最佳实践、4.一个完整的接口全链路的的demo1. Spring Boot 项目引入 MyBatis 的依赖在 pom.xmlMaven 项目中添加以下依赖1!-- Spring Boot Starter --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter/artifactId/dependency!-- Spring Boot Web可选若为 Web 项目 --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId⚠️ 注意MyBatis Spring Boot Starter 的版本需与 Spring Boot 版本兼容如 Spring Boot 3.x 需使用 MyBatis Starter 3.x。2. MyBatis 的配置项application.yml / application.properties在 application.yml 中配置数据源与 MyBatis 相关属性spring: datasource: url: jdbc:mysql://localhost:3306/mydb?useUnicodetruecharacterEncodingutf8serverTimezoneAsia/Shanghai username: root password: 123456 driver-class-name: com.mysql.cj.jdbc.Drivermybatis:指定 Mapper XML 文件位置可选若使用注解则不需要mapper-locations: classpath:mapper/*.xml如果你使用 注解方式 编写 SQL如 Select则可以省略 mapper-locations。3. 实际开发中的 MyBatis 最佳实践✅ 推荐使用 接口 XML 模式或纯注解看团队规范方式一注解方式适合简单 SQLMapperpublicinterfaceUserMapper{Select(SELECT * FROM user WHERE id #{id})UserfindById(Longid);Insert(INSERT INTO user(name, email) VALUES(#{name}, #{email}))Options(useGeneratedKeystrue,keyPropertyid)intinsert(Useruser);}方式二XML 方式推荐用于复杂 SQL、动态 SQL定义 Mapper 接口MapperpublicinterfaceUserMapper{UserfindById(Longid);ListUserfindByNameLike(Stringname);intinsert(Useruser);}编写对应 XML 文件src/main/resources/mapper/UserMapper.xml?xml version1.0 encodingUTF-8?!DOCTYPEmapperPUBLIC-//mybatis.org//DTD Mapper 3.0//ENhttp://mybatis.org/dtd/mybatis-3-mapper.dtdmappernamespacecom.example.demo.mapper.UserMapperresultMapidUserResultMaptypeUseridpropertyidcolumnid/resultpropertynamecolumnname/resultpropertyemailcolumnemail/✅ 最佳实践建议统一使用 Mapper 注解 或在启动类上加 MapperScan(“com.example.demo.mapper”)推荐后者减少每个 Mapper 加注解。java1234567开启驼峰映射map-underscore-to-camel-case: true避免字段名和属性名不一致问题。避免在 XML 中写业务逻辑SQL 应保持简洁复杂逻辑放在 Service 层。使用 #{} 而不是防止SQL注入{}防止 SQL 注入防止SQL注入{} 是直接拼接仅用于表名、排序字段等动态场景需谨慎。合理使用 resultMap 处理复杂映射如一对一、一对多。日志调试开发时开启 MyBatis SQL 日志如上配置 log-impl便于排查问题。分页处理可集成 PageHelper 或使用 MyBatis-Plus若允许引入增强框架。总结角度关键点依赖引入mybatis-spring-boot-starter 数据库驱动配置数据源 mybatis.mapper-locations 驼峰映射最佳实践接口 XML / 注解、MapperScan、#{} 防注入、SQL 与业务分离通过以上方式你可以在 Spring Boot 项目中高效、规范地使用 MyBatis 进行数据库操作。4.完整的demo下面提供一个完整的、可直接运行的 MyBatis 示例假设你已经搭建好了 Spring Boot 项目基于 Spring Boot 3.x引入了 mybatis-spring-boot-starter、mysql-connector-java、spring-boot-starter-web 等依赖我们将以一个最简单的用户表user为例实现“查询所有用户”和“根据 ID 查询用户”的功能。第一步创建数据库表MySQLsql1234567891011121314CREATE DATABASE IF NOT EXISTS demo_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;USE demo_db;CREATE TABLEuser(idBIGINT AUTO_INCREMENT PRIMARY KEY,nameVARCHAR(100) NOT NULL,emailVARCHAR(150) NOT NULL);第二步配置 application.ymlyaml12345678910111213spring:datasource:url: jdbc:mysql://localhost:3306/demo_db?useUnicodetruecharacterEncodingutf8serverTimezoneAsia/ShanghaiallowPublicKeyRetrievaltrueuseSSLfalseusername: rootpassword: 123456driver-class-name: com.mysql.cj.jdbc.Drivermybatis:mapper-locations: classpath:mapper/*.xmltype-aliases-package: com.example.demo.entity请根据你的数据库用户名/密码调整。第三步创建实体类Entityjava12345678910111213141516171819202122// src/main/java/com/example/demo/entity/User.javapackage com.example.demo.entity;public class User {private Long id;private String name;private String email;public Long getId() { return id; } public void setId(Long id) { this.id id; }第四步创建 Mapper 接口java123456789101112// src/main/java/com/example/demo/mapper/UserMapper.javapackage com.example.demo.mapper;import com.example.demo.entity.User;import org.apache.ibatis.annotations.Mapper;import java.util.List;Mapperpublic interface UserMapper {User findById(Long id);也可以不在每个接口加 Mapper而是在启动类上使用 MapperScan(“com.example.demo.mapper”)推荐后者。第五步编写 Mapper XML 文件创建目录src/main/resources/mapper/xml12345678910111213141516?xml version1.0 encodingUTF-8?select idfindById resultTypeUser parameterTypelong SELECT id, name, email FROM user WHERE id #{id} /select注意resultType“User” 能生效是因为我们在 application.yml 中配置了 type-aliases-package。第六步创建 Service可选但推荐java12345678910111213141516171819202122232425// src/main/java/com/example/demo/service/UserService.javapackage com.example.demo.service;import com.example.demo.entity.User;import com.example.demo.mapper.UserMapper;import org.springframework.stereotype.Service;import java.util.List;Servicepublic class UserService {第七步创建 Controllerjava2345678910111213141516171819202122232425262728291public List getAllUsers() {return userService.getAllUsers();}GetMapping(/{id}) public User getUserById(PathVariable Long id) { return userService.getUserById(id); }}第八步启动类java1234567891011121314// src/main/java/com/example/demo/DemoApplication.javapackage com.example.demo;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;// 如果使用 MapperScan可去掉 Mapper 接口上的 Mapper// MapperScan(“com.example.demo.mapper”)SpringBootApplicationpublic class DemoApplication {启动项目后测试启动 Spring Boot 应用访问以下接口GET http://localhost:8080/users → 返回所有用户GET http://localhost:8080/users/1 → 返回 ID 为 1 的用户你将在控制台看到 MyBatis 打印的 SQL 日志例如123456 Preparing: SELECT id, name, email FROM user Parameters:Columns: id, name, emailRow: 1, 张三, zhangsanexample.com Row: 2, 李四, lisiexample.com Total: 2小结这个 Demo 包含了实体类UserMapper 接口 XMLService 层REST Controller正确的 MyBatis 配置结构清晰、符合生产规范可作为后续开发的模板。提示如果不想写 XML也可以全部用注解如 Select但对于复杂查询如动态 WHERE、JOINXML 更灵活、可读性更好。