栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

MyBatis入门笔记(一)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MyBatis入门笔记(一)

前言:本文章为个人留存的MyBatis学习笔记,共分三部分,笔记来自于本人自学与学校实训课程整理,希望能与大家一起进步。

文章目录
  • Mybatis-3
  • 1.简介
    • 1.1 什么是Mybatis
    • 1.2持久层
    • 1.3 持久层
    • 1.4 为什么需要Mybatis?
  • 2.第一个Mybatis程序
    • 2.1 搭建环境
    • 2.2 创建一个模块
    • 2.3 编写代码
    • 2.4 测试
  • 3、CRUD
    • 3.1 namespace
    • 3.2 select
    • 3.3 insert
    • 3.4 update
    • 3.5 delete
    • 3.6 测试时Junit几种方法的注解(方便创建sqlsession)
  • 4.配置解析
    • 1、核心配置文件
    • 2、环境配置(environments)
    • 3、属性(properties)
    • 4、类型别名(typeAliases)[比较重要]
    • 5、设置(settings)
    • 6、其他配置

Mybatis-3

环境:

  • JDK 1.8
  • Mysql 5.7
  • maven 3.6.1
  • IDEA

回顾:

  • JDBC
  • Mysql
  • Javaee
  • Maven
  • Junit

框架:配置文件的最好学习方式:看官网文档;https://mybatis.org/mybatis-3/zh/getting-started.html



1.简介
1.1 什么是Mybatis
  • MyBatis 是一款优秀的持久层框架,
  • 它支持自定义 SQL、存储过程以及高级映射。
  • MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。
  • MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录

如何获得Mybatis

GitHub:https://github.com/tuguangquan/mybatis

中文文档:https://mybatis.org/mybatis-3/zh/index.html

1.2持久层

数据持久化

  • 持久化就是将程序的数据在持久状态和瞬时状态转化的过程
  • 内存:断电即失
  • 数据库(jdbc)io文件持久化

为什么需要持久化?

  • 有一些对象不能让他丢掉
  • 内存太贵了
1.3 持久层

Dao层、Service层、Controller层…

  • 完成持久化工作的代码块
  • 层界限十分明显
1.4 为什么需要Mybatis?
  • 方便
  • 传统的JDBC代码太复杂了。简化。框架。
  • 帮助程序员将数据存入数据库中
  • 不用Mybatis也可以,更容易上手。技术没有高低之分
  • 优点
    • 简单易学:本身就很小且简单。没有任何第三方依赖,最简单安装只要两个jar文件+配置几个sql映射文件易于学习,易于使用,通过文档和源代码,可以比较完全的掌握它的设计思路和实现。
    • 灵活:mybatis不会对应用程序或者数据库的现有设计强加任何影响。 sql写在xml里,便于统一管理和优化。通过sql语句可以满足操作数据库的所有需求。
    • 解除sql与程序代码的耦合:通过提供DAO层,将业务逻辑和数据访问逻辑分离,使系统的设计更清晰,更易维护,更易单元测试。sql和代码的分离,提高了可维护性。
    • 提供映射标签,支持对象与数据库的orm字段关系映射
    • 提供对象关系映射标签,支持对象关系组建维护
    • 提供xml标签,支持编写动态sql。

最重要的一点:用的人多!


2.第一个Mybatis程序

思路:搭建环境->导入Mybatis->编写代码->测试

2.1 搭建环境
  1. 搭建数据库

  2. 创建Mybatis项目

  3. 删了src文件夹使其成为父工程

  4. 导入依赖 pom.xml

    
            
    
                mysql
                mysql-connector-java
                8.0.25
            
            
    
                junit
                junit
                4.12
                test
            
            
    
                org.mybatis
                mybatis
                3.5.7
            
        
    
2.2 创建一个模块
  • 编写Mybatis的核心配置文件

    每个基于 MyBatis 的应用都是以一个 SqlSessionFactory 的实例为核心的。SqlSessionFactory 的实例可以通过 SqlSessionFactoryBuilder 获得。而 SqlSessionFactoryBuilder 则可以从 XML 配置文件或一个预先配置的 Configuration 实例来构建出 SqlSessionFactory 实例。

    从 XML 文件中构建 SqlSessionFactory 的实例非常简单,建议使用类路径下的资源文件进行配置。 但也可以使用任意的输入流(InputStream)实例,比如用文件路径字符串或 file:// URL 构造的输入流。MyBatis 包含一个名叫 Resources 的工具类,它包含一些实用方法,使得从类路径或其它位置加载资源文件更加容易。

    mybatis-config.xml 放到resource目录下

    
    
    
        
        
            
                
                
                    
                    
                    
                    
                
            
        
        
            
        
    
    

    build标签是解决maven过滤静态资源的问题!!!

  • 编写Mybatis的工具类

    创建SqlSessionFactory 在src/main/java/com.snake.utils.MybatisUtils

    package com.kuang.utils;
    
    import org.apache.ibatis.io.Resources;
    import org.apache.ibatis.session.SqlSession;
    import org.apache.ibatis.session.SqlSessionFactory;
    import org.apache.ibatis.session.SqlSessionFactoryBuilder;
    
    import java.io.IOException;
    import java.io.InputStream;
    
    public class MybatisUtils {
        private static SqlSessionFactory sqlSessionFactory;
        static {
    
            try {
                String resource = "mybatis-config.xml";
                InputStream inputStream = Resources.getResourceAsStream(resource);
                sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
            } catch (IOException e){
                e.printStackTrace();
            }
    
    
        }
        //既然有了 SqlSessionFactory,顾名思义,我们可以从中获得 SqlSession 的实例。SqlSession 提供了在数据库执行 SQL 命令所需的所有方法。
        //你可以通过 SqlSession 实例来直接执行已映射的 SQL 语句。例如:
        public static SqlSession getSqlSession(){
            return sqlSessionFactory.openSession();
        }
    }
    
    

可以连数据库了现在

2.3 编写代码
  • 实体类

    pojo里写个User类

    package com.snake.pojo;
    //实体类
    public class User {
        //定义和数据库里面的定义一样
        private int id;
        private String name;
        private String pwd;
    
    //    alt+ins
    
        public User() {
        }
    
        public User(int id, String name, String pwd) {
            this.id = id;
            this.name = name;
            this.pwd = pwd;
        }
    
        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 getPwd() {
            return pwd;
        }
    
        public void setPwd(String pwd) {
            this.pwd = pwd;
        }
    
        @Override
        public String toString() {
            return "User{" +
                    "id=" + id +
                    ", name='" + name + ''' +
                    ", pwd='" + pwd + ''' +
                    '}';
        }
    }
    
  • Dao接口

    package com.snake.dao;
    
    import com.snake.pojo.User;
    import java.util.List;
    
    //操作数据库对象的实体
    public interface UserDao {
        List getUserList();
    }
    
  • 接口实现类 Mapper