深入浅出 万字详解 MyBatis看这一篇就够了!

本文深入探讨了MyBatis框架,从三层架构出发,揭示JDBC的不足,然后介绍了MyBatis的基本使用,包括DAO层配置、主配置文件、JDBC配置。接着,文章详细阐述了MyBatis的优化使用,如简化创建过程,并展示了如何通过Mapper接口提高代码可读性。最后,讨论了MyBatis的高级特性,如数据分页、条件SQL(IF、WHERE、FOREACH)、resultMap,帮助开发者更好地理解和应用MyBatis。

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

三层架构

  • 界面层 Controller -> SpringMVC

    User interface layer,表示层,视图层,接受用户数据显示请求结果。使用web页面和用户交互,如jsp、html、servlet。

  • 业务逻辑层 Service -> Spring

    Business logic layer,接收表示层传递的数据,检查数据计算业务逻辑,调用数据访问层获取数据。

  • 数据访问层 Dao1 -> MyBatis

    Data access layer, 持久层。与数据库打交道,实现对数据的增、删、改、查。将数据提供给业务层,将业务层处理的数据保存到数据库。

JDBC缺陷

  1. 代码较多,开发效率低,重复代码多

  2. 需要关注Connection Statement ResultSet 对象的创建和销毁

  3. 对查询结果需要手动进行封装

  4. 业务代码和数据库操作混合

简介

早期叫做ibatis,MyBatis - MyBatis SQL Mapper Framework for Java,是一个SQL映射框架,提供数据库的操作能力,是增强的JDBC。

  • SQL Mapper - sql映射

    可以把数据库表中的一行数据映射为一个 java 对象

  • Data Access Objects - DAOs

    数据访问,对数据库执行增删改查

使用

准备

依赖项

 <dependency>
     <groupId>org.mybatis</groupId>
     <artifactId>mybatis</artifactId>
     <version>3.5.7</version>
 </dependency>
 <dependency> <!-- MyBatis只是封装对数据库的操作,仍然需要数据库实现 -->
     <groupId>mysql</groupId>
     <artifactId>mysql-connector-java</artifactId>
     <version>8.0.26</version>
 </dependency>

主配置文件 - mybatis.xml

 <?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>
     
     <properties resource="jdbc.properties" />
 ​
     <settings>
         <!-- 自动输出Log -->
         <setting name="logImpl" value="STDOUT_LOGGING"/>
     </settings>
 ​
     <environments default="mybatis">
         <environment id="mybatis">
             <transactionManager type="JDBC"/>
             <dataSource type="POOLED">
                 <property name="driver" value="${jdbc.driver}"/>
                 <property name="url" value="${jdbc.url}"/>
                 <property name="username" value="${jdbc.username}"/>
                 <property name="password" value="${jdbc.password}"/>
             </dataSource>
         </environment>
     </environments>
 ​
 </configuration>

JDBC配置文件 - jdbc.properties

 jdbc.driver=com.mysql.cj.jdbc.Driver
 jdbc.url=jdbc:mysql://localhost:3306/test
 jdbc.username=root
 jdbc.password=root

DAO层

以下代码中部分内容为 MyBatis 具体使用内容,将在下文进行详解。

 /**
  * 持久层 与数据库交互
  * */
 public interface StudentDao {
 ​
     Student selectStudentById(@Param("id") int id);
 ​
     List<Student> selectStudentIf(Student student);
 ​
     List<Student> selectStudentWhere(Student student);
 ​
     List<Student> selectStudentForEach(List<Integer> list);
 ​
     List<Student> selectStudents();
 ​
     @MapKey("id")
     HashMap<Integer, Student> selectStudentsMap();
 ​
     int insertStudent(Student student);
 ​
  &nb
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值