• mybatis复习


    目录

    JDBC、Hibernate和JPA、mybatis比较

    Mybatis使用基本知识:

    使用mybatis


    JDBC、Hibernate和JPA、mybatis比较

    • JDBC
    1. SQL夹杂在Java代码中耦合度高,导致硬编码内伤
    2. 维护不易且实际开发需求中SQL有变化,频繁修改的情况多见
    3. 代码冗长,开发效率低
    • MyBatis
    1. 轻量级,性能出色
    2. SQL和Java编码分开,功能边界清晰。Java代码专注业务、SQL语句专注数据。
    3. 开发效率稍逊于HIbernate,但是完全能够接受
    • Hibernate和JPA
    1. 操作简便,开发效率高
    2. 程序中的长难复杂SQL需要绕过框架。
    3. 内部自动生产的SQL,不容易做特殊优化
    4. 基于全映射的全自动框架,大量字段的POJO进行部分映射时比较困难。
    5. 反射操作太多,导致数据库性能下降

    Mybatis使用基本知识:

            1.相关概念:ORM (Object Relationship Mapping)对象关系映射。如图:

     

            2.Mybatis具有面向接口编程的功能, Mapper接口相当于Dao。创建流程如图:

     

            3.sqlSession:代表Java程序和数据库之间的会话,而HttpSession是Java程序和浏览器之间的会话

            4.sqlSessionFactory:是"生产"SqlSession的“工厂",这里使用了工厂模式工厂模式:如果创建某一个对象,使用的过程基本固定,那么我们就可以把创建这个对象的相关代码封装到一个“工厂类"中,以后都使用这个工厂类来“生产"我们需要的对象。

    使用mybatis

    映射文件

    
    
    
        
    
            insert into user values (null ,"123465","101")
    
        
    

    接口类

    package mapper;
    
    public interface UserMapper {
        int insert();
    }

    测试类

    package controller;
    
    import mapper.UserMapper;
    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 Controller {
        public static void main(String[] args) throws IOException {
            InputStream resourceAsStream = Resources.getResourceAsStream("mybatis-config.xml");
            SqlSessionFactoryBuilder sqlSessionFactoryBuilder = new SqlSessionFactoryBuilder();
            SqlSessionFactory sqlSessionFactory = sqlSessionFactoryBuilder.build(resourceAsStream);
            SqlSession sqlSession = sqlSessionFactory.openSession();
            UserMapper mapper = sqlSession.getMapper(UserMapper.class);
            int i = mapper.insert();
            sqlSession.commit();
            System.out.println(i);
        }
    }
    

  • 相关阅读:
    虚拟现实环境下的远程教育和智能评估系统(五)
    深入了解代理服务器:Socks5、IP代理与网络安全
    HCIP- ICT实战进阶ex1-MPLS
    ai智工作室22级第三次训练赛
    场景交互与场景漫游-路径漫游(7)
    Docker镜像 配置ssh
    LabVIEW
    PicGo+Gitee+Typora搭建云图床
    mysql数据库比实际时间少了8小时
    数据结构之索引查找(分块查找)
  • 原文地址:https://blog.csdn.net/qq_61672548/article/details/125900262