mybatis学习文档

本文详细介绍了MyBatis框架,包括其简介、持久化概念、为何需要MyBatis,以及如何搭建第一个MyBatis程序。内容涵盖CRUD操作、配置解析、解决属性名和字段名不一致的问题、日志配置、分页、注解开发、Lombok使用、多对一和一对多处理、动态SQL和缓存机制。适合Java开发者深入理解MyBatis的使用。
摘要由CSDN通过智能技术生成

mybatis-9.28

环境:

  • JDK1.8

  • mysql 8.0.16

  • maven3.6.1

  • IDEA

回顾:

  • JDBC
  • mysql
  • jave基础
  • Maven
  • junit

1.简介

1.1 什么是mybatis

​ mybatis是支持普通SQL查询、存储过程和高级映射的优秀持久层框架。

  • MyBatis 是一款优秀的持久层框架

  • 支持自定义 SQL、存储过程以及高级映射

  • MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作

  • MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录

如何获取mybits:

  • maven仓库

    <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
    <dependency>
        <groupId>org.mybatis</groupId>
        <artifactId>mybatis</artifactId>
        <version>3.4.6</version>
    </dependency>
    
  • Github:

  • 中文学习文档:https://mybatis.net.cn/

1.2 持久化

  • 数据持久化

    • 数据持久化指程序的数据在持久状态与瞬时状态转化的过程

    • 内存:断电即失

    • 数据库(jdbc):io文件持久化

  • 为什么需要持久化

    • 内存太贵了

    • 有些对象不能缺失(如银行的账户和密码)

1.3 持久层

​ dao层、service层、controller层…

  • 完成持久化工作的代码块

  • 界限十分明显

1.4 为什么需要mybatis

  • 简单易学:本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。
  • 灵活:mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管理和优化。通过sql基本上可以实现我们不使用数据访问框架可以实现的所有功能,或许更多。
  • 解除sql与程序代码的耦合:通过提供DAO层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。
  • 提供映射标签,支持对象与数据库的字段关系映射
  • 提供对象关系映射标签,支持对象关系组建维护
  • 提供xml标签,支持编写动态sql。

2.第一个mybatis程序

步骤

在这里插入图片描述

2.1 搭建环境

2.1.1 搭建数据库

create database 'mybatis';
use mybatis;
CREATE TABLE user(
id int not null PRIMARY KEY,
name VARCHAR(20) DEFAULT NULL,
psw VARCHAR(20) DEFAULT NULL
)ENGINE=INNODB DEFAULT CHARSET=utf8;

INSERT INTO USER VALUES(1,'李白','123'),(2,'杜甫','234'),(3,'苏轼','333');

2.1.2 新建项目

  1. 新建一个普通的maven项目

  2. 删除一个src目录(父工程)

  3. 导入maven依赖

     <dependencies>
        <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
          <version>4.11</version>
          <scope>test</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
          <groupId>mysql</groupId>
          <artifactId>mysql-connector-java</artifactId>
          <version>8.0.16</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
        <dependency>
          <groupId>org.mybatis</groupId>
          <artifactId>mybatis</artifactId>
          <version>3.4.6</version>
        </dependency>
      </dependencies>
    

2.2 创建一个模板

  • 编写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>
      <environments default="development">
        <environment id="development">
          <transactionManager type="JDBC"/>
          <dataSource type="POOLED">
            <property name="driver" value="${driver}"/>
            <property name="url" value="${url}"/>
            <property name="username" value="${username}"/>
            <property name="password" value="${password}"/>
          </dataSource>
        </environment>
      </environments>
      <!--每一个mapper.xml都需要在mybatis核心配置文件中注册-->
      <mappers>
        <mapper resource="com/kuang/dao/UserMapper.xml"/>
      </mappers>
    </configuration>
    
  • 编写mybatis工具

    public class MybatisUtil {
         
        private static SqlSessionFactory sqlSessionFactory;
        static {
         
            try {
         
                //使用mybatis的第一步,获取sqlSessionFactory对象
                String resource = "src\\main\\resources\\mybatis-config.xml";
                InputStream inputStream =  Resources.getResourceAsStream(resource);
                sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            } catch (IOException e) {
         
                e.printStackTrace();
            }
    
        }
    //    既然有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例。
    //    SqlSession 提供了在数据库执行 SQL 命令所需的所有方法。
        public SqlSession getsqlSession(){
         
            return sqlSessionFactory.openSession();
        }
    }
    
    

2.3 编写代码

  • 实体类

    public class User {
         
        private int id;
        private String name;
        private String psw;
    
        public User() {
         
        }
    
        public User(int id, String name, String psw) {
         
            this.id = id;
            this.name = name;
            this.psw = psw;
        }
    
        public int getId() {
         
            return id;
        }
    
        public void setId(int id) {
         
            this.id = id;
        }
    
        public String getName() {
         
            return name;
        }
    
        public void setName(String name) {
         
            this.name = name;
        }
    
        public String getPsw() {
         
            return psw;
        }
    
        public void setPsw(String psw) {
         
            this.psw = psw;
        }
        @Override
        public String toString() {
         
            return "User{" +
                    "id=" + id +
                    ", name='" + name + '\'' +
                    ", psw='" + psw + '\'' +
                    '}';
        }
    }
    
  • Dao接口

    public interface UserDao {
         
        List<User> getUserList();
    }
    
  • 接口实现类由原来的UserDaoImpl转变为一个Mapper配置文件

    <?xml version="1.0" encoding="UTF-8" ?>
    <!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

借一缕月光

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值