• 【SSM直击大厂】第十三章:MyBatis 详解


    ???作者主页:??的博客

    ??? 精选专栏:??SSM直击大厂

    ??? 精彩摘要:MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。

    ???觉得文章还不错的话欢迎大家点赞??收藏评论??支持博主??


    ??目录

    ??MyBatis 快速入门

    ??1??揭秘 MyBatis

    ????什么是MyBatis?

    ????为什么使用MyBatis?

    ??2??MyBatis的快速入门

    ????MyBatis开发步骤:

    ????MyBatis开发步骤小结:

    ??MyBatis 深入

    ??3??MyBatis映射文件各标签详解

    ??4??MyBatis的增删改查操作

    ????MyBatis插入操作:

    ????MyBatis修改操作:

    ????MyBatis删除操作:

    ????MyBatis增删改查小结:

    ??5??MyBatis核心配置文件?SqlMapConfig.xml?详解

    ????层级关系 注意上下顺序:

    ????常用配置:

    ??6??MyBatis的相应API

    ????SqlSession工厂构建器SqlSessionFactoryBuilder

    ????SqlSession工厂对象SqlSessionFactory

    ????SqlSession会话对象


    ??MyBatis 快速入门


    ??1揭秘 MyBatis

    什么是MyBatis?

    百度介绍

    MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。

    特点

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

    为什么使用MyBatis?

    问题引入:首先对原始JDBC操作分析

    原始jdbc开发存在的问题:

    1. 数据库连接创建、释放频繁造成系统资源浪费从而影响系统性能。
    2. Sql 语句在代码中硬编码,造成代码不易维护,实际应用 sql 变化的可能较大,sql 变动需要改变java代码。
    3. 查询操作时,需要手动将结果集中的数据手动封装到实体中。插入操作时,需要手动将实体的数据设置到sql语句的占位符位置。

    解决方案:持久层框架**:**

    1. 使用数据库连接池初始化连接资源。
    2. 将sql语句抽取到xml配置文件中。
    3. 使用反射、内省等底层技术,自动将实体与表进行属性与字段的自动映射。

    ??2MyBatis的快速入门

    MyBatis开发步骤:

    1. 在 pom.xml 文件中导入MyBatis的坐标和其他相关坐标

    
            
            
                junit
                junit
                4.11
                test
            
    
            
            
                mysql
                mysql-connector-java
                8.0.25
            
    
            
            
                org.mybatis
                mybatis
                3.4.6
            
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    2. 创建测试需要的user数据表

    3. 创建User实体类

    package com.mybatis.domain;
    
    public class User {
        private int id;
        private String username;
        private String password;
    
        //get and set
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    4. 创建 UserMapper.xml 映射文件

    
    
    
    
        
        
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    5. 创建MyBatis核心文件 SqlMapConfig.xml

    
    
    
    
        
        
    
        
        
            
                
                
                    
                    
                    
                    
                
            
        
    
        
        
            
        
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26

    6. 测试代码

    public class test {
        @Test
        //查询操作测试
        public void test1() throws IOException {
            //加载核心配置文件
            InputStream resource = Resources.getResourceAsStream("SqlMapConfig.xml");
            //获得Session工厂
            SqlSessionFactory sessionFactory = new SqlSessionFactoryBuilder().build(resource);
            //获取sqlSession
            SqlSession sqlSession = sessionFactory.openSession();
            //执行sql语句     nameSpace + id  = userMapper.findAll
            List userList = sqlSession.selectList("userMapper.findAll");
            //打印数据测试结果
            System.out.println(userList);
            //释放资源
            sqlSession.close();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    执行结果


    MyBatis开发步骤小结:

    1. 在 pom.xml 文件中导入MyBatis的坐标和其他相关坐标

    2. 创建测试需要的user数据表

    3. 创建User实体类

    4. 创建 UserMapper.xml 映射文件

    5. 创建MyBatis核心文件 SqlMapConfig.xml

    6. 编写测试代码


    ??MyBatis 深入


    ??3MyBatis映射文件各标签详解

    源码:

    
    
    
    
        
        
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    各标签详解

    映射文件DTD约束头

    根标签

    命名空间,+id 组成 查询标识

    查询标签,insert、update、delete

    resultType=“com.mybatis.domain.User”

    查询返回的结果集元素对应的数据类型

    select * from user

    对应SQL语句