Mybatis----基础

 概述:

 Mybatis----基础_第1张图片

Hibernate

标准的ORM框架。Hibernate 框架是提供了全面的数据库封装机制的 “全自动” ORM,即实现了 POJO 和数据库表之间的映射,以及 SQL 的自动生成和执行。

MyBatis

  1、持久层框架

  2、相对于Hibernate,MyBatis 只能算作是 “半自动” ORM。其着力点,是在 POJO 类与 SQL 语句之间的映射关系。也就是说,MyBatis 并不会为程序员自动生成 SQL 语句。具体的 SQL 需要程序员自己编写,然后通过 SQL 语句映射文件,将 SQL 所需的参数,以及返回的结果字段映射到指定 POJO。因此,MyBatis 成为了“全自动”ORM 的一种有益补充。

  3、MyBatis 可以prepareStatement (参考jdbc)中的输入参数自动进行输入映射,并将查询结果集自动映射成java对象。

MyBatis框架

  配置SqlMapConfig.xml(是Mybatis的全局配置文件。配置了数据源,事务等运行环境)

  配置Mapper.xml(映射文件)

如何操作数据库?

首先通过配置文件创建 SqlsessionFactory(会话工厂)---->创建SqlSession(会话工厂创建SqlSession(接口):作用:发出sql语句)----->Executor(SqlSession内部通过Executor(接口:实现有基本执行器,缓存执行器)来操作数据库)---->Mapped Statement(Executor需要MappedStatuement底层封装对象:封装sql语句,输入参数(java简单类型,hashmap,pojo自定义),输出类型(映射java对象))

SqlSession:线程不安全的(实现类中含有数据域属性,又是单例模式),应用场景:方法体内,定义局部变量(每一个线程在同一个方法体类都有不同的内存空间,不共用)

 

 

Mybatis框架简单使用

  mybatis.xml




    
    
        
            
            
            
            
                
                
                
                
            
        
    

    
    
        
    

  mapper/userMapper.xml




    

  测试

public class FisrtMybatis {
    public static void main(String[] args) throws IOException {
        // mybatis配置文件
        String resource = "mybatis.xml";
        // 得到配置文件流
        InputStream inputStream =  Resources.getResourceAsStream(resource);
        //创建会话工厂,传入mybatis配置文件的信息
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

        // 通过工厂得到SqlSession
        SqlSession sqlSession = sqlSessionFactory.openSession();

        // 通过SqlSession操作数据库
        // 第一个参数:映射文件中statement的id,等于=namespace+"."+statement的id
        // 第二个参数:指定和映射文件中所匹配的parameterType类型的参数
        // sqlSession.selectOne结果 是与映射文件中所匹配的resultType类型的对象
        // selectOne查询出一条记录

        //---------------------------------
        User user1 = new User();
        user1.setUsername("xx11");
        user1.setPassword("xx11");
        sqlSession.insert("test.insetone", user1);
        System.out.println(user1.getId());

        //增删改需要提交
        sqlSession.commit();
        //---------------------------------

        //---------------------------------
        //Dao开发中,我们可以Mapper代理方式,不用写实现类了(原本dao实现类主要就是写:sqlSession.insert("test.insetone", user1);)
//        UserDao mapper = sqlSession.getMapper(UserDao.class);
//        User user = mapper.selectById(3);
//        System.out.println(user);
        //---------------------------------

        // 释放资源
        sqlSession.close();
    }
}

 

你可能感兴趣的:(Mybatis----基础)